diff --git a/.travis.yml b/.travis.yml index 604855dc0..42f4718b7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,8 +28,6 @@ install: script: - source bootstrap.sh - - wget https://gist.githubusercontent.com/springmeyer/0833fa43794838889139/raw/build_pycairo.sh && chmod +x build_pycairo.sh && ./build_pycairo.sh - - export PYTHONPATH=$(pwd)/mason_packages/.link/lib/python2.7/site-packages:${PYTHONPATH} - if [[ ${COVERAGE} == true ]]; then ./configure CUSTOM_LDFLAGS='--coverage' CUSTOM_CXXFLAGS='--coverage' CUSTOM_CFLAGS='--coverage' DEBUG=True; else ./configure; fi; - make - git clone --depth=1 https://github.com/mapbox/mapnik-test-data tests/data/mapnik-test-data diff --git a/Makefile b/Makefile index 04de7aebf..326616d7a 100755 --- a/Makefile +++ b/Makefile @@ -46,7 +46,6 @@ clean: @find ./ -name "*.so" -exec rm {} \; @find ./ -name "*.o" -exec rm {} \; @find ./ -name "*.a" -exec rm {} \; - @if test -e "bindings/python/mapnik/paths.py"; then rm "bindings/python/mapnik/paths.py"; fi distclean: if test -e "config.py"; then mv "config.py" "config.py.backup"; fi @@ -65,12 +64,6 @@ test: test-local: make test -test-visual: - bash -c "source ./localize.sh && python tests/visual_tests/test.py -q" - -test-python: - bash -c "source ./localize.sh && python tests/run_tests.py -q" - test-cpp: ./tests/cpp_tests/run diff --git a/SConstruct b/SConstruct index 4c2159552..8bb412dbb 100644 --- a/SConstruct +++ b/SConstruct @@ -78,7 +78,6 @@ pretty_dep_names = { 'gdal':'GDAL C++ library | configured using gdal-config program | try setting GDAL_CONFIG SCons option | more info: https://github.com/mapnik/mapnik/wiki/GDAL', 'ogr':'OGR-enabled GDAL C++ Library | configured using gdal-config program | try setting GDAL_CONFIG SCons option | more info: https://github.com/mapnik/mapnik/wiki/OGR', 'cairo':'Cairo C library | configured using pkg-config | try setting PKG_CONFIG_PATH SCons option', - 'pycairo':'Python bindings to Cairo library | configured using pkg-config | try setting PKG_CONFIG_PATH SCons option', 'proj':'Proj.4 C Projections library | configure with PROJ_LIBS & PROJ_INCLUDES | more info: http://trac.osgeo.org/proj/', 'pg':'Postgres C Library required for PostGIS plugin | configure with pg_config program or configure with PG_LIBS & PG_INCLUDES | more info: https://github.com/mapnik/mapnik/wiki/PostGIS', 'sqlite3':'SQLite3 C Library | configure with SQLITE_LIBS & SQLITE_INCLUDES | more info: https://github.com/mapnik/mapnik/wiki/SQLite', @@ -320,7 +319,6 @@ opts.AddVariables( # Install Variables ('PREFIX', 'The install path "prefix"', '/usr/local'), ('LIBDIR_SCHEMA', 'The library sub-directory appended to the "prefix", sometimes lib64 on 64bit linux systems', LIBDIR_SCHEMA_DEFAULT), - ('PYTHON_PREFIX','Custom install path "prefix" for python bindings (default of no prefix)',''), ('DESTDIR', 'The root directory to install into. Useful mainly for binary package building', '/'), ('PATH', 'A custom path (or multiple paths divided by ":") to append to the $PATH env to prioritize usage of command line programs (if multiple are present on the system)', ''), ('PATH_REMOVE', 'A path prefix to exclude from all known command and compile paths (create multiple excludes separated by :)', ''), @@ -335,7 +333,6 @@ opts.AddVariables( ('BOOST_TOOLKIT','Specify boost toolkit, e.g., gcc41.','',False), ('BOOST_ABI', 'Specify boost ABI, e.g., d.','',False), ('BOOST_VERSION','Specify boost version, e.g., 1_35.','',False), - ('BOOST_PYTHON_LIB','Specify library name to specific Boost Python lib (e.g. "boost_python-py26")','boost_python'), # Variables for required dependencies ('FREETYPE_CONFIG', 'The path to the freetype-config executable.', 'freetype-config'), @@ -403,12 +400,8 @@ opts.AddVariables( ('SYSTEM_FONTS','Provide location for python bindings to register fonts (if provided then the bundled DejaVu fonts are not installed)',''), ('LIB_DIR_NAME','Name to use for the subfolder beside libmapnik where fonts and plugins are installed','mapnik'), PathVariable('PYTHON','Full path to Python executable used to build bindings', sys.executable), - BoolVariable('FRAMEWORK_PYTHON', 'Link against Framework Python on Mac OS X', 'True'), - BoolVariable('PYTHON_DYNAMIC_LOOKUP', 'On OSX, do not directly link python lib, but rather dynamically lookup symbols', 'True'), - ('FRAMEWORK_SEARCH_PATH','Custom framework search path on Mac OS X', ''), BoolVariable('FULL_LIB_PATH', 'Embed the full and absolute path to libmapnik when linking ("install_name" on OS X/rpath on Linux)', 'True'), BoolVariable('ENABLE_SONAME', 'Embed a soname in libmapnik on Linux', 'True'), - ListVariable('BINDINGS','Language bindings to build','all',['python']), EnumVariable('THREADING','Set threading support','multi', ['multi','single']), EnumVariable('XMLPARSER','Set xml parser','libxml2', ['libxml2','ptree']), BoolVariable('DEMO', 'Compile demo c++ application', 'True'), @@ -452,17 +445,12 @@ pickle_store = [# Scons internal variables 'BOOST_APPEND', 'LIBDIR_SCHEMA', 'REQUESTED_PLUGINS', - 'PYTHON_VERSION', - 'PYTHON_INCLUDES', - 'PYTHON_INSTALL_LOCATION', - 'PYTHON_SYS_PREFIX', 'COLOR_PRINT', 'HAS_CAIRO', 'MAPNIK_HAS_DLFCN', 'HAS_PYCAIRO', 'PYCAIRO_PATHS', 'HAS_LIBXML2', - 'PYTHON_IS_64BIT', 'SAMPLE_INPUT_PLUGINS', 'PKG_CONFIG_PATH', 'PATH', @@ -1145,7 +1133,6 @@ if not preconfigured: env['PLUGINS'] = PLUGINS env['EXTRA_FREETYPE_LIBS'] = [] env['SQLITE_LINKFLAGS'] = [] - env['PYTHON_INCLUDES'] = [] # previously a leading / was expected for LIB_DIR_NAME # now strip it to ensure expected behavior if env['LIB_DIR_NAME'].startswith(os.path.sep): @@ -1646,94 +1633,6 @@ if not preconfigured: env['SKIPPED_DEPS'].append('cairo') env['HAS_CAIRO'] = False - if 'python' in env['BINDINGS']: - if not os.access(env['PYTHON'], os.X_OK): - color_print(1,"Cannot run python interpreter at '%s', make sure that you have the permissions to execute it." % env['PYTHON']) - Exit(1) - - py3 = 'True' in os.popen('''%s -c "import sys as s;s.stdout.write(str(s.version_info[0] == 3))"''' % env['PYTHON']).read().strip() - - if py3: - sys_prefix = '''%s -c "import sys; print(sys.prefix)"''' % env['PYTHON'] - else: - sys_prefix = '''%s -c "import sys; print sys.prefix"''' % env['PYTHON'] - env['PYTHON_SYS_PREFIX'] = call(sys_prefix) - - if HAS_DISTUTILS: - if py3: - sys_version = '''%s -c "from distutils.sysconfig import get_python_version; print(get_python_version())"''' % env['PYTHON'] - else: - sys_version = '''%s -c "from distutils.sysconfig import get_python_version; print get_python_version()"''' % env['PYTHON'] - env['PYTHON_VERSION'] = call(sys_version) - - if py3: - py_includes = '''%s -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())"''' % env['PYTHON'] - else: - py_includes = '''%s -c "from distutils.sysconfig import get_python_inc; print get_python_inc()"''' % env['PYTHON'] - env['PYTHON_INCLUDES'].append(call(py_includes)) - - # also append platform specific includes - if py3: - py_plat_includes = '''%s -c "from distutils.sysconfig import get_python_inc; print(get_python_inc(plat_specific=True))"''' % env['PYTHON'] - else: - py_plat_includes = '''%s -c "from distutils.sysconfig import get_python_inc; print get_python_inc(plat_specific=True)"''' % env['PYTHON'] - env['PYTHON_INCLUDES'].append(call(py_plat_includes)) - - # Note: we use the plat_specific argument here to make sure to respect the arch-specific site-packages location - if py3: - site_packages = '''%s -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(plat_specific=True))"''' % env['PYTHON'] - else: - site_packages = '''%s -c "from distutils.sysconfig import get_python_lib; print get_python_lib(plat_specific=True)"''' % env['PYTHON'] - env['PYTHON_SITE_PACKAGES'] = call(site_packages) - else: - env['PYTHON_SYS_PREFIX'] = os.popen('''%s -c "import sys; print sys.prefix"''' % env['PYTHON']).read().strip() - env['PYTHON_VERSION'] = os.popen('''%s -c "import sys; print sys.version"''' % env['PYTHON']).read()[0:3] - env['PYTHON_INCLUDES'] = [env['PYTHON_SYS_PREFIX'] + '/include/python' + env['PYTHON_VERSION']] - env['PYTHON_SITE_PACKAGES'] = env['DESTDIR'] + os.path.sep + env['PYTHON_SYS_PREFIX'] + os.path.sep + env['LIBDIR_SCHEMA'] + '/python' + env['PYTHON_VERSION'] + '/site-packages/' - - # if user-requested custom prefix fall back to manual concatenation for building subdirectories - if env['PYTHON_PREFIX']: - py_relative_install = env['LIBDIR_SCHEMA'] + '/python' + env['PYTHON_VERSION'] + '/site-packages/' - env['PYTHON_INSTALL_LOCATION'] = env['DESTDIR'] + os.path.sep + env['PYTHON_PREFIX'] + os.path.sep + py_relative_install - else: - env['PYTHON_INSTALL_LOCATION'] = env['DESTDIR'] + os.path.sep + env['PYTHON_SITE_PACKAGES'] - - if py3: - is_64_bit = '''%s -c "import sys; print(sys.maxsize == 9223372036854775807)"''' % env['PYTHON'] - else: - is_64_bit = '''%s -c "import sys; print sys.maxint == 9223372036854775807"''' % env['PYTHON'] - - if is_64_bit: - env['PYTHON_IS_64BIT'] = True - else: - env['PYTHON_IS_64BIT'] = False - - if has_boost_devel and 'python' in env['BINDINGS']: - if py3 and env['BOOST_PYTHON_LIB'] == 'boost_python': - env['BOOST_PYTHON_LIB'] = 'boost_python3%s' % env['BOOST_APPEND'] - elif env['BOOST_PYTHON_LIB'] == 'boost_python': - env['BOOST_PYTHON_LIB'] = 'boost_python%s' % env['BOOST_APPEND'] - if not env['HOST']: - if not conf.CheckHeader(header='boost/python/detail/config.hpp',language='C++'): - color_print(1,'Could not find required header files for boost python') - env['MISSING_DEPS'].append('boost python') - - if env['CAIRO']: - if CHECK_PKG_CONFIG and conf.CheckPKG('pycairo'): - env['HAS_PYCAIRO'] = True - temp_env = env.Clone() - temp_env['CPPPATH'] = [] - temp_env.ParseConfig('pkg-config --cflags pycairo') - if temp_env['CPPPATH']: - env['PYCAIRO_PATHS'] = copy(temp_env['CPPPATH']) - else: - print temp_env['CPPPATH'] - else: - env['SKIPPED_DEPS'].extend(['pycairo']) - else: - color_print(4,'Not building with pycairo support, pass CAIRO=True to enable') - - #### End Config Stage for Required Dependencies #### if env['MISSING_DEPS']: @@ -1864,29 +1763,6 @@ if not preconfigured: if env['DEBUG_UNDEFINED']: env.Append(CXXFLAGS = '-fsanitize=undefined-trap -fsanitize-undefined-trap-on-error -ftrapv -fwrapv') - if 'python' in env['BINDINGS']: - majver, minver = env['PYTHON_VERSION'].split('.') - # we don't want the includes it in the main environment... - # as they are later set in the python build.py - # ugly hack needed until we have env specific conf - backup = env.Clone().Dictionary() - for pyinc in env['PYTHON_INCLUDES']: - env.AppendUnique(CPPPATH = fix_path(pyinc)) - - if not conf.CheckHeader(header='Python.h',language='C'): - color_print(1,'Could not find required header files for the Python language (version %s)' % env['PYTHON_VERSION']) - Exit(1) - - if (int(majver), int(minver)) < (2, 2): - color_print(1,"Python version 2.2 or greater required") - Exit(1) - - if 'python' in env['BINDINGS']: - color_print(4,'Bindings Python version... %s' % env['PYTHON_VERSION']) - color_print(4,'Python %s prefix... %s' % (env['PYTHON_VERSION'], env['PYTHON_SYS_PREFIX'])) - color_print(4,'Python bindings will install in... %s' % os.path.normpath(env['PYTHON_INSTALL_LOCATION'])) - env.Replace(**backup) - # if requested, sort LIBPATH and CPPPATH one last time before saving... if env['PRIORITIZE_LINKING']: conf.prioritize_paths(silent=True) @@ -2070,16 +1946,6 @@ if not HELP_REQUESTED: else : color_print(1,"WARNING: Cannot find boost_program_options. 'shapeindex' and other command line programs will not be available") - # Build the Python bindings - if 'python' in env['BINDINGS']: - SConscript('bindings/python/build.py') - - # Install the python speed testing scripts if python bindings will be available - SConscript('utils/performance/build.py') - - # Install the mapnik upgrade script - SConscript('utils/upgrade_map_xml/build.py') - # Configure fonts and if requested install the bundled DejaVu fonts SConscript('fonts/build.py') diff --git a/bindings/python/boost_std_shared_shim.hpp b/bindings/python/boost_std_shared_shim.hpp deleted file mode 100644 index e76ed58c0..000000000 --- a/bindings/python/boost_std_shared_shim.hpp +++ /dev/null @@ -1,49 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#ifndef MAPNIK_PYTHON_BOOST_STD_SHARED_SHIM -#define MAPNIK_PYTHON_BOOST_STD_SHARED_SHIM - -// boost -#include -#include - -#if BOOST_VERSION < 105300 || defined BOOST_NO_CXX11_SMART_PTR - -// https://github.com/mapnik/mapnik/issues/2022 -#include - -namespace boost { -template const T* get_pointer(std::shared_ptr const& p) -{ - return p.get(); -} - -template T* get_pointer(std::shared_ptr& p) -{ - return p.get(); -} -} // namespace boost - -#endif - -#endif // MAPNIK_PYTHON_BOOST_STD_SHARED_SHIM diff --git a/bindings/python/build.py b/bindings/python/build.py deleted file mode 100644 index db92a51f3..000000000 --- a/bindings/python/build.py +++ /dev/null @@ -1,212 +0,0 @@ -# -# This file is part of Mapnik (c++ mapping toolkit) -# -# Copyright (C) 2014 Artem Pavlenko -# -# Mapnik is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -# -# - -import glob -import os -from subprocess import Popen, PIPE - - -Import('env') - -def call(cmd, silent=True): - stdin, stderr = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE).communicate() - if not stderr: - return stdin.strip() - elif not silent: - print stderr - -def run_2to3(*args,**kwargs): - call('2to3 -w %s' % os.path.dirname(kwargs['target'][0].path)) - -def is_py3(): - return 'True' in os.popen('''%s -c "import sys as s;s.stdout.write(str(s.version_info[0] == 3))"''' % env['PYTHON']).read().strip() - - -prefix = env['PREFIX'] -target_path = os.path.normpath(env['PYTHON_INSTALL_LOCATION'] + os.path.sep + env['MAPNIK_NAME']) -target_path_deprecated = os.path.normpath(env['PYTHON_INSTALL_LOCATION'] + os.path.sep + 'mapnik2') - -py_env = env.Clone() - -py_env.Append(CPPPATH = env['PYTHON_INCLUDES']) - -py_env.Append(CPPDEFINES = env['LIBMAPNIK_DEFINES']) - -py_env['LIBS'] = [env['MAPNIK_NAME'],env['BOOST_PYTHON_LIB']] - -link_all_libs = env['LINKING'] == 'static' or env['RUNTIME_LINK'] == 'static' or (env['PLATFORM'] == 'Darwin' and not env['PYTHON_DYNAMIC_LOOKUP']) - -# even though boost_thread is no longer used in mapnik core -# we need to link in for boost_python to avoid missing symbol: _ZN5boost6detail12get_tss_dataEPKv / boost::detail::get_tss_data -py_env.AppendUnique(LIBS = 'boost_thread%s' % env['BOOST_APPEND']) - -if link_all_libs: - py_env.AppendUnique(LIBS=env['LIBMAPNIK_LIBS']) - -# note: on linux -lrt must be linked after thread to avoid: undefined symbol: clock_gettime -if env['RUNTIME_LINK'] == 'static' and env['PLATFORM'] == 'Linux': - py_env.AppendUnique(LIBS='rt') - -# TODO - do solaris/fedora need direct linking too? -if env['PLATFORM'] == 'Darwin': - ##### Python linking on OS X is tricky ### - # Confounding problems are: - # 1) likelyhood of multiple python installs of the same major.minor version - # because apple supplies python built-in and many users may have installed - # further versions using macports - # 2) boost python directly links to a python version - # 3) the below will directly link _mapnik.so to a python version - # 4) _mapnik.so must link to the same python lib as boost_python.dylib otherwise - # python will Abort with a Version Mismatch error. - # See https://github.com/mapnik/mapnik/issues/453 for the seeds of a better approach - # for now we offer control over method of direct linking... - # The default below is to link against the python dylib in the form of - #/path/to/Python.framework/Python instead of -lpython - - # http://developer.apple.com/mac/library/DOCUMENTATION/Darwin/Reference/ManPages/man1/ld.1.html - - if env['PYTHON_DYNAMIC_LOOKUP']: - python_link_flag = '-undefined dynamic_lookup' - elif env['FRAMEWORK_PYTHON']: - if env['FRAMEWORK_SEARCH_PATH']: - # if the user has supplied a custom root path to search for - # a given Python framework, then use that to direct the linker - python_link_flag = '-F%s -framework Python -Z' % env['FRAMEWORK_SEARCH_PATH'] - else: - # otherwise be as explicit as possible for linking to the same Framework - # as the executable we are building with (or is pointed to by the PYTHON variable) - # otherwise we may accidentally link against either: - # /System/Library/Frameworks/Python.framework/Python/Versions/ - # or - # /Library/Frameworks/Python.framework/Python/Versions/ - # See: https://github.com/mapnik/mapnik/issues/380 - link_prefix = env['PYTHON_SYS_PREFIX'] - if '.framework' in link_prefix: - python_link_flag = '-F%s -framework Python -Z' % os.path.dirname(link_prefix.split('.')[0]) - elif '/System' in link_prefix: - python_link_flag = '-F/System/Library/Frameworks/ -framework Python -Z' - else: - # should we fall back to -lpython here? - python_link_flag = '-F/ -framework Python' - # if we are not linking to a framework then use the *nix standard approach - else: - # TODO - do we need to pass -L/? - python_link_flag = '-lpython%s' % env['PYTHON_VERSION'] - -elif env['PLATFORM'] == 'SunOS': - # make sure to explicitly link mapnik.so against - # libmapnik in its installed location - python_link_flag = '-R%s' % env['MAPNIK_LIB_BASE'] -else: - # all other platforms we don't directly link python - python_link_flag = '' - -paths = ''' -"""Configuration paths of Mapnik fonts and input plugins (auto-generated by SCons).""" - -from os.path import normpath,join,dirname - -mapniklibpath = '%s' -mapniklibpath = normpath(join(dirname(__file__),mapniklibpath)) -''' - -paths += "inputpluginspath = join(mapniklibpath,'input')\n" - -if env['SYSTEM_FONTS']: - paths += "fontscollectionpath = normpath('%s')\n" % env['SYSTEM_FONTS'] -else: - paths += "fontscollectionpath = join(mapniklibpath,'fonts')\n" - -paths += "__all__ = [mapniklibpath,inputpluginspath,fontscollectionpath]\n" - -if not os.path.exists(env['MAPNIK_NAME']): - os.mkdir(env['MAPNIK_NAME']) - -file('mapnik/paths.py','w').write(paths % (env['MAPNIK_LIB_DIR'])) - -# force open perms temporarily so that `sudo scons install` -# does not later break simple non-install non-sudo rebuild -try: - os.chmod('mapnik/paths.py',0666) -except: pass - -# install the shared object beside the module directory -sources = glob.glob('*.cpp') - -if 'install' in COMMAND_LINE_TARGETS: - # install the core mapnik python files, including '__init__.py' - init_files = glob.glob('mapnik/*.py') - if 'mapnik/paths.py' in init_files: - init_files.remove('mapnik/paths.py') - init_module = env.Install(target_path, init_files) - env.Alias(target='install', source=init_module) - # install mapnik2 module which redirects to mapnik and issues DeprecatedWarning - init_mapnik2 = env.Install(target_path_deprecated, 'mapnik2/__init__.py') - env.Alias(target='install', source=init_mapnik2) - - # fix perms and install the custom generated 'paths.py' - targetp = os.path.join(target_path,'paths.py') - env.Alias("install", targetp) - # use env.Command rather than env.Install - # to enable setting proper perms on `paths.py` - env.Command( targetp, 'mapnik/paths.py', - [ - Copy("$TARGET","$SOURCE"), - Chmod("$TARGET", 0644), - ]) - -if 'uninstall' not in COMMAND_LINE_TARGETS: - if env['HAS_CAIRO']: - py_env.Append(CPPPATH = env['CAIRO_CPPPATHS']) - py_env.Append(CPPDEFINES = '-DHAVE_CAIRO') - if link_all_libs: - py_env.Append(LIBS=env['CAIRO_ALL_LIBS']) - - if env['HAS_PYCAIRO']: - py_env.Append(CPPDEFINES = '-DHAVE_PYCAIRO') - py_env.Append(CPPPATH = env['PYCAIRO_PATHS']) - -py_env.Append(LINKFLAGS=python_link_flag) -py_env.AppendUnique(LIBS='mapnik-json') -py_env.AppendUnique(LIBS='mapnik-wkt') - -_mapnik = py_env.LoadableModule('mapnik/_mapnik', sources, LDMODULEPREFIX='', LDMODULESUFFIX='.so') - -Depends(_mapnik, env.subst('../../src/%s' % env['MAPNIK_LIB_NAME'])) -Depends(_mapnik, env.subst('../../src/json/libmapnik-json${LIBSUFFIX}')) -Depends(_mapnik, env.subst('../../src/wkt/libmapnik-wkt${LIBSUFFIX}')) - -if env['PLATFORM'] == 'SunOS' and env['PYTHON_IS_64BIT']: - # http://mail.python.org/pipermail/python-dev/2006-August/068528.html - cxx_module_path = os.path.join(target_path,'64') -else: - cxx_module_path = target_path - -if 'uninstall' not in COMMAND_LINE_TARGETS: - pymapniklib = env.Install(cxx_module_path,_mapnik) - py_env.Alias(target='install',source=pymapniklib) - if 'install' in COMMAND_LINE_TARGETS: - if is_py3(): - env.AddPostAction(pymapniklib, run_2to3) - - -env['create_uninstall_target'](env, target_path) -env['create_uninstall_target'](env, target_path_deprecated) diff --git a/bindings/python/mapnik/__init__.py b/bindings/python/mapnik/__init__.py deleted file mode 100644 index 3eef555bb..000000000 --- a/bindings/python/mapnik/__init__.py +++ /dev/null @@ -1,1073 +0,0 @@ -# -# This file is part of Mapnik (C++/Python mapping toolkit) -# Copyright (C) 2014 Artem Pavlenko -# -# Mapnik 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 any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# - -"""Mapnik Python module. - -Boost Python bindings to the Mapnik C++ shared library. - -Several things happen when you do: - - >>> import mapnik - - 1) Mapnik C++ objects are imported via the '__init__.py' from the '_mapnik.so' shared object - (_mapnik.pyd on win) which references libmapnik.so (linux), libmapnik.dylib (mac), or - mapnik.dll (win32). - - 2) The paths to the input plugins and font directories are imported from the 'paths.py' - file which was constructed and installed during SCons installation. - - 3) All available input plugins and TrueType fonts are automatically registered. - - 4) Boost Python metaclass injectors are used in the '__init__.py' to extend several - objects adding extra convenience when accessed via Python. - -""" - -import itertools -import os -import warnings -try: - import json -except ImportError: - import simplejson as json - -def bootstrap_env(): - """ - If an optional settings file exists, inherit its - environment settings before loading the mapnik library. - - This feature is intended for customized packages of mapnik. - - The settings file should be a python file with an 'env' variable - that declares a dictionary of key:value pairs to push into the - global process environment, if not already set, like: - - env = {'ICU_DATA':'/usr/local/share/icu/'} - """ - if os.path.exists(os.path.join(os.path.dirname(__file__),'mapnik_settings.py')): - from mapnik_settings import env - process_keys = os.environ.keys() - for key, value in env.items(): - if key not in process_keys: - os.environ[key] = value - -bootstrap_env() - -from _mapnik import * - -import printing -printing.renderer = render - -# The base Boost.Python class -BoostPythonMetaclass = Coord.__class__ - -class _MapnikMetaclass(BoostPythonMetaclass): - def __init__(self, name, bases, dict): - for b in bases: - if type(b) not in (self, type): - for k,v in list(dict.items()): - if hasattr(b, k): - setattr(b, '_c_'+k, getattr(b, k)) - setattr(b,k,v) - return type.__init__(self, name, bases, dict) - -# metaclass injector compatible with both python 2 and 3 -# http://mikewatkins.ca/2008/11/29/python-2-and-3-metaclasses/ -_injector = _MapnikMetaclass('_injector', (object, ), {}) - -def Filter(*args,**kwargs): - warnings.warn("'Filter' is deprecated and will be removed in Mapnik 3.x, use 'Expression' instead", - DeprecationWarning, 2) - return Expression(*args, **kwargs) - -class Envelope(Box2d): - def __init__(self, *args, **kwargs): - warnings.warn("'Envelope' is deprecated and will be removed in Mapnik 3.x, use 'Box2d' instead", - DeprecationWarning, 2) - Box2d.__init__(self, *args, **kwargs) - -class _Coord(Coord,_injector): - """ - Represents a point with two coordinates (either lon/lat or x/y). - - Following operators are defined for Coord: - - Addition and subtraction of Coord objects: - - >>> Coord(10, 10) + Coord(20, 20) - Coord(30.0, 30.0) - >>> Coord(10, 10) - Coord(20, 20) - Coord(-10.0, -10.0) - - Addition, subtraction, multiplication and division between - a Coord and a float: - - >>> Coord(10, 10) + 1 - Coord(11.0, 11.0) - >>> Coord(10, 10) - 1 - Coord(-9.0, -9.0) - >>> Coord(10, 10) * 2 - Coord(20.0, 20.0) - >>> Coord(10, 10) / 2 - Coord(5.0, 5.0) - - Equality of coords (as pairwise equality of components): - >>> Coord(10, 10) is Coord(10, 10) - False - >>> Coord(10, 10) == Coord(10, 10) - True - """ - def __repr__(self): - return 'Coord(%s,%s)' % (self.x, self.y) - - def forward(self, projection): - """ - Projects the point from the geographic coordinate - space into the cartesian space. The x component is - considered to be longitude, the y component the - latitude. - - Returns the easting (x) and northing (y) as a - coordinate pair. - - Example: Project the geographic coordinates of the - city center of Stuttgart into the local - map projection (GK Zone 3/DHDN, EPSG 31467) - >>> p = Projection('+init=epsg:31467') - >>> Coord(9.1, 48.7).forward(p) - Coord(3507360.12813,5395719.2749) - """ - return forward_(self, projection) - - def inverse(self, projection): - """ - Projects the point from the cartesian space - into the geographic space. The x component is - considered to be the easting, the y component - to be the northing. - - Returns the longitude (x) and latitude (y) as a - coordinate pair. - - Example: Project the cartesian coordinates of the - city center of Stuttgart in the local - map projection (GK Zone 3/DHDN, EPSG 31467) - into geographic coordinates: - >>> p = Projection('+init=epsg:31467') - >>> Coord(3507360.12813,5395719.2749).inverse(p) - Coord(9.1, 48.7) - """ - return inverse_(self, projection) - -class _Box2d(Box2d,_injector): - """ - Represents a spatial envelope (i.e. bounding box). - - - Following operators are defined for Box2d: - - Addition: - e1 + e2 is equvalent to e1.expand_to_include(e2) but yields - a new envelope instead of modifying e1 - - Subtraction: - Currently e1 - e2 returns e1. - - Multiplication and division with floats: - Multiplication and division change the width and height of the envelope - by the given factor without modifying its center.. - - That is, e1 * x is equivalent to: - e1.width(x * e1.width()) - e1.height(x * e1.height()), - except that a new envelope is created instead of modifying e1. - - e1 / x is equivalent to e1 * (1.0/x). - - Equality: two envelopes are equal if their corner points are equal. - """ - - def __repr__(self): - return 'Box2d(%s,%s,%s,%s)' % \ - (self.minx,self.miny,self.maxx,self.maxy) - - def forward(self, projection): - """ - Projects the envelope from the geographic space - into the cartesian space by projecting its corner - points. - - See also: - Coord.forward(self, projection) - """ - return forward_(self, projection) - - def inverse(self, projection): - """ - Projects the envelope from the cartesian space - into the geographic space by projecting its corner - points. - - See also: - Coord.inverse(self, projection). - """ - return inverse_(self, projection) - -class _Projection(Projection,_injector): - - def __repr__(self): - return "Projection('%s')" % self.params() - - def forward(self,obj): - """ - Projects the given object (Box2d or Coord) - from the geographic space into the cartesian space. - - See also: - Box2d.forward(self, projection), - Coord.forward(self, projection). - """ - return forward_(obj,self) - - def inverse(self,obj): - """ - Projects the given object (Box2d or Coord) - from the cartesian space into the geographic space. - - See also: - Box2d.inverse(self, projection), - Coord.inverse(self, projection). - """ - return inverse_(obj,self) - -class _Feature(Feature,_injector): - __geo_interface__ = property(lambda self: json.loads(self.to_geojson())) - -class _Geometry(Geometry,_injector): - __geo_interface__ = property(lambda self: json.loads(self.to_geojson())) - -class _Datasource(Datasource,_injector): - - def all_features(self,fields=None,variables={}): - query = Query(self.envelope()) - query.set_variables(variables); - attributes = fields or self.fields() - for fld in attributes: - query.add_property_name(fld) - return self.features(query).features - - def featureset(self,fields=None,variables={}): - query = Query(self.envelope()) - query.set_variables(variables); - attributes = fields or self.fields() - for fld in attributes: - query.add_property_name(fld) - return self.features(query) - -class _Color(Color,_injector): - def __repr__(self): - return "Color(R=%d,G=%d,B=%d,A=%d)" % (self.r,self.g,self.b,self.a) - -class _SymbolizerBase(SymbolizerBase,_injector): - # back compatibility - @property - def filename(self): - return self['file'] - - @filename.setter - def filename(self, val): - self['file'] = val - -def _add_symbol_method_to_symbolizers(vars=globals()): - - def symbol_for_subcls(self): - return self - - def symbol_for_cls(self): - return getattr(self,self.type())() - - for name, obj in vars.items(): - if name.endswith('Symbolizer') and not name.startswith('_'): - if name == 'Symbolizer': - symbol = symbol_for_cls - else: - symbol = symbol_for_subcls - type('dummy', (obj,_injector), {'symbol': symbol}) -_add_symbol_method_to_symbolizers() - -def Datasource(**keywords): - """Wrapper around CreateDatasource. - - Create a Mapnik Datasource using a dictionary of parameters. - - Keywords must include: - - type='plugin_name' # e.g. type='gdal' - - See the convenience factory methods of each input plugin for - details on additional required keyword arguments. - - """ - - return CreateDatasource(keywords) - -# convenience factory methods - -def Shapefile(**keywords): - """Create a Shapefile Datasource. - - Required keyword arguments: - file -- path to shapefile without extension - - Optional keyword arguments: - base -- path prefix (default None) - encoding -- file encoding (default 'utf-8') - - >>> from mapnik import Shapefile, Layer - >>> shp = Shapefile(base='/home/mapnik/data',file='world_borders') - >>> lyr = Layer('Shapefile Layer') - >>> lyr.datasource = shp - - """ - keywords['type'] = 'shape' - return CreateDatasource(keywords) - -def CSV(**keywords): - """Create a CSV Datasource. - - Required keyword arguments: - file -- path to csv - - Optional keyword arguments: - inline -- inline CSV string (if provided 'file' argument will be ignored and non-needed) - base -- path prefix (default None) - encoding -- file encoding (default 'utf-8') - row_limit -- integer limit of rows to return (default: 0) - strict -- throw an error if an invalid row is encountered - escape -- The escape character to use for parsing data - quote -- The quote character to use for parsing data - separator -- The separator character to use for parsing data - headers -- A comma separated list of header names that can be set to add headers to data that lacks them - filesize_max -- The maximum filesize in MB that will be accepted - - >>> from mapnik import CSV - >>> csv = CSV(file='test.csv') - - >>> from mapnik import CSV - >>> csv = CSV(inline='''wkt,Name\n"POINT (120.15 48.47)","Winthrop, WA"''') - - For more information see https://github.com/mapnik/mapnik/wiki/CSV-Plugin - - """ - keywords['type'] = 'csv' - return CreateDatasource(keywords) - -def GeoJSON(**keywords): - """Create a GeoJSON Datasource. - - Required keyword arguments: - file -- path to json - - Optional keyword arguments: - encoding -- file encoding (default 'utf-8') - base -- path prefix (default None) - - >>> from mapnik import GeoJSON - >>> geojson = GeoJSON(file='test.json') - - """ - keywords['type'] = 'geojson' - return CreateDatasource(keywords) - -def PostGIS(**keywords): - """Create a PostGIS Datasource. - - Required keyword arguments: - dbname -- database name to connect to - table -- table name or subselect query - - *Note: if using subselects for the 'table' value consider also - passing the 'geometry_field' and 'srid' and 'extent_from_subquery' - options and/or specifying the 'geometry_table' option. - - Optional db connection keyword arguments: - user -- database user to connect as (default: see postgres docs) - password -- password for database user (default: see postgres docs) - host -- portgres hostname (default: see postgres docs) - port -- postgres port (default: see postgres docs) - initial_size -- integer size of connection pool (default: 1) - max_size -- integer max of connection pool (default: 10) - persist_connection -- keep connection open (default: True) - - Optional table-level keyword arguments: - extent -- manually specified data extent (comma delimited string, default: None) - estimate_extent -- boolean, direct PostGIS to use the faster, less accurate `estimate_extent` over `extent` (default: False) - extent_from_subquery -- boolean, direct Mapnik to query Postgis for the extent of the raw 'table' value (default: uses 'geometry_table') - geometry_table -- specify geometry table to use to look up metadata (default: automatically parsed from 'table' value) - geometry_field -- specify geometry field to use (default: first entry in geometry_columns) - srid -- specify srid to use (default: auto-detected from geometry_field) - row_limit -- integer limit of rows to return (default: 0) - cursor_size -- integer size of binary cursor to use (default: 0, no binary cursor is used) - - >>> from mapnik import PostGIS, Layer - >>> params = dict(dbname=env['MAPNIK_NAME'],table='osm',user='postgres',password='gis') - >>> params['estimate_extent'] = False - >>> params['extent'] = '-20037508,-19929239,20037508,19929239' - >>> postgis = PostGIS(**params) - >>> lyr = Layer('PostGIS Layer') - >>> lyr.datasource = postgis - - """ - keywords['type'] = 'postgis' - return CreateDatasource(keywords) - -def PgRaster(**keywords): - """Create a PgRaster Datasource. - - Required keyword arguments: - dbname -- database name to connect to - table -- table name or subselect query - - *Note: if using subselects for the 'table' value consider also - passing the 'raster_field' and 'srid' and 'extent_from_subquery' - options and/or specifying the 'raster_table' option. - - Optional db connection keyword arguments: - user -- database user to connect as (default: see postgres docs) - password -- password for database user (default: see postgres docs) - host -- portgres hostname (default: see postgres docs) - port -- postgres port (default: see postgres docs) - initial_size -- integer size of connection pool (default: 1) - max_size -- integer max of connection pool (default: 10) - persist_connection -- keep connection open (default: True) - - Optional table-level keyword arguments: - extent -- manually specified data extent (comma delimited string, default: None) - estimate_extent -- boolean, direct PostGIS to use the faster, less accurate `estimate_extent` over `extent` (default: False) - extent_from_subquery -- boolean, direct Mapnik to query Postgis for the extent of the raw 'table' value (default: uses 'geometry_table') - raster_table -- specify geometry table to use to look up metadata (default: automatically parsed from 'table' value) - raster_field -- specify geometry field to use (default: first entry in raster_columns) - srid -- specify srid to use (default: auto-detected from geometry_field) - row_limit -- integer limit of rows to return (default: 0) - cursor_size -- integer size of binary cursor to use (default: 0, no binary cursor is used) - use_overviews -- boolean, use overviews when available (default: false) - prescale_rasters -- boolean, scale rasters on the db side (default: false) - clip_rasters -- boolean, clip rasters on the db side (default: false) - band -- integer, if non-zero interprets the given band (1-based offset) as a data raster (default: 0) - - >>> from mapnik import PgRaster, Layer - >>> params = dict(dbname='mapnik',table='osm',user='postgres',password='gis') - >>> params['estimate_extent'] = False - >>> params['extent'] = '-20037508,-19929239,20037508,19929239' - >>> pgraster = PgRaster(**params) - >>> lyr = Layer('PgRaster Layer') - >>> lyr.datasource = pgraster - - """ - keywords['type'] = 'pgraster' - return CreateDatasource(keywords) - -def Raster(**keywords): - """Create a Raster (Tiff) Datasource. - - Required keyword arguments: - file -- path to stripped or tiled tiff - lox -- lowest (min) x/longitude of tiff extent - loy -- lowest (min) y/latitude of tiff extent - hix -- highest (max) x/longitude of tiff extent - hiy -- highest (max) y/latitude of tiff extent - - Hint: lox,loy,hix,hiy make a Mapnik Box2d - - Optional keyword arguments: - base -- path prefix (default None) - multi -- whether the image is in tiles on disk (default False) - - Multi-tiled keyword arguments: - x_width -- virtual image number of tiles in X direction (required) - y_width -- virtual image number of tiles in Y direction (required) - tile_size -- if an image is in tiles, how large are the tiles (default 256) - tile_stride -- if an image is in tiles, what's the increment between rows/cols (default 1) - - >>> from mapnik import Raster, Layer - >>> raster = Raster(base='/home/mapnik/data',file='elevation.tif',lox=-122.8,loy=48.5,hix=-122.7,hiy=48.6) - >>> lyr = Layer('Tiff Layer') - >>> lyr.datasource = raster - - """ - keywords['type'] = 'raster' - return CreateDatasource(keywords) - -def Gdal(**keywords): - """Create a GDAL Raster Datasource. - - Required keyword arguments: - file -- path to GDAL supported dataset - - Optional keyword arguments: - base -- path prefix (default None) - shared -- boolean, open GdalDataset in shared mode (default: False) - bbox -- tuple (minx, miny, maxx, maxy). If specified, overrides the bbox detected by GDAL. - - >>> from mapnik import Gdal, Layer - >>> dataset = Gdal(base='/home/mapnik/data',file='elevation.tif') - >>> lyr = Layer('GDAL Layer from TIFF file') - >>> lyr.datasource = dataset - - """ - keywords['type'] = 'gdal' - if 'bbox' in keywords: - if isinstance(keywords['bbox'], (tuple, list)): - keywords['bbox'] = ','.join([str(item) for item in keywords['bbox']]) - return CreateDatasource(keywords) - -def Occi(**keywords): - """Create a Oracle Spatial (10g) Vector Datasource. - - Required keyword arguments: - user -- database user to connect as - password -- password for database user - host -- oracle host to connect to (does not refer to SID in tsnames.ora) - table -- table name or subselect query - - Optional keyword arguments: - initial_size -- integer size of connection pool (default 1) - max_size -- integer max of connection pool (default 10) - extent -- manually specified data extent (comma delimited string, default None) - estimate_extent -- boolean, direct Oracle to use the faster, less accurate estimate_extent() over extent() (default False) - encoding -- file encoding (default 'utf-8') - geometry_field -- specify geometry field (default 'GEOLOC') - use_spatial_index -- boolean, force the use of the spatial index (default True) - - >>> from mapnik import Occi, Layer - >>> params = dict(host='myoracle',user='scott',password='tiger',table='test') - >>> params['estimate_extent'] = False - >>> params['extent'] = '-20037508,-19929239,20037508,19929239' - >>> oracle = Occi(**params) - >>> lyr = Layer('Oracle Spatial Layer') - >>> lyr.datasource = oracle - """ - keywords['type'] = 'occi' - return CreateDatasource(keywords) - -def Ogr(**keywords): - """Create a OGR Vector Datasource. - - Required keyword arguments: - file -- path to OGR supported dataset - layer -- name of layer to use within datasource (optional if layer_by_index or layer_by_sql is used) - - Optional keyword arguments: - layer_by_index -- choose layer by index number instead of by layer name or sql. - layer_by_sql -- choose layer by sql query number instead of by layer name or index. - base -- path prefix (default None) - encoding -- file encoding (default 'utf-8') - - >>> from mapnik import Ogr, Layer - >>> datasource = Ogr(base='/home/mapnik/data',file='rivers.geojson',layer='OGRGeoJSON') - >>> lyr = Layer('OGR Layer from GeoJSON file') - >>> lyr.datasource = datasource - - """ - keywords['type'] = 'ogr' - return CreateDatasource(keywords) - -def SQLite(**keywords): - """Create a SQLite Datasource. - - Required keyword arguments: - file -- path to SQLite database file - table -- table name or subselect query - - Optional keyword arguments: - base -- path prefix (default None) - encoding -- file encoding (default 'utf-8') - extent -- manually specified data extent (comma delimited string, default None) - metadata -- name of auxillary table containing record for table with xmin, ymin, xmax, ymax, and f_table_name - geometry_field -- name of geometry field (default 'the_geom') - key_field -- name of primary key field (default 'OGC_FID') - row_offset -- specify a custom integer row offset (default 0) - row_limit -- specify a custom integer row limit (default 0) - wkb_format -- specify a wkb type of 'spatialite' (default None) - use_spatial_index -- boolean, instruct sqlite plugin to use Rtree spatial index (default True) - - >>> from mapnik import SQLite, Layer - >>> sqlite = SQLite(base='/home/mapnik/data',file='osm.db',table='osm',extent='-20037508,-19929239,20037508,19929239') - >>> lyr = Layer('SQLite Layer') - >>> lyr.datasource = sqlite - - """ - keywords['type'] = 'sqlite' - return CreateDatasource(keywords) - -def Rasterlite(**keywords): - """Create a Rasterlite Datasource. - - Required keyword arguments: - file -- path to Rasterlite database file - table -- table name or subselect query - - Optional keyword arguments: - base -- path prefix (default None) - extent -- manually specified data extent (comma delimited string, default None) - - >>> from mapnik import Rasterlite, Layer - >>> rasterlite = Rasterlite(base='/home/mapnik/data',file='osm.db',table='osm',extent='-20037508,-19929239,20037508,19929239') - >>> lyr = Layer('Rasterlite Layer') - >>> lyr.datasource = rasterlite - - """ - keywords['type'] = 'rasterlite' - return CreateDatasource(keywords) - -def Osm(**keywords): - """Create a Osm Datasource. - - Required keyword arguments: - file -- path to OSM file - - Optional keyword arguments: - encoding -- file encoding (default 'utf-8') - url -- url to fetch data (default None) - bbox -- data bounding box for fetching data (default None) - - >>> from mapnik import Osm, Layer - >>> datasource = Osm(file='test.osm') - >>> lyr = Layer('Osm Layer') - >>> lyr.datasource = datasource - - """ - # note: parser only supports libxml2 so not exposing option - # parser -- xml parser to use (default libxml2) - keywords['type'] = 'osm' - return CreateDatasource(keywords) - -def Python(**keywords): - """Create a Python Datasource. - - >>> from mapnik import Python, PythonDatasource - >>> datasource = Python('PythonDataSource') - >>> lyr = Layer('Python datasource') - >>> lyr.datasource = datasource - """ - keywords['type'] = 'python' - return CreateDatasource(keywords) - -def MemoryDatasource(**keywords): - """Create a Memory Datasource. - - Optional keyword arguments: - (TODO) - """ - params = Parameters() - params.append(Parameter('type','memory')) - return MemoryDatasourceBase(params) - -class PythonDatasource(object): - """A base class for a Python data source. - - Optional arguments: - envelope -- a mapnik.Box2d (minx, miny, maxx, maxy) envelope of the data source, default (-180,-90,180,90) - geometry_type -- one of the DataGeometryType enumeration values, default Point - data_type -- one of the DataType enumerations, default Vector - """ - def __init__(self, envelope=None, geometry_type=None, data_type=None): - self.envelope = envelope or Box2d(-180, -90, 180, 90) - self.geometry_type = geometry_type or DataGeometryType.Point - self.data_type = data_type or DataType.Vector - - def features(self, query): - """Return an iterable which yields instances of Feature for features within the passed query. - - Required arguments: - query -- a Query instance specifying the region for which features should be returned - """ - return None - - def features_at_point(self, point): - """Rarely uses. Return an iterable which yields instances of Feature for the specified point.""" - return None - - @classmethod - def wkb_features(cls, keys, features): - """A convenience function to wrap an iterator yielding pairs of WKB format geometry and dictionaries of - key-value pairs into mapnik features. Return this from PythonDatasource.features() passing it a sequence of keys - to appear in the output and an iterator yielding features. - - For example. One might have a features() method in a derived class like the following: - - def features(self, query): - # ... create WKB features feat1 and feat2 - - return mapnik.PythonDatasource.wkb_features( - keys = ( 'name', 'author' ), - features = [ - (feat1, { 'name': 'feat1', 'author': 'alice' }), - (feat2, { 'name': 'feat2', 'author': 'bob' }), - ] - ) - - """ - ctx = Context() - [ctx.push(x) for x in keys] - - def make_it(feat, idx): - f = Feature(ctx, idx) - geom, attrs = feat - f.add_geometries_from_wkb(geom) - for k, v in attrs.iteritems(): - f[k] = v - return f - - return itertools.imap(make_it, features, itertools.count(1)) - - @classmethod - def wkt_features(cls, keys, features): - """A convenience function to wrap an iterator yielding pairs of WKT format geometry and dictionaries of - key-value pairs into mapnik features. Return this from PythonDatasource.features() passing it a sequence of keys - to appear in the output and an iterator yielding features. - - For example. One might have a features() method in a derived class like the following: - - def features(self, query): - # ... create WKT features feat1 and feat2 - - return mapnik.PythonDatasource.wkt_features( - keys = ( 'name', 'author' ), - features = [ - (feat1, { 'name': 'feat1', 'author': 'alice' }), - (feat2, { 'name': 'feat2', 'author': 'bob' }), - ] - ) - - """ - ctx = Context() - [ctx.push(x) for x in keys] - - def make_it(feat, idx): - f = Feature(ctx, idx) - geom, attrs = feat - f.add_geometries_from_wkt(geom) - for k, v in attrs.iteritems(): - f[k] = v - return f - - return itertools.imap(make_it, features, itertools.count(1)) - -class _TextSymbolizer(TextSymbolizer,_injector): - @property - def name(self): - if isinstance(self.properties.format_tree, FormattingText): - return self.properties.format_tree.text - else: - # There is no single expression which could be returned as name - raise RuntimeError("TextSymbolizer uses complex formatting features, but old compatibility interface is used to access it. Use self.properties.format_tree instead.") - - @name.setter - def name(self, name): - self.properties.format_tree = FormattingText(name) - - @property - def text_size(self): - return self.format.text_size - - @text_size.setter - def text_size(self, text_size): - self.format.text_size = text_size - - @property - def face_name(self): - return self.format.face_name - - @face_name.setter - def face_name(self, face_name): - self.format.face_name = face_name - - - @property - def fontset(self): - return self.format.fontset - - @fontset.setter - def fontset(self, fontset): - self.format.fontset = fontset - - - @property - def character_spacing(self): - return self.format.character_spacing - - @character_spacing.setter - def character_spacing(self, character_spacing): - self.format.character_spacing = character_spacing - - - @property - def line_spacing(self): - return self.format.line_spacing - - @line_spacing.setter - def line_spacing(self, line_spacing): - self.format.line_spacing = line_spacing - - - @property - def text_opacity(self): - return self.format.text_opacity - - @text_opacity.setter - def text_opacity(self, text_opacity): - self.format.text_opacity = text_opacity - - - @property - def wrap_before(self): - return self.format.wrap_before - - @wrap_before.setter - def wrap_before(self, wrap_before): - self.format.wrap_before = wrap_before - - - @property - def text_transform(self): - return self.format.text_transform - - @text_transform.setter - def text_transform(self, text_transform): - self.format.text_transform = text_transform - - - @property - def fill(self): - return self.format.fill - - @fill.setter - def fill(self, fill): - self.format.fill = fill - - - @property - def halo_fill(self): - return self.format.halo_fill - - @halo_fill.setter - def halo_fill(self, halo_fill): - self.format.halo_fill = halo_fill - - - - @property - def halo_radius(self): - return self.format.halo_radius - - @halo_radius.setter - def halo_radius(self, halo_radius): - self.format.halo_radius = halo_radius - - - @property - def label_placement(self): - return self.properties.label_placement - - @label_placement.setter - def label_placement(self, label_placement): - self.properties.label_placement = label_placement - - - - @property - def horizontal_alignment(self): - return self.properties.horizontal_alignment - - @horizontal_alignment.setter - def horizontal_alignment(self, horizontal_alignment): - self.properties.horizontal_alignment = horizontal_alignment - - - - @property - def justify_alignment(self): - return self.properties.justify_alignment - - @justify_alignment.setter - def justify_alignment(self, justify_alignment): - self.properties.justify_alignment = justify_alignment - - - - @property - def vertical_alignment(self): - return self.properties.vertical_alignment - - @vertical_alignment.setter - def vertical_alignment(self, vertical_alignment): - self.properties.vertical_alignment = vertical_alignment - - - - @property - def orientation(self): - return self.properties.orientation - - @orientation.setter - def orientation(self, orientation): - self.properties.orientation = orientation - - - - @property - def displacement(self): - return self.properties.displacement - - @displacement.setter - def displacement(self, displacement): - self.properties.displacement = displacement - - - - @property - def label_spacing(self): - return self.properties.label_spacing - - @label_spacing.setter - def label_spacing(self, label_spacing): - self.properties.label_spacing = label_spacing - - - - @property - def label_position_tolerance(self): - return self.properties.label_position_tolerance - - @label_position_tolerance.setter - def label_position_tolerance(self, label_position_tolerance): - self.properties.label_position_tolerance = label_position_tolerance - - - - @property - def avoid_edges(self): - return self.properties.avoid_edges - - @avoid_edges.setter - def avoid_edges(self, avoid_edges): - self.properties.avoid_edges = avoid_edges - - - - @property - def minimum_distance(self): - return self.properties.minimum_distance - - @minimum_distance.setter - def minimum_distance(self, minimum_distance): - self.properties.minimum_distance = minimum_distance - - - - @property - def minimum_padding(self): - return self.properties.minimum_padding - - @minimum_padding.setter - def minimum_padding(self, minimum_padding): - self.properties.minimum_padding = minimum_padding - - - - @property - def minimum_path_length(self): - return self.properties.minimum_path_length - - @minimum_path_length.setter - def minimum_path_length(self, minimum_path_length): - self.properties.minimum_path_length = minimum_path_length - - - - @property - def maximum_angle_char_delta(self): - return self.properties.maximum_angle_char_delta - - @maximum_angle_char_delta.setter - def maximum_angle_char_delta(self, maximum_angle_char_delta): - self.properties.maximum_angle_char_delta = maximum_angle_char_delta - - - @property - def allow_overlap(self): - return self.properties.allow_overlap - - @allow_overlap.setter - def allow_overlap(self, allow_overlap): - self.properties.allow_overlap = allow_overlap - - - - @property - def text_ratio(self): - return self.properties.text_ratio - - @text_ratio.setter - def text_ratio(self, text_ratio): - self.properties.text_ratio = text_ratio - - - - @property - def wrap_width(self): - return self.properties.wrap_width - - @wrap_width.setter - def wrap_width(self, wrap_width): - self.properties.wrap_width = wrap_width - - -def mapnik_version_from_string(version_string): - """Return the Mapnik version from a string.""" - n = version_string.split('.') - return (int(n[0]) * 100000) + (int(n[1]) * 100) + (int(n[2])); - -def register_plugins(path=None): - """Register plugins located by specified path""" - if not path: - if os.environ.has_key('MAPNIK_INPUT_PLUGINS_DIRECTORY'): - path = os.environ.get('MAPNIK_INPUT_PLUGINS_DIRECTORY') - else: - from paths import inputpluginspath - path = inputpluginspath - DatasourceCache.register_datasources(path) - -def register_fonts(path=None,valid_extensions=['.ttf','.otf','.ttc','.pfa','.pfb','.ttc','.dfont','.woff']): - """Recursively register fonts using path argument as base directory""" - if not path: - if os.environ.has_key('MAPNIK_FONT_DIRECTORY'): - path = os.environ.get('MAPNIK_FONT_DIRECTORY') - else: - from paths import fontscollectionpath - path = fontscollectionpath - for dirpath, _, filenames in os.walk(path): - for filename in filenames: - if os.path.splitext(filename.lower())[1] in valid_extensions: - FontEngine.instance().register_font(os.path.join(dirpath, filename)) - -# auto-register known plugins and fonts -register_plugins() -register_fonts() diff --git a/bindings/python/mapnik/printing.py b/bindings/python/mapnik/printing.py deleted file mode 100644 index e61f7c0ab..000000000 --- a/bindings/python/mapnik/printing.py +++ /dev/null @@ -1,1027 +0,0 @@ -# -*- coding: utf-8 -*- - -"""Mapnik classes to assist in creating printable maps - -basic usage is along the lines of - -import mapnik - -page = mapnik.printing.PDFPrinter() -m = mapnik.Map(100,100) -mapnik.load_map(m, "my_xml_map_description", True) -m.zoom_all() -page.render_map(m,"my_output_file.pdf") - -see the documentation of mapnik.printing.PDFPrinter() for options - -""" -from __future__ import absolute_import - -from . import render, Map, Box2d, Layer, Feature, Projection, Coord, Style, Geometry -import math -import os -import tempfile - -try: - import cairo - HAS_PYCAIRO_MODULE = True -except ImportError: - HAS_PYCAIRO_MODULE = False - -try: - import pangocairo - import pango - HAS_PANGOCAIRO_MODULE = True -except ImportError: - HAS_PANGOCAIRO_MODULE = False - -try: - import pyPdf - HAS_PYPDF = True -except ImportError: - HAS_PYPDF = False - -class centering: - """Style of centering to use with the map, the default is constrained - - none: map will be placed flush with the margin/box in the top left corner - constrained: map will be centered on the most constrained axis (for a portrait page - and a square map this will be horizontally) - unconstrained: map will be centered on the unconstrained axis - vertical: - horizontal: - both: - """ - none=0 - constrained=1 - unconstrained=2 - vertical=3 - horizontal=4 - both=5 - -"""Some predefined page sizes custom sizes can also be passed -a tuple of the page width and height in meters""" -pagesizes = { - "a0": (0.841000,1.189000), - "a0l": (1.189000,0.841000), - "b0": (1.000000,1.414000), - "b0l": (1.414000,1.000000), - "c0": (0.917000,1.297000), - "c0l": (1.297000,0.917000), - "a1": (0.594000,0.841000), - "a1l": (0.841000,0.594000), - "b1": (0.707000,1.000000), - "b1l": (1.000000,0.707000), - "c1": (0.648000,0.917000), - "c1l": (0.917000,0.648000), - "a2": (0.420000,0.594000), - "a2l": (0.594000,0.420000), - "b2": (0.500000,0.707000), - "b2l": (0.707000,0.500000), - "c2": (0.458000,0.648000), - "c2l": (0.648000,0.458000), - "a3": (0.297000,0.420000), - "a3l": (0.420000,0.297000), - "b3": (0.353000,0.500000), - "b3l": (0.500000,0.353000), - "c3": (0.324000,0.458000), - "c3l": (0.458000,0.324000), - "a4": (0.210000,0.297000), - "a4l": (0.297000,0.210000), - "b4": (0.250000,0.353000), - "b4l": (0.353000,0.250000), - "c4": (0.229000,0.324000), - "c4l": (0.324000,0.229000), - "a5": (0.148000,0.210000), - "a5l": (0.210000,0.148000), - "b5": (0.176000,0.250000), - "b5l": (0.250000,0.176000), - "c5": (0.162000,0.229000), - "c5l": (0.229000,0.162000), - "a6": (0.105000,0.148000), - "a6l": (0.148000,0.105000), - "b6": (0.125000,0.176000), - "b6l": (0.176000,0.125000), - "c6": (0.114000,0.162000), - "c6l": (0.162000,0.114000), - "a7": (0.074000,0.105000), - "a7l": (0.105000,0.074000), - "b7": (0.088000,0.125000), - "b7l": (0.125000,0.088000), - "c7": (0.081000,0.114000), - "c7l": (0.114000,0.081000), - "a8": (0.052000,0.074000), - "a8l": (0.074000,0.052000), - "b8": (0.062000,0.088000), - "b8l": (0.088000,0.062000), - "c8": (0.057000,0.081000), - "c8l": (0.081000,0.057000), - "a9": (0.037000,0.052000), - "a9l": (0.052000,0.037000), - "b9": (0.044000,0.062000), - "b9l": (0.062000,0.044000), - "c9": (0.040000,0.057000), - "c9l": (0.057000,0.040000), - "a10": (0.026000,0.037000), - "a10l": (0.037000,0.026000), - "b10": (0.031000,0.044000), - "b10l": (0.044000,0.031000), - "c10": (0.028000,0.040000), - "c10l": (0.040000,0.028000), - "letter": (0.216,0.279), - "letterl": (0.279,0.216), - "legal": (0.216,0.356), - "legall": (0.356,0.216), -} -"""size of a pt in meters""" -pt_size=0.0254/72.0 - -def m2pt(x): - """convert distance from meters to points""" - return x/pt_size - -def pt2m(x): - """convert distance from points to meters""" - return x*pt_size - -def m2in(x): - """convert distance from meters to inches""" - return x/0.0254 - -def m2px(x,resolution): - """convert distance from meters to pixels at the given resolution in DPI/PPI""" - return m2in(x)*resolution - -class resolutions: - """some predefined resolutions in DPI""" - dpi72=72 - dpi150=150 - dpi300=300 - dpi600=600 - -def any_scale(scale): - """Scale helper function that allows any scale""" - return scale - -def sequence_scale(scale,scale_sequence): - """Default scale helper, this rounds scale to a 'sensible' value""" - factor = math.floor(math.log10(scale)) - norm = scale/(10**factor) - - for s in scale_sequence: - if norm <= s: - return s*10**factor - return scale_sequence[0]*10**(factor+1) - -def default_scale(scale): - """Default scale helper, this rounds scale to a 'sensible' value""" - return sequence_scale(scale, (1,1.25,1.5,1.75,2,2.5,3,4,5,6,7.5,8,9,10)) - -def deg_min_sec_scale(scale): - for x in (1.0/3600, - 2.0/3600, - 5.0/3600, - 10.0/3600, - 30.0/3600, - 1.0/60, - 2.0/60, - 5.0/60, - 10.0/60, - 30.0/60, - 1, - 2, - 5, - 10, - 30, - 60 - ): - if scale < x: - return x - else: - return x - -def format_deg_min_sec(value): - deg = math.floor(value) - min = math.floor((value-deg)/(1.0/60)) - sec = int((value - deg*1.0/60)/1.0/3600) - return "%d°%d'%d\"" % (deg,min,sec) - -def round_grid_generator(first,last,step): - val = (math.floor(first / step) + 1) * step - yield val - while val < last: - val += step - yield val - - -def convert_pdf_pages_to_layers(filename,output_name=None,layer_names=(),reverse_all_but_last=True): - """ - opens the given multipage PDF and converts each page to be a layer in a single page PDF - layer_names should be a sequence of the user visible names of the layers, if not given - or if shorter than num pages generic names will be given to the unnamed layers - - if output_name is not provided a temporary file will be used for the conversion which - will then be copied back over the source file. - - requires pyPdf >= 1.13 to be available""" - - - if not HAS_PYPDF: - raise Exception("pyPdf Not available") - - infile = file(filename, 'rb') - if output_name: - outfile = file(output_name, 'wb') - else: - (outfd,outfilename) = tempfile.mkstemp(dir=os.path.dirname(filename)) - outfile = os.fdopen(outfd,'wb') - - i = pyPdf.PdfFileReader(infile) - o = pyPdf.PdfFileWriter() - - template_page_size = i.pages[0].mediaBox - op = o.addBlankPage(width=template_page_size.getWidth(),height=template_page_size.getHeight()) - - contentkey = pyPdf.generic.NameObject('/Contents') - resourcekey = pyPdf.generic.NameObject('/Resources') - propertieskey = pyPdf.generic.NameObject('/Properties') - op[contentkey] = pyPdf.generic.ArrayObject() - op[resourcekey] = pyPdf.generic.DictionaryObject() - properties = pyPdf.generic.DictionaryObject() - ocgs = pyPdf.generic.ArrayObject() - - for (i, p) in enumerate(i.pages): - # first start an OCG for the layer - ocgname = pyPdf.generic.NameObject('/oc%d' % i) - ocgstart = pyPdf.generic.DecodedStreamObject() - ocgstart._data = "/OC %s BDC\n" % ocgname - ocgend = pyPdf.generic.DecodedStreamObject() - ocgend._data = "EMC\n" - if isinstance(p['/Contents'],pyPdf.generic.ArrayObject): - p[pyPdf.generic.NameObject('/Contents')].insert(0,ocgstart) - p[pyPdf.generic.NameObject('/Contents')].append(ocgend) - else: - p[pyPdf.generic.NameObject('/Contents')] = pyPdf.generic.ArrayObject((ocgstart,p['/Contents'],ocgend)) - - op.mergePage(p) - - ocg = pyPdf.generic.DictionaryObject() - ocg[pyPdf.generic.NameObject('/Type')] = pyPdf.generic.NameObject('/OCG') - if len(layer_names) > i: - ocg[pyPdf.generic.NameObject('/Name')] = pyPdf.generic.TextStringObject(layer_names[i]) - else: - ocg[pyPdf.generic.NameObject('/Name')] = pyPdf.generic.TextStringObject('Layer %d' % (i+1)) - indirect_ocg = o._addObject(ocg) - properties[ocgname] = indirect_ocg - ocgs.append(indirect_ocg) - - op[resourcekey][propertieskey] = o._addObject(properties) - - ocproperties = pyPdf.generic.DictionaryObject() - ocproperties[pyPdf.generic.NameObject('/OCGs')] = ocgs - defaultview = pyPdf.generic.DictionaryObject() - defaultview[pyPdf.generic.NameObject('/Name')] = pyPdf.generic.TextStringObject('Default') - defaultview[pyPdf.generic.NameObject('/BaseState ')] = pyPdf.generic.NameObject('/ON ') - defaultview[pyPdf.generic.NameObject('/ON')] = ocgs - if reverse_all_but_last: - defaultview[pyPdf.generic.NameObject('/Order')] = pyPdf.generic.ArrayObject(reversed(ocgs[:-1])) - defaultview[pyPdf.generic.NameObject('/Order')].append(ocgs[-1]) - else: - defaultview[pyPdf.generic.NameObject('/Order')] = pyPdf.generic.ArrayObject(reversed(ocgs)) - defaultview[pyPdf.generic.NameObject('/OFF')] = pyPdf.generic.ArrayObject() - - ocproperties[pyPdf.generic.NameObject('/D')] = o._addObject(defaultview) - - o._root.getObject()[pyPdf.generic.NameObject('/OCProperties')] = o._addObject(ocproperties) - - o.write(outfile) - - outfile.close() - infile.close() - - if not output_name: - os.rename(outfilename, filename) - -class PDFPrinter: - """Main class for creating PDF print outs, basically contruct an instance - with appropriate options and then call render_map with your mapnik map - """ - def __init__(self, - pagesize=pagesizes["a4"], - margin=0.005, - box=None, - percent_box=None, - scale=default_scale, - resolution=resolutions.dpi72, - preserve_aspect=True, - centering=centering.constrained, - is_latlon=False, - use_ocg_layers=False): - """Creates a cairo surface and context to render a PDF with. - - pagesize: tuple of page size in meters, see predefined sizes in pagessizes dict (default a4) - margin: page margin in meters (default 0.01) - box: box within the page to render the map into (will not render over margin). This should be - a Mapnik Box2d object. Default is the full page within the margin - percent_box: as per box, but specified as a percent (0->1) of the full page size. If both box - and percent_box are specified percent_box will be used. - scale: scale helper to use when rounding the map scale. This should be a function that - takes a single float and returns a float which is at least as large as the value - passed in. This is a 1:x scale. - resolution: the resolution to render non vector elements at (in DPI), defaults to 72 DPI - preserve_aspect: whether to preserve map aspect ratio. This defaults to True and it - is recommended you do not change it unless you know what you are doing - scales and so on will not work if this is False. - centering: Centering rules for maps where the scale rounding has reduced the map size. - This should be a value from the centering class. The default is to center on the - maps constrained axis, typically this will be horizontal for portrait pages and - vertical for landscape pages. - is_latlon: Is the map in lat lon degrees. If true magic anti meridian logic is enabled - use_ocg_layers: Create OCG layers in the PDF, requires pyPdf >= 1.13 - """ - self._pagesize = pagesize - self._margin = margin - self._box = box - self._scale = scale - self._resolution = resolution - self._preserve_aspect = preserve_aspect - self._centering = centering - self._is_latlon = is_latlon - self._use_ocg_layers = use_ocg_layers - - self._s = None - self._layer_names = [] - self._filename = None - - self.map_box = None - self.scale = None - - # don't both to round the scale if they are not preserving the aspect ratio - if not preserve_aspect: - self._scale = any_scale - - if percent_box: - self._box = Box2d(percent_box[0]*pagesize[0],percent_box[1]*pagesize[1], - percent_box[2]*pagesize[0],percent_box[3]*pagesize[1]) - - if not HAS_PYCAIRO_MODULE: - raise Exception("PDF rendering only available when pycairo is available") - - self.font_name = "DejaVu Sans" - - def finish(self): - if self._s: - self._s.finish() - self._s = None - - if self._use_ocg_layers: - convert_pdf_pages_to_layers(self._filename,layer_names=self._layer_names + ["Legend and Information"],reverse_all_but_last=True) - - def add_geospatial_pdf_header(self,m,filename,epsg=None,wkt=None): - """ Postprocessing step to add geospatial PDF information to PDF file as per - PDF standard 1.7 extension level 3 (also in draft PDF v2 standard at time of writing) - - one of either the epsg code or wkt text for the projection must be provided - - Should be called *after* the page has had .finish() called""" - if HAS_PYPDF and (epsg or wkt): - infile=file(filename,'rb') - (outfd,outfilename) = tempfile.mkstemp(dir=os.path.dirname(filename)) - outfile = os.fdopen(outfd,'wb') - - i=pyPdf.PdfFileReader(infile) - o=pyPdf.PdfFileWriter() - - # preserve OCProperties at document root if we have one - if i.trailer['/Root'].has_key(pyPdf.generic.NameObject('/OCProperties')): - o._root.getObject()[pyPdf.generic.NameObject('/OCProperties')] = i.trailer['/Root'].getObject()[pyPdf.generic.NameObject('/OCProperties')] - - for p in i.pages: - gcs = pyPdf.generic.DictionaryObject() - gcs[pyPdf.generic.NameObject('/Type')]=pyPdf.generic.NameObject('/PROJCS') - if epsg: - gcs[pyPdf.generic.NameObject('/EPSG')]=pyPdf.generic.NumberObject(int(epsg)) - if wkt: - gcs[pyPdf.generic.NameObject('/WKT')]=pyPdf.generic.TextStringObject(wkt) - - measure = pyPdf.generic.DictionaryObject() - measure[pyPdf.generic.NameObject('/Type')]=pyPdf.generic.NameObject('/Measure') - measure[pyPdf.generic.NameObject('/Subtype')]=pyPdf.generic.NameObject('/GEO') - measure[pyPdf.generic.NameObject('/GCS')]=gcs - bounds=pyPdf.generic.ArrayObject() - for x in (0.0,0.0,0.0,1.0,1.0,1.0,1.0,0.0): - bounds.append(pyPdf.generic.FloatObject(str(x))) - measure[pyPdf.generic.NameObject('/Bounds')]=bounds - measure[pyPdf.generic.NameObject('/LPTS')]=bounds - gpts=pyPdf.generic.ArrayObject() - - proj=Projection(m.srs) - env=m.envelope() - for x in ((env.minx, env.miny), (env.minx, env.maxy), (env.maxx, env.maxy), (env.maxx, env.miny)): - latlon_corner=proj.inverse(Coord(*x)) - # these are in lat,lon order according to the standard - gpts.append(pyPdf.generic.FloatObject(str(latlon_corner.y))) - gpts.append(pyPdf.generic.FloatObject(str(latlon_corner.x))) - measure[pyPdf.generic.NameObject('/GPTS')]=gpts - - vp=pyPdf.generic.DictionaryObject() - vp[pyPdf.generic.NameObject('/Type')]=pyPdf.generic.NameObject('/Viewport') - bbox=pyPdf.generic.ArrayObject() - - for x in self.map_box: - bbox.append(pyPdf.generic.FloatObject(str(x))) - vp[pyPdf.generic.NameObject('/BBox')]=bbox - vp[pyPdf.generic.NameObject('/Measure')]=measure - - vpa = pyPdf.generic.ArrayObject() - vpa.append(vp) - p[pyPdf.generic.NameObject('/VP')]=vpa - o.addPage(p) - - o.write(outfile) - infile=None - outfile.close() - os.rename(outfilename,filename) - - - def get_context(self): - """allow access so that extra 'bits' can be rendered to the page directly""" - return cairo.Context(self._s) - - def get_width(self): - return self._pagesize[0] - - def get_height(self): - return self._pagesize[1] - - def get_margin(self): - return self._margin - - def write_text(self,ctx,text,box_width=None,size=10, fill_color=(0.0, 0.0, 0.0), alignment=None): - if HAS_PANGOCAIRO_MODULE: - (attr,t,accel) = pango.parse_markup(text) - pctx = pangocairo.CairoContext(ctx) - l = pctx.create_layout() - l.set_attributes(attr) - fd = pango.FontDescription("%s %d" % (self.font_name,size)) - l.set_font_description(fd) - if box_width: - l.set_width(int(box_width*pango.SCALE)) - if alignment: - l.set_alignment(alignment) - pctx.update_layout(l) - l.set_text(t) - pctx.set_source_rgb(*fill_color) - pctx.show_layout(l) - return l.get_pixel_extents()[0] - - else: - ctx.rel_move_to(0,size) - ctx.select_font_face(self.font_name, cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL) - ctx.set_font_size(size) - ctx.show_text(text) - ctx.rel_move_to(0,size) - return (0,0,len(text)*size,size) - - def _get_context(self): - if HAS_PANGOCAIRO_MODULE: - return - elif HAS_PYCAIRO_MODULE: - return cairo.Context(self._s) - return None - - def _get_render_area(self): - """return a bounding box with the area of the page we are allowed to render out map to - in page coordinates (i.e. meters) - """ - # take off our page margins - render_area = Box2d(self._margin,self._margin,self._pagesize[0]-self._margin,self._pagesize[1]-self._margin) - - #then if user specified a box to render get intersection with that - if self._box: - return render_area.intersect(self._box) - - return render_area - - def _get_render_area_size(self): - """Get the width and height (in meters) of the area we can render the map to, returned as a tuple""" - render_area = self._get_render_area() - return (render_area.width(),render_area.height()) - - def _is_h_contrained(self,m): - """Test if the map size is constrained on the horizontal or vertical axes""" - available_area = self._get_render_area_size() - map_aspect = m.envelope().width()/m.envelope().height() - page_aspect = available_area[0]/available_area[1] - - return map_aspect > page_aspect - - def _get_meta_info_corner(self,render_size,m): - """Get the corner (in page coordinates) of a possibly - sensible place to render metadata such as a legend or scale""" - (x,y) = self._get_render_corner(render_size,m) - if self._is_h_contrained(m): - y += render_size[1]+0.005 - x = self._margin - else: - x += render_size[0]+0.005 - y = self._margin - - return (x,y) - - def _get_render_corner(self,render_size,m): - """Get the corner of the box we should render our map into""" - available_area = self._get_render_area() - - x=available_area[0] - y=available_area[1] - - h_is_contrained = self._is_h_contrained(m) - - if (self._centering == centering.both or - self._centering == centering.horizontal or - (self._centering == centering.constrained and h_is_contrained) or - (self._centering == centering.unconstrained and not h_is_contrained)): - x+=(available_area.width()-render_size[0])/2 - - if (self._centering == centering.both or - self._centering == centering.vertical or - (self._centering == centering.constrained and not h_is_contrained) or - (self._centering == centering.unconstrained and h_is_contrained)): - y+=(available_area.height()-render_size[1])/2 - return (x,y) - - def _get_map_pixel_size(self, width_page_m, height_page_m): - """for a given map size in paper coordinates return a tuple of the map 'pixel' size we - should create at the defined resolution""" - return (int(m2px(width_page_m,self._resolution)), int(m2px(height_page_m,self._resolution))) - - def render_map(self,m, filename): - """Render the given map to filename""" - - # store this for later so we can post process the PDF - self._filename = filename - - # work out the best scale to render out map at given the available space - (eff_width,eff_height) = self._get_render_area_size() - map_aspect = m.envelope().width()/m.envelope().height() - page_aspect = eff_width/eff_height - - scalex=m.envelope().width()/eff_width - scaley=m.envelope().height()/eff_height - - scale=max(scalex,scaley) - - rounded_mapscale=self._scale(scale) - scalefactor = scale/rounded_mapscale - mapw=eff_width*scalefactor - maph=eff_height*scalefactor - if self._preserve_aspect: - if map_aspect > page_aspect: - maph=mapw*(1/map_aspect) - else: - mapw=maph*map_aspect - - # set the map size so that raster elements render at the correct resolution - m.resize(*self._get_map_pixel_size(mapw,maph)) - # calculate the translation for the map starting point - (tx,ty) = self._get_render_corner((mapw,maph),m) - - # create our cairo surface and context and then render the map into it - self._s = cairo.PDFSurface(filename, m2pt(self._pagesize[0]),m2pt(self._pagesize[1])) - ctx=cairo.Context(self._s) - - for l in m.layers: - # extract the layer names for naming layers if we use OCG - self._layer_names.append(l.name) - - layer_map = Map(m.width,m.height,m.srs) - layer_map.layers.append(l) - for s in l.styles: - layer_map.append_style(s,m.find_style(s)) - layer_map.zoom_to_box(m.envelope()) - - def render_map(): - ctx.save() - ctx.translate(m2pt(tx),m2pt(ty)) - #cairo defaults to 72dpi - ctx.scale(72.0/self._resolution,72.0/self._resolution) - render(layer_map, ctx) - ctx.restore() - - # antimeridian - render_map() - if self._is_latlon and (m.envelope().minx < -180 or m.envelope().maxx > 180): - old_env = m.envelope() - if m.envelope().minx < -180: - delta = 360 - else: - delta = -360 - m.zoom_to_box(Box2d(old_env.minx+delta,old_env.miny,old_env.maxx+delta,old_env.maxy)) - render_map() - # restore the original env - m.zoom_to_box(old_env) - - if self._use_ocg_layers: - self._s.show_page() - - self.scale = rounded_mapscale - self.map_box = Box2d(tx,ty,tx+mapw,ty+maph) - - def render_on_map_lat_lon_grid(self,m,dec_degrees=True): - # don't render lat_lon grid if we are already in latlon - if self._is_latlon: - return - p2=Projection(m.srs) - - latlon_bounds = p2.inverse(m.envelope()) - if p2.inverse(m.envelope().center()).x > latlon_bounds.maxx: - latlon_bounds = Box2d(latlon_bounds.maxx,latlon_bounds.miny,latlon_bounds.minx+360,latlon_bounds.maxy) - - if p2.inverse(m.envelope().center()).y > latlon_bounds.maxy: - latlon_bounds = Box2d(latlon_bounds.miny,latlon_bounds.maxy,latlon_bounds.maxx,latlon_bounds.miny+360) - - latlon_mapwidth = latlon_bounds.width() - # render an extra 20% so we generally won't miss the ends of lines - latlon_buffer = 0.2*latlon_mapwidth - if dec_degrees: - latlon_divsize = default_scale(latlon_mapwidth/7.0) - else: - latlon_divsize = deg_min_sec_scale(latlon_mapwidth/7.0) - latlon_interpsize = latlon_mapwidth/m.width - - self._render_lat_lon_axis(m,p2,latlon_bounds.minx,latlon_bounds.maxx,latlon_bounds.miny,latlon_bounds.maxy,latlon_buffer,latlon_interpsize,latlon_divsize,dec_degrees,True) - self._render_lat_lon_axis(m,p2,latlon_bounds.miny,latlon_bounds.maxy,latlon_bounds.minx,latlon_bounds.maxx,latlon_buffer,latlon_interpsize,latlon_divsize,dec_degrees,False) - - def _render_lat_lon_axis(self,m,p2,x1,x2,y1,y2,latlon_buffer,latlon_interpsize,latlon_divsize,dec_degrees,is_x_axis): - ctx=cairo.Context(self._s) - ctx.set_source_rgb(1,0,0) - ctx.set_line_width(1) - latlon_labelsize = 6 - - ctx.translate(m2pt(self.map_box.minx),m2pt(self.map_box.miny)) - ctx.rectangle(0,0,m2pt(self.map_box.width()),m2pt(self.map_box.height())) - ctx.clip() - - ctx.select_font_face("DejaVu", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL) - ctx.set_font_size(latlon_labelsize) - - box_top = self.map_box.height() - if not is_x_axis: - ctx.translate(m2pt(self.map_box.width()/2),m2pt(self.map_box.height()/2)) - ctx.rotate(-math.pi/2) - ctx.translate(-m2pt(self.map_box.height()/2),-m2pt(self.map_box.width()/2)) - box_top = self.map_box.width() - - for xvalue in round_grid_generator(x1 - latlon_buffer,x2 + latlon_buffer,latlon_divsize): - yvalue = y1 - latlon_buffer - start_cross = None - end_cross = None - while yvalue < y2+latlon_buffer: - if is_x_axis: - start = m.view_transform().forward(p2.forward(Coord(xvalue,yvalue))) - else: - temp = m.view_transform().forward(p2.forward(Coord(yvalue,xvalue))) - start = Coord(m2pt(self.map_box.height())-temp.y,temp.x) - yvalue += latlon_interpsize - if is_x_axis: - end = m.view_transform().forward(p2.forward(Coord(xvalue,yvalue))) - else: - temp = m.view_transform().forward(p2.forward(Coord(yvalue,xvalue))) - end = Coord(m2pt(self.map_box.height())-temp.y,temp.x) - - ctx.move_to(start.x,start.y) - ctx.line_to(end.x,end.y) - ctx.stroke() - - if cmp(start.y, 0) != cmp(end.y,0): - start_cross = end.x - if cmp(start.y,m2pt(self.map_box.height())) != cmp(end.y, m2pt(self.map_box.height())): - end_cross = end.x - - if dec_degrees: - line_text = "%g" % (xvalue) - else: - line_text = format_deg_min_sec(xvalue) - if start_cross: - ctx.move_to(start_cross+2,latlon_labelsize) - ctx.show_text(line_text) - if end_cross: - ctx.move_to(end_cross+2,m2pt(box_top)-2) - ctx.show_text(line_text) - - def render_on_map_scale(self,m): - (div_size,page_div_size) = self._get_sensible_scalebar_size(m) - - first_value_x = (math.floor(m.envelope().minx / div_size) + 1) * div_size - first_value_x_percent = (first_value_x-m.envelope().minx)/m.envelope().width() - self._render_scale_axis(first_value_x,first_value_x_percent,self.map_box.minx,self.map_box.maxx,page_div_size,div_size,self.map_box.miny,self.map_box.maxy,True) - - first_value_y = (math.floor(m.envelope().miny / div_size) + 1) * div_size - first_value_y_percent = (first_value_y-m.envelope().miny)/m.envelope().height() - self._render_scale_axis(first_value_y,first_value_y_percent,self.map_box.miny,self.map_box.maxy,page_div_size,div_size,self.map_box.minx,self.map_box.maxx,False) - - if self._use_ocg_layers: - self._s.show_page() - self._layer_names.append("Coordinate Grid Overlay") - - def _get_sensible_scalebar_size(self,m,width=-1): - # aim for about 8 divisions across the map - # also make sure we can fit the bar with in page area width if specified - div_size = sequence_scale(m.envelope().width()/8, [1,2,5]) - page_div_size = self.map_box.width()*div_size/m.envelope().width() - while width > 0 and page_div_size > width: - div_size /=2 - page_div_size /= 2 - return (div_size,page_div_size) - - def _render_box(self,ctx,x,y,w,h,text=None,stroke_color=(0,0,0),fill_color=(0,0,0)): - ctx.set_line_width(1) - ctx.set_source_rgb(*fill_color) - ctx.rectangle(x,y,w,h) - ctx.fill() - - ctx.set_source_rgb(*stroke_color) - ctx.rectangle(x,y,w,h) - ctx.stroke() - - if text: - ctx.move_to(x+1,y) - self.write_text(ctx,text,fill_color=[1-z for z in fill_color],size=h-2) - - def _render_scale_axis(self,first,first_percent,start,end,page_div_size,div_size,boundary_start,boundary_end,is_x_axis): - prev = start - text = None - fill=(0,0,0) - border_size=8 - value = first_percent * (end-start) + start - label_value = first-div_size - if self._is_latlon and label_value < -180: - label_value += 360 - - ctx=cairo.Context(self._s) - - if not is_x_axis: - ctx.translate(m2pt(self.map_box.center().x),m2pt(self.map_box.center().y)) - ctx.rotate(-math.pi/2) - ctx.translate(-m2pt(self.map_box.center().y),-m2pt(self.map_box.center().x)) - - while value < end: - ctx.move_to(m2pt(value),m2pt(boundary_start)) - ctx.line_to(m2pt(value),m2pt(boundary_end)) - ctx.set_source_rgb(0.5,0.5,0.5) - ctx.set_line_width(1) - ctx.stroke() - - for bar in (m2pt(boundary_start)-border_size,m2pt(boundary_end)): - self._render_box(ctx,m2pt(prev),bar,m2pt(value-prev),border_size,text,fill_color=fill) - - prev = value - value+=page_div_size - fill = [1-z for z in fill] - label_value += div_size - if self._is_latlon and label_value > 180: - label_value -= 360 - text = "%d" % label_value - else: - for bar in (m2pt(boundary_start)-border_size,m2pt(boundary_end)): - self._render_box(ctx,m2pt(prev),bar,m2pt(end-prev),border_size,fill_color=fill) - - - def render_scale(self,m,ctx=None,width=0.05): - """ m: map to render scale for - ctx: A cairo context to render the scale to. If this is None (the default) then - automatically create a context and choose the best location for the scale bar. - width: Width of area available to render scale bar in (in m) - - will return the size of the rendered scale block in pts - """ - - (w,h) = (0,0) - - # don't render scale if we are lat lon - # dont report scale if we have warped the aspect ratio - if self._preserve_aspect and not self._is_latlon: - bar_size=8.0 - box_count=3 - if ctx is None: - ctx=cairo.Context(self._s) - (tx,ty) = self._get_meta_info_corner((self.map_box.width(),self.map_box.height()),m) - ctx.translate(tx,ty) - - (div_size,page_div_size) = self._get_sensible_scalebar_size(m, width/box_count) - - - div_unit = "m" - if div_size > 1000: - div_size /= 1000 - div_unit = "km" - - text = "0%s" % div_unit - ctx.save() - if width > 0: - ctx.translate(m2pt(width-box_count*page_div_size)/2,0) - for ii in range(box_count): - fill=(ii%2,)*3 - self._render_box(ctx, m2pt(ii*page_div_size), h, m2pt(page_div_size), bar_size, text, fill_color=fill) - fill = [1-z for z in fill] - text = "%g%s" % ((ii+1)*div_size,div_unit) - #else: - # self._render_box(ctx, m2pt(box_count*page_div_size), h, m2pt(page_div_size), bar_size, text, fill_color=(1,1,1), stroke_color=(1,1,1)) - w = (box_count)*page_div_size - h += bar_size - ctx.restore() - - if width > 0: - box_width=m2pt(width) - else: - box_width = None - - font_size=6 - ctx.move_to(0,h) - if HAS_PANGOCAIRO_MODULE: - alignment = pango.ALIGN_CENTER - else: - alignment = None - - text_ext=self.write_text(ctx,"Scale 1:%d" % self.scale,box_width=box_width,size=font_size, alignment=alignment) - h+=text_ext[3]+2 - - return (w,h) - - def render_legend(self,m, page_break=False, ctx=None, collumns=1,width=None, height=None, item_per_rule=False, attribution={}, legend_item_box_size=(0.015,0.0075)): - """ m: map to render legend for - ctx: A cairo context to render the legend to. If this is None (the default) then - automatically create a context and choose the best location for the legend. - width: Width of area available to render legend in (in m) - page_break: move to next page if legen over flows this one - collumns: number of collumns available in legend box - attribution: additional text that will be rendered in gray under the layer name. keyed by layer name - legend_item_box_size: two tuple with width and height of legend item box size in meters - - will return the size of the rendered block in pts - """ - - (w,h) = (0,0) - if self._s: - if ctx is None: - ctx=cairo.Context(self._s) - (tx,ty) = self._get_meta_info_corner((self.map_box.width(),self.map_box.height()),m) - ctx.translate(m2pt(tx),m2pt(ty)) - width = self._pagesize[0]-2*tx - height = self._pagesize[1]-self._margin-ty - - x=0 - y=0 - if width: - cwidth = width/collumns - w=m2pt(width) - else: - cwidth = None - current_collumn = 0 - - processed_layers = [] - for l in reversed(m.layers): - have_layer_header = False - added_styles={} - layer_title = l.name - if layer_title in processed_layers: - continue - processed_layers.append(layer_title) - - # check through the features to find which combinations of styles are active - # for each unique combination add a legend entry - for f in l.datasource.all_features(): - if f.num_geometries() > 0: - active_rules = [] - rule_text = "" - for s in l.styles: - st = m.find_style(s) - for r in st.rules: - # we need to do the scale test here as well so we don't - # add unused scale rules to the legend description - if ((not r.filter) or r.filter.evaluate(f) == '1') and \ - r.min_scale <= m.scale_denominator() and m.scale_denominator() < r.max_scale: - active_rules.append((s,r.name)) - if r.filter and str(r.filter) != "true": - if len(rule_text) > 0: - rule_text += " AND " - if r.name: - rule_text += r.name - else: - rule_text += str(r.filter) - active_rules = tuple(active_rules) - if added_styles.has_key(active_rules): - continue - - added_styles[active_rules] = (f,rule_text) - if not item_per_rule: - break - else: - added_styles[l] = (None,None) - - legend_items = added_styles.keys() - legend_items.sort() - for li in legend_items: - if True: - (f,rule_text) = added_styles[li] - - - legend_map_size = (int(m2pt(legend_item_box_size[0])),int(m2pt(legend_item_box_size[1]))) - lemap=Map(legend_map_size[0],legend_map_size[1],srs=m.srs) - if m.background: - lemap.background = m.background - # the buffer is needed to ensure that text labels that overflow the edge of the - # map still render for the legend - lemap.buffer_size=1000 - for s in l.styles: - sty=m.find_style(s) - lestyle = Style() - for r in sty.rules: - for sym in r.symbols: - try: - sym.avoid_edges=False - except: - print "**** Cant set avoid edges for rule", r.name - if r.min_scale <= m.scale_denominator() and m.scale_denominator() < r.max_scale: - lerule = r - lerule.min_scale = 0 - lerule.max_scale = float("inf") - lestyle.rules.append(lerule) - lemap.append_style(s,lestyle) - - ds = MemoryDatasource() - if f is None: - ds=l.datasource - layer_srs = l.srs - elif f.envelope().width() == 0: - ds.add_feature(Feature(f.id(),Geometry2d.from_wkt("POINT(0 0)"),**f.attributes)) - lemap.zoom_to_box(Box2d(-1,-1,1,1)) - layer_srs = m.srs - else: - ds.add_feature(f) - layer_srs = l.srs - - lelayer = Layer("LegendLayer",layer_srs) - lelayer.datasource = ds - for s in l.styles: - lelayer.styles.append(s) - lemap.layers.append(lelayer) - - if f is None or f.envelope().width() != 0: - lemap.zoom_all() - lemap.zoom(1.1) - - item_size = legend_map_size[1] - if not have_layer_header: - item_size += 8 - - if y+item_size > m2pt(height): - current_collumn += 1 - y=0 - if current_collumn >= collumns: - if page_break: - self._s.show_page() - x=0 - current_collumn = 0 - else: - break - - if not have_layer_header and item_per_rule: - ctx.move_to(x+m2pt(current_collumn*cwidth),y) - e=self.write_text(ctx, l.name, m2pt(cwidth), 8) - y+=e[3]+2 - have_layer_header = True - ctx.save() - ctx.translate(x+m2pt(current_collumn*cwidth),y) - #extra save around map render as it sets up a clip box and doesn't clear it - ctx.save() - render(lemap, ctx) - ctx.restore() - - ctx.rectangle(0,0,*legend_map_size) - ctx.set_source_rgb(0.5,0.5,0.5) - ctx.set_line_width(1) - ctx.stroke() - ctx.restore() - - ctx.move_to(x+legend_map_size[0]+m2pt(current_collumn*cwidth)+2,y) - legend_entry_size = legend_map_size[1] - legend_text_size = 0 - if not item_per_rule: - rule_text = layer_title - if rule_text: - e=self.write_text(ctx, rule_text, m2pt(cwidth-legend_item_box_size[0]-0.005), 6) - legend_text_size += e[3] - ctx.rel_move_to(0,e[3]) - if attribution.has_key(layer_title): - e=self.write_text(ctx, attribution[layer_title], m2pt(cwidth-legend_item_box_size[0]-0.005), 6, fill_color=(0.5,0.5,0.5)) - legend_text_size += e[3] - - if legend_text_size > legend_entry_size: - legend_entry_size=legend_text_size - - y+=legend_entry_size +2 - if y > h: - h = y - return (w,h) diff --git a/bindings/python/mapnik2/__init__.py b/bindings/python/mapnik2/__init__.py deleted file mode 100644 index 57b461ae0..000000000 --- a/bindings/python/mapnik2/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -# -# This file is part of Mapnik (C++/Python mapping toolkit) -# Copyright (C) 2014 Artem Pavlenko -# -# Mapnik 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 any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# - -# mapnik2 module (Deprecated) - -import warnings -from mapnik import * -warnings.simplefilter("default") -msg=""" mapnik2 module has been deprecated, - please use 'import mapnik' """ -warnings.warn(msg, DeprecationWarning) diff --git a/bindings/python/mapnik_color.cpp b/bindings/python/mapnik_color.cpp deleted file mode 100644 index 3e8df62f9..000000000 --- a/bindings/python/mapnik_color.cpp +++ /dev/null @@ -1,130 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include -#include "boost_std_shared_shim.hpp" - -// boost -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#pragma GCC diagnostic pop - -//mapnik -#include - - -using mapnik::color; - -struct color_pickle_suite : boost::python::pickle_suite -{ - static boost::python::tuple - getinitargs(const color& c) - { - using namespace boost::python; - return boost::python::make_tuple(c.red(),c.green(),c.blue(),c.alpha()); - } -}; - -void export_color () -{ - using namespace boost::python; - class_("Color", init( - ( arg("r"), arg("g"), arg("b"), arg("a") ), - "Creates a new color from its RGB components\n" - "and an alpha value.\n" - "All values between 0 and 255.\n") - ) - .def(init( - ( arg("r"), arg("g"), arg("b"), arg("a"), arg("premultiplied") ), - "Creates a new color from its RGB components\n" - "and an alpha value.\n" - "All values between 0 and 255.\n") - ) - .def(init( - ( arg("r"), arg("g"), arg("b") ), - "Creates a new color from its RGB components.\n" - "All values between 0 and 255.\n") - ) - .def(init( - ( arg("val") ), - "Creates a new color from an unsigned integer.\n" - "All values between 0 and 2^32-1\n") - ) - .def(init( - ( arg("val"), arg("premultiplied") ), - "Creates a new color from an unsigned integer.\n" - "All values between 0 and 2^32-1\n") - ) - .def(init( - ( arg("color_string") ), - "Creates a new color from its CSS string representation.\n" - "The string may be a CSS color name (e.g. 'blue')\n" - "or a hex color string (e.g. '#0000ff').\n") - ) - .def(init( - ( arg("color_string"), arg("premultiplied") ), - "Creates a new color from its CSS string representation.\n" - "The string may be a CSS color name (e.g. 'blue')\n" - "or a hex color string (e.g. '#0000ff').\n") - ) - .add_property("r", - &color::red, - &color::set_red, - "Gets or sets the red component.\n" - "The value is between 0 and 255.\n") - .add_property("g", - &color::green, - &color::set_green, - "Gets or sets the green component.\n" - "The value is between 0 and 255.\n") - .add_property("b", - &color::blue, - &color::set_blue, - "Gets or sets the blue component.\n" - "The value is between 0 and 255.\n") - .add_property("a", - &color::alpha, - &color::set_alpha, - "Gets or sets the alpha component.\n" - "The value is between 0 and 255.\n") - .def(self == self) - .def(self != self) - .def_pickle(color_pickle_suite()) - .def("__str__",&color::to_string) - .def("set_premultiplied",&color::set_premultiplied) - .def("get_premultiplied",&color::get_premultiplied) - .def("premultiply",&color::premultiply) - .def("demultiply",&color::demultiply) - .def("packed",&color::rgba) - .def("to_hex_string",&color::to_hex_string, - "Returns the hexadecimal representation of this color.\n" - "\n" - "Example:\n" - ">>> c = Color('blue')\n" - ">>> c.to_hex_string()\n" - "'#0000ff'\n") - ; -} diff --git a/bindings/python/mapnik_coord.cpp b/bindings/python/mapnik_coord.cpp deleted file mode 100644 index 40a41b739..000000000 --- a/bindings/python/mapnik_coord.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ -#include -#include "boost_std_shared_shim.hpp" - -// boost -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#pragma GCC diagnostic pop - - -// mapnik -#include - -using mapnik::coord; - -struct coord_pickle_suite : boost::python::pickle_suite -{ - static boost::python::tuple - getinitargs(const coord& c) - { - using namespace boost::python; - return boost::python::make_tuple(c.x,c.y); - } -}; - -void export_coord() -{ - using namespace boost::python; - class_ >("Coord",init( - // class docstring is in mapnik/__init__.py, class _Coord - (arg("x"), arg("y")), - "Constructs a new point with the given coordinates.\n") - ) - .def_pickle(coord_pickle_suite()) - .def_readwrite("x", &coord::x, - "Gets or sets the x/lon coordinate of the point.\n") - .def_readwrite("y", &coord::y, - "Gets or sets the y/lat coordinate of the point.\n") - .def(self == self) // __eq__ - .def(self + self) // __add__ - .def(self + float()) - .def(float() + self) - .def(self - self) // __sub__ - .def(self - float()) - .def(self * float()) //__mult__ - .def(float() * self) - .def(self / float()) // __div__ - ; -} diff --git a/bindings/python/mapnik_datasource.cpp b/bindings/python/mapnik_datasource.cpp deleted file mode 100644 index 35a7a09d2..000000000 --- a/bindings/python/mapnik_datasource.cpp +++ /dev/null @@ -1,217 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#include -#pragma GCC diagnostic pop - -// stl -#include - -// mapnik -#include -#include -#include -#include -#include - - -using mapnik::datasource; -using mapnik::memory_datasource; -using mapnik::layer_descriptor; -using mapnik::attribute_descriptor; -using mapnik::parameters; - -namespace -{ -//user-friendly wrapper that uses Python dictionary -using namespace boost::python; -std::shared_ptr create_datasource(dict const& d) -{ - mapnik::parameters params; - boost::python::list keys=d.keys(); - for (int i=0; i < len(keys); ++i) - { - std::string key = extract(keys[i]); - object obj = d[key]; - if (PyUnicode_Check(obj.ptr())) - { - PyObject* temp = PyUnicode_AsUTF8String(obj.ptr()); - if (temp) - { -#if PY_VERSION_HEX >= 0x03000000 - char* c_str = PyBytes_AsString(temp); -#else - char* c_str = PyString_AsString(temp); -#endif - params[key] = std::string(c_str); - Py_DecRef(temp); - } - continue; - } - - extract ex0(obj); - extract ex1(obj); - extract ex2(obj); - if (ex0.check()) - { - params[key] = ex0(); - } - else if (ex1.check()) - { - params[key] = ex1(); - } - else if (ex2.check()) - { - params[key] = ex2(); - } - } - - return mapnik::datasource_cache::instance().create(params); -} - -boost::python::dict describe(std::shared_ptr const& ds) -{ - boost::python::dict description; - mapnik::layer_descriptor ld = ds->get_descriptor(); - description["type"] = ds->type(); - description["name"] = ld.get_name(); - description["geometry_type"] = ds->get_geometry_type(); - description["encoding"] = ld.get_encoding(); - for (auto const& param : ld.get_extra_parameters()) - { - description[param.first] = param.second; - } - return description; -} - -boost::python::list fields(std::shared_ptr const& ds) -{ - boost::python::list flds; - if (ds) - { - layer_descriptor ld = ds->get_descriptor(); - std::vector const& desc_ar = ld.get_descriptors(); - std::vector::const_iterator it = desc_ar.begin(); - std::vector::const_iterator end = desc_ar.end(); - for (; it != end; ++it) - { - flds.append(it->get_name()); - } - } - return flds; -} -boost::python::list field_types(std::shared_ptr const& ds) -{ - boost::python::list fld_types; - if (ds) - { - layer_descriptor ld = ds->get_descriptor(); - std::vector const& desc_ar = ld.get_descriptors(); - std::vector::const_iterator it = desc_ar.begin(); - std::vector::const_iterator end = desc_ar.end(); - for (; it != end; ++it) - { - unsigned type = it->get_type(); - if (type == mapnik::Integer) - // this crashes, so send back strings instead - //fld_types.append(boost::python::object(boost::python::handle<>(&PyInt_Type))); - fld_types.append(boost::python::str("int")); - else if (type == mapnik::Float) - fld_types.append(boost::python::str("float")); - else if (type == mapnik::Double) - fld_types.append(boost::python::str("float")); - else if (type == mapnik::String) - fld_types.append(boost::python::str("str")); - else if (type == mapnik::Boolean) - fld_types.append(boost::python::str("bool")); - else if (type == mapnik::Geometry) - fld_types.append(boost::python::str("geometry")); - else if (type == mapnik::Object) - fld_types.append(boost::python::str("object")); - else - fld_types.append(boost::python::str("unknown")); - } - } - return fld_types; -}} - -mapnik::parameters const& (mapnik::datasource::*params_const)() const = &mapnik::datasource::params; - - -void export_datasource() -{ - using namespace boost::python; - - enum_("DataType") - .value("Vector",mapnik::datasource::Vector) - .value("Raster",mapnik::datasource::Raster) - ; - - enum_("DataGeometryType") - .value("Point",mapnik::datasource_geometry_t::Point) - .value("LineString",mapnik::datasource_geometry_t::LineString) - .value("Polygon",mapnik::datasource_geometry_t::Polygon) - .value("Collection",mapnik::datasource_geometry_t::Collection) - ; - - class_, - boost::noncopyable>("Datasource",no_init) - .def("type",&datasource::type) - .def("geometry_type",&datasource::get_geometry_type) - .def("describe",&describe) - .def("envelope",&datasource::envelope) - .def("features",&datasource::features) - .def("fields",&fields) - .def("field_types",&field_types) - .def("features_at_point",&datasource::features_at_point, (arg("coord"),arg("tolerance")=0)) - .def("params",make_function(params_const,return_value_policy()), - "The configuration parameters of the data source. " - "These vary depending on the type of data source.") - .def(self == self) - ; - - def("CreateDatasource",&create_datasource); - - class_, std::shared_ptr, - boost::noncopyable>("MemoryDatasourceBase", init()) - .def("add_feature",&memory_datasource::push, - "Adds a Feature:\n" - ">>> ms = MemoryDatasource()\n" - ">>> feature = Feature(1)\n" - ">>> ms.add_feature(Feature(1))\n") - .def("num_features",&memory_datasource::size) - ; - - implicitly_convertible,std::shared_ptr >(); -} diff --git a/bindings/python/mapnik_datasource_cache.cpp b/bindings/python/mapnik_datasource_cache.cpp deleted file mode 100644 index 41d49df46..000000000 --- a/bindings/python/mapnik_datasource_cache.cpp +++ /dev/null @@ -1,104 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" -#include -#include -#pragma GCC diagnostic pop - -#include -#include -#include -#include - -namespace { - -using namespace boost::python; - -std::shared_ptr create_datasource(const dict& d) -{ - mapnik::parameters params; - boost::python::list keys=d.keys(); - for (int i=0; i(keys[i]); - object obj = d[key]; - extract ex0(obj); - extract ex1(obj); - extract ex2(obj); - - if (ex0.check()) - { - params[key] = ex0(); - } - else if (ex1.check()) - { - params[key] = ex1(); - } - else if (ex2.check()) - { - params[key] = ex2(); - } - } - - return mapnik::datasource_cache::instance().create(params); -} - -void register_datasources(std::string const& path) -{ - mapnik::datasource_cache::instance().register_datasources(path); -} - -std::vector plugin_names() -{ - return mapnik::datasource_cache::instance().plugin_names(); -} - -std::string plugin_directories() -{ - return mapnik::datasource_cache::instance().plugin_directories(); -} - -} - -void export_datasource_cache() -{ - using mapnik::datasource_cache; - class_("DatasourceCache",no_init) - .def("create",&create_datasource) - .staticmethod("create") - .def("register_datasources",®ister_datasources) - .staticmethod("register_datasources") - .def("plugin_names",&plugin_names) - .staticmethod("plugin_names") - .def("plugin_directories",&plugin_directories) - .staticmethod("plugin_directories") - ; -} diff --git a/bindings/python/mapnik_enumeration.hpp b/bindings/python/mapnik_enumeration.hpp deleted file mode 100644 index 19d1b5f42..000000000 --- a/bindings/python/mapnik_enumeration.hpp +++ /dev/null @@ -1,88 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ -#ifndef MAPNIK_PYTHON_BINDING_ENUMERATION_INCLUDED -#define MAPNIK_PYTHON_BINDING_ENUMERATION_INCLUDED - -#include // for registered -#include // for enum_ -#include // for implicitly_convertible -#include - -namespace mapnik { - -template -class enumeration_ : - public boost::python::enum_ -{ - // some short cuts - using base_type = boost::python::enum_; - using native_type = typename EnumWrapper::native_type; -public: - enumeration_() : - base_type( EnumWrapper::get_name().c_str() ) - { - init(); - } - enumeration_(const char * python_alias) : - base_type( python_alias ) - { - init(); - } - enumeration_(const char * python_alias, const char * doc) : - base_type( python_alias, doc ) - { - init(); - } - -private: - struct converter - { - static PyObject* convert(EnumWrapper const& v) - { - // Redirect conversion to a static method of our base class's - // base class. A free template converter will not work because - // the base_type::base typedef is protected. - // Lets hope MSVC agrees that this is legal C++ - using namespace boost::python::converter; - return base_type::base::to_python( - registered::converters.m_class_object - , static_cast( v )); - - } - }; - - void init() { - boost::python::implicitly_convertible(); - boost::python::to_python_converter(); - - for (unsigned i = 0; i < EnumWrapper::MAX; ++i) - { - // Register the strings already defined for this enum. - base_type::value( EnumWrapper::get_string( i ), native_type( i ) ); - } - } - -}; - -} // end of namespace mapnik - -#endif // MAPNIK_PYTHON_BINDING_ENUMERATION_INCLUDED diff --git a/bindings/python/mapnik_enumeration_wrapper_converter.hpp b/bindings/python/mapnik_enumeration_wrapper_converter.hpp deleted file mode 100644 index fe6475843..000000000 --- a/bindings/python/mapnik_enumeration_wrapper_converter.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#ifndef MAPNIK_BINDINGS_PYTHON_ENUMERATION_WRAPPPER -#define MAPNIK_BINDINGS_PYTHON_ENUMERATION_WRAPPPER - -// mapnik -#include - -// boost -#include - - -namespace boost { namespace python { - - struct mapnik_enumeration_wrapper_to_python - { - static PyObject* convert(mapnik::enumeration_wrapper const& v) - { - return ::PyLong_FromLongLong(v.value); // FIXME: this is a temp hack!! - } - }; - -}} - -#endif // MAPNIK_BINDINGS_PYTHON_ENUMERATION_WRAPPPER diff --git a/bindings/python/mapnik_envelope.cpp b/bindings/python/mapnik_envelope.cpp deleted file mode 100644 index 239d1f9f6..000000000 --- a/bindings/python/mapnik_envelope.cpp +++ /dev/null @@ -1,301 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include - -using mapnik::coord; -using mapnik::box2d; - -struct envelope_pickle_suite : boost::python::pickle_suite -{ - static boost::python::tuple - getinitargs(const box2d& e) - { - using namespace boost::python; - return boost::python::make_tuple(e.minx(),e.miny(),e.maxx(),e.maxy()); - } -}; - -box2d from_string(std::string const& s) -{ - box2d bbox; - bool success = bbox.from_string(s); - if (success) - { - return bbox; - } - else - { - std::stringstream ss; - ss << "Could not parse bbox from string: '" << s << "'"; - throw mapnik::value_error(ss.str()); - } -} - -//define overloads here -void (box2d::*width_p1)(double) = &box2d::width; -double (box2d::*width_p2)() const = &box2d::width; - -void (box2d::*height_p1)(double) = &box2d::height; -double (box2d::*height_p2)() const = &box2d::height; - -void (box2d::*expand_to_include_p1)(double,double) = &box2d::expand_to_include; -void (box2d::*expand_to_include_p2)(coord const& ) = &box2d::expand_to_include; -void (box2d::*expand_to_include_p3)(box2d const& ) = &box2d::expand_to_include; - -bool (box2d::*contains_p1)(double,double) const = &box2d::contains; -bool (box2d::*contains_p2)(coord const&) const = &box2d::contains; -bool (box2d::*contains_p3)(box2d const&) const = &box2d::contains; - -//intersects -bool (box2d::*intersects_p1)(double,double) const = &box2d::intersects; -bool (box2d::*intersects_p2)(coord const&) const = &box2d::intersects; -bool (box2d::*intersects_p3)(box2d const&) const = &box2d::intersects; - -// intersect -box2d (box2d::*intersect)(box2d const&) const = &box2d::intersect; - -// re_center -void (box2d::*re_center_p1)(double,double) = &box2d::re_center; -void (box2d::*re_center_p2)(coord const& ) = &box2d::re_center; - -// clip -void (box2d::*clip)(box2d const&) = &box2d::clip; - -// pad -void (box2d::*pad)(double) = &box2d::pad; - -// deepcopy -box2d box2d_deepcopy(box2d & obj, boost::python::dict const&) -{ - // FIXME::ignore memo for now - box2d result(obj); - return result; -} - -void export_envelope() -{ - using namespace boost::python; - class_ >("Box2d", - // class docstring is in mapnik/__init__.py, class _Coord - init( - (arg("minx"),arg("miny"),arg("maxx"),arg("maxy")), - "Constructs a new envelope from the coordinates\n" - "of its lower left and upper right corner points.\n")) - .def(init<>("Equivalent to Box2d(0, 0, -1, -1).\n")) - .def(init&, const coord&>( - (arg("ll"),arg("ur")), - "Equivalent to Box2d(ll.x, ll.y, ur.x, ur.y).\n")) - .def("from_string",from_string) - .staticmethod("from_string") - .add_property("minx", &box2d::minx, - "X coordinate for the lower left corner") - .add_property("miny", &box2d::miny, - "Y coordinate for the lower left corner") - .add_property("maxx", &box2d::maxx, - "X coordinate for the upper right corner") - .add_property("maxy", &box2d::maxy, - "Y coordinate for the upper right corner") - .def("center", &box2d::center, - "Returns the coordinates of the center of the bounding box.\n" - "\n" - "Example:\n" - ">>> e = Box2d(0, 0, 100, 100)\n" - ">>> e.center()\n" - "Coord(50, 50)\n") - .def("center", re_center_p1, - (arg("x"), arg("y")), - "Moves the envelope so that the given coordinates become its new center.\n" - "The width and the height are preserved.\n" - "\n " - "Example:\n" - ">>> e = Box2d(0, 0, 100, 100)\n" - ">>> e.center(60, 60)\n" - ">>> e.center()\n" - "Coord(60.0,60.0)\n" - ">>> (e.width(), e.height())\n" - "(100.0, 100.0)\n" - ">>> e\n" - "Box2d(10.0, 10.0, 110.0, 110.0)\n" - ) - .def("center", re_center_p2, - (arg("Coord")), - "Moves the envelope so that the given coordinates become its new center.\n" - "The width and the height are preserved.\n" - "\n " - "Example:\n" - ">>> e = Box2d(0, 0, 100, 100)\n" - ">>> e.center(Coord60, 60)\n" - ">>> e.center()\n" - "Coord(60.0,60.0)\n" - ">>> (e.width(), e.height())\n" - "(100.0, 100.0)\n" - ">>> e\n" - "Box2d(10.0, 10.0, 110.0, 110.0)\n" - ) - .def("clip", clip, - (arg("other")), - "Clip the envelope based on the bounds of another envelope.\n" - "\n " - "Example:\n" - ">>> e = Box2d(0, 0, 100, 100)\n" - ">>> c = Box2d(-50, -50, 50, 50)\n" - ">>> e.clip(c)\n" - ">>> e\n" - "Box2d(0.0,0.0,50.0,50.0\n" - ) - .def("pad", pad, - (arg("padding")), - "Pad the envelope based on a padding value.\n" - "\n " - "Example:\n" - ">>> e = Box2d(0, 0, 100, 100)\n" - ">>> e.pad(10)\n" - ">>> e\n" - "Box2d(-10.0,-10.0,110.0,110.0\n" - ) - .def("width", width_p1, - (arg("new_width")), - "Sets the width to new_width of the envelope preserving its center.\n" - "\n " - "Example:\n" - ">>> e = Box2d(0, 0, 100, 100)\n" - ">>> e.width(120)\n" - ">>> e.center()\n" - "Coord(50.0,50.0)\n" - ">>> e\n" - "Box2d(-10.0, 0.0, 110.0, 100.0)\n" - ) - .def("width", width_p2, - "Returns the width of this envelope.\n" - ) - .def("height", height_p1, - (arg("new_height")), - "Sets the height to new_height of the envelope preserving its center.\n" - "\n " - "Example:\n" - ">>> e = Box2d(0, 0, 100, 100)\n" - ">>> e.height(120)\n" - ">>> e.center()\n" - "Coord(50.0,50.0)\n" - ">>> e\n" - "Box2d(0.0, -10.0, 100.0, 110.0)\n" - ) - .def("height", height_p2, - "Returns the height of this envelope.\n" - ) - .def("expand_to_include",expand_to_include_p1, - (arg("x"),arg("y")), - "Expands this envelope to include the point given by x and y.\n" - "\n" - "Example:\n", - ">>> e = Box2d(0, 0, 100, 100)\n" - ">>> e.expand_to_include(110, 110)\n" - ">>> e\n" - "Box2d(0.0, 00.0, 110.0, 110.0)\n" - ) - .def("expand_to_include",expand_to_include_p2, - (arg("p")), - "Equivalent to expand_to_include(p.x, p.y)\n" - ) - .def("expand_to_include",expand_to_include_p3, - (arg("other")), - "Equivalent to:\n" - " expand_to_include(other.minx, other.miny)\n" - " expand_to_include(other.maxx, other.maxy)\n" - ) - .def("contains",contains_p1, - (arg("x"),arg("y")), - "Returns True iff this envelope contains the point\n" - "given by x and y.\n" - ) - .def("contains",contains_p2, - (arg("p")), - "Equivalent to contains(p.x, p.y)\n" - ) - .def("contains",contains_p3, - (arg("other")), - "Equivalent to:\n" - " contains(other.minx, other.miny) and contains(other.maxx, other.maxy)\n" - ) - .def("intersects",intersects_p1, - (arg("x"),arg("y")), - "Returns True iff this envelope intersects the point\n" - "given by x and y.\n" - "\n" - "Note: For points, intersection is equivalent\n" - "to containment, i.e. the following holds:\n" - " e.contains(x, y) == e.intersects(x, y)\n" - ) - .def("intersects",intersects_p2, - (arg("p")), - "Equivalent to contains(p.x, p.y)\n") - .def("intersects",intersects_p3, - (arg("other")), - "Returns True iff this envelope intersects the other envelope,\n" - "This relationship is symmetric." - "\n" - "Example:\n" - ">>> e1 = Box2d(0, 0, 100, 100)\n" - ">>> e2 = Box2d(50, 50, 150, 150)\n" - ">>> e1.intersects(e2)\n" - "True\n" - ">>> e1.contains(e2)\n" - "False\n" - ) - .def("intersect",intersect, - (arg("other")), - "Returns the overlap of this envelope and the other envelope\n" - "as a new envelope.\n" - "\n" - "Example:\n" - ">>> e1 = Box2d(0, 0, 100, 100)\n" - ">>> e2 = Box2d(50, 50, 150, 150)\n" - ">>> e1.intersect(e2)\n" - "Box2d(50.0, 50.0, 100.0, 100.0)\n" - ) - .def(self == self) // __eq__ - .def(self != self) // __neq__ - .def(self + self) // __add__ - .def(self * float()) // __mult__ - .def(float() * self) - .def(self / float()) // __div__ - .def("__getitem__",&box2d::operator[]) - .def("valid",&box2d::valid) - .def_pickle(envelope_pickle_suite()) - .def("__deepcopy__", &box2d_deepcopy) - ; - -} diff --git a/bindings/python/mapnik_expression.cpp b/bindings/python/mapnik_expression.cpp deleted file mode 100644 index 9bb10cf74..000000000 --- a/bindings/python/mapnik_expression.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include -#include "python_to_value.hpp" - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include -#include -#include -#include -#include - -using mapnik::expression_ptr; -using mapnik::parse_expression; -using mapnik::to_expression_string; -using mapnik::path_expression_ptr; - - -// expression -expression_ptr parse_expression_(std::string const& wkt) -{ - return parse_expression(wkt); -} - -std::string expression_to_string_(mapnik::expr_node const& expr) -{ - return mapnik::to_expression_string(expr); -} - -mapnik::value expression_evaluate_(mapnik::expr_node const& expr, mapnik::feature_impl const& f, boost::python::dict const& d) -{ - // will be auto-converted to proper python type by `mapnik_value_to_python` - return mapnik::util::apply_visitor(mapnik::evaluate(f,mapnik::dict2attr(d)),expr); -} - -bool expression_evaluate_to_bool_(mapnik::expr_node const& expr, mapnik::feature_impl const& f, boost::python::dict const& d) -{ - return mapnik::util::apply_visitor(mapnik::evaluate(f,mapnik::dict2attr(d)),expr).to_bool(); -} - -// path expression -path_expression_ptr parse_path_(std::string const& path) -{ - return mapnik::parse_path(path); -} - -std::string path_to_string_(mapnik::path_expression const& expr) -{ - return mapnik::path_processor_type::to_string(expr); -} - -std::string path_evaluate_(mapnik::path_expression const& expr, mapnik::feature_impl const& f) -{ - return mapnik::path_processor_type::evaluate(expr, f); -} - -void export_expression() -{ - using namespace boost::python; - class_("Expression", - "TODO" - "",no_init) - .def("evaluate", &expression_evaluate_,(arg("feature"),arg("variables")=boost::python::dict())) - .def("to_bool", &expression_evaluate_to_bool_,(arg("feature"),arg("variables")=boost::python::dict())) - .def("__str__",&expression_to_string_); - ; - - def("Expression",&parse_expression_,(arg("expr")),"Expression string"); - - class_("PathExpression", - "TODO" - "",no_init) - .def("evaluate", &path_evaluate_) // note: "pass" is a reserved word in Python - .def("__str__",&path_to_string_); - ; - - def("PathExpression",&parse_path_,(arg("expr")),"PathExpression string"); -} diff --git a/bindings/python/mapnik_feature.cpp b/bindings/python/mapnik_feature.cpp deleted file mode 100644 index 73455524e..000000000 --- a/bindings/python/mapnik_feature.cpp +++ /dev/null @@ -1,237 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#include -#include -#include -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include -#include -#include -#include -//#include -#include -#include - -// stl -#include - -namespace { - -using mapnik::geometry_utils; -using mapnik::context_type; -using mapnik::context_ptr; -using mapnik::feature_kv_iterator; - -mapnik::feature_ptr from_geojson_impl(std::string const& json, mapnik::context_ptr const& ctx) -{ - mapnik::feature_ptr feature(mapnik::feature_factory::create(ctx,1)); - if (!mapnik::json::from_geojson(json,*feature)) - { - throw std::runtime_error("Failed to parse geojson feature"); - } - return feature; -} - -std::string feature_to_geojson(mapnik::feature_impl const& feature) -{ - std::string json; - if (!mapnik::json::to_geojson(json,feature)) - { - throw std::runtime_error("Failed to generate GeoJSON"); - } - return json; -} - -mapnik::value __getitem__(mapnik::feature_impl const& feature, std::string const& name) -{ - return feature.get(name); -} - -mapnik::value __getitem2__(mapnik::feature_impl const& feature, std::size_t index) -{ - return feature.get(index); -} - -void __setitem__(mapnik::feature_impl & feature, std::string const& name, mapnik::value const& val) -{ - feature.put_new(name,val); -} - -boost::python::dict attributes(mapnik::feature_impl const& f) -{ - boost::python::dict attributes; - feature_kv_iterator itr = f.begin(); - feature_kv_iterator end = f.end(); - - for ( ;itr!=end; ++itr) - { - attributes[std::get<0>(*itr)] = std::get<1>(*itr); - } - - return attributes; -} - -} // end anonymous namespace - -struct unicode_string_from_python_str -{ - unicode_string_from_python_str() - { - boost::python::converter::registry::push_back( - &convertible, - &construct, - boost::python::type_id()); - } - - static void* convertible(PyObject* obj_ptr) - { - if (!( -#if PY_VERSION_HEX >= 0x03000000 - PyBytes_Check(obj_ptr) -#else - PyString_Check(obj_ptr) -#endif - || PyUnicode_Check(obj_ptr))) - return 0; - return obj_ptr; - } - - static void construct( - PyObject* obj_ptr, - boost::python::converter::rvalue_from_python_stage1_data* data) - { - char * value=0; - if (PyUnicode_Check(obj_ptr)) { - PyObject *encoded = PyUnicode_AsEncodedString(obj_ptr, "utf8", "replace"); - if (encoded) { -#if PY_VERSION_HEX >= 0x03000000 - value = PyBytes_AsString(encoded); -#else - value = PyString_AsString(encoded); -#endif - Py_DecRef(encoded); - } - } else { -#if PY_VERSION_HEX >= 0x03000000 - value = PyBytes_AsString(obj_ptr); -#else - value = PyString_AsString(obj_ptr); -#endif - } - if (value == 0) boost::python::throw_error_already_set(); - void* storage = ( - (boost::python::converter::rvalue_from_python_storage*) - data)->storage.bytes; - new (storage) mapnik::value_unicode_string(value); - data->convertible = storage; - } -}; - - -struct value_null_from_python -{ - value_null_from_python() - { - boost::python::converter::registry::push_back( - &convertible, - &construct, - boost::python::type_id()); - } - - static void* convertible(PyObject* obj_ptr) - { - if (obj_ptr == Py_None) return obj_ptr; - return 0; - } - - static void construct( - PyObject* obj_ptr, - boost::python::converter::rvalue_from_python_stage1_data* data) - { - if (obj_ptr != Py_None) boost::python::throw_error_already_set(); - void* storage = ( - (boost::python::converter::rvalue_from_python_storage*) - data)->storage.bytes; - new (storage) mapnik::value_null(); - data->convertible = storage; - } -}; - -void export_feature() -{ - using namespace boost::python; - - // Python to mapnik::value converters - // NOTE: order matters here. For example value_null must be listed before - // bool otherwise Py_None will be interpreted as bool (false) - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - - // http://misspent.wordpress.com/2009/09/27/how-to-write-boost-python-converters/ - unicode_string_from_python_str(); - value_null_from_python(); - - class_ - ("Context",init<>("Default ctor.")) - .def("push", &context_type::push) - ; - - class_, - boost::noncopyable>("Feature",init("Default ctor.")) - .def("id",&mapnik::feature_impl::id) - .add_property("geometry", - make_function(&mapnik::feature_impl::get_geometry,return_value_policy()), - &mapnik::feature_impl::set_geometry_copy) - .def("envelope", &mapnik::feature_impl::envelope) - .def("has_key", &mapnik::feature_impl::has_key) - .add_property("attributes",&attributes) - .def("__setitem__",&__setitem__) - .def("__contains__",&__getitem__) - .def("__getitem__",&__getitem__) - .def("__getitem__",&__getitem2__) - .def("__len__", &mapnik::feature_impl::size) - .def("context",&mapnik::feature_impl::context) - .def("to_geojson",&feature_to_geojson) - .def("from_geojson",from_geojson_impl) - .staticmethod("from_geojson") - ; -} diff --git a/bindings/python/mapnik_featureset.cpp b/bindings/python/mapnik_featureset.cpp deleted file mode 100644 index f043369e5..000000000 --- a/bindings/python/mapnik_featureset.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include - -namespace { -using namespace boost::python; - -inline list features(mapnik::featureset_ptr const& itr) -{ - list l; - while (true) - { - mapnik::feature_ptr fp = itr->next(); - if (!fp) - { - break; - } - l.append(fp); - } - return l; -} - -inline object pass_through(object const& o) { return o; } - -inline mapnik::feature_ptr next(mapnik::featureset_ptr const& itr) -{ - mapnik::feature_ptr f = itr->next(); - if (!f) - { - PyErr_SetString(PyExc_StopIteration, "No more features."); - boost::python::throw_error_already_set(); - } - - return f; -} - -} - -void export_featureset() -{ - using namespace boost::python; - class_, - boost::noncopyable>("Featureset",no_init) - .def("__iter__",pass_through) - .def("next",next) - .add_property("features",features, - "The list of features.\n" - "\n" - "Usage:\n" - ">>> m.query_map_point(0, 10, 10)\n" - "\n" - ">>> fs = m.query_map_point(0, 10, 10)\n" - ">>> for f in fs.features:\n" - ">>> print f\n" - "\n" - ) - ; -} diff --git a/bindings/python/mapnik_font_engine.cpp b/bindings/python/mapnik_font_engine.cpp deleted file mode 100644 index 327348849..000000000 --- a/bindings/python/mapnik_font_engine.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#pragma GCC diagnostic pop - -#include -#include - -void export_font_engine() -{ - using mapnik::freetype_engine; - using mapnik::singleton; - using mapnik::CreateStatic; - using namespace boost::python; - class_,boost::noncopyable>("Singleton",no_init) - .def("instance",&singleton::instance, - return_value_policy()) - .staticmethod("instance") - ; - - class_ >, - boost::noncopyable>("FontEngine",no_init) - .def("register_font",&freetype_engine::register_font) - .def("register_fonts",&freetype_engine::register_fonts) - .def("face_names",&freetype_engine::face_names) - .staticmethod("register_font") - .staticmethod("register_fonts") - .staticmethod("face_names") - ; -} diff --git a/bindings/python/mapnik_fontset.cpp b/bindings/python/mapnik_fontset.cpp deleted file mode 100644 index 15f570e41..000000000 --- a/bindings/python/mapnik_fontset.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#pragma GCC diagnostic pop - -//mapnik -#include - - -using mapnik::font_set; - -void export_fontset () -{ - using namespace boost::python; - class_("FontSet", init("default fontset constructor") - ) - .add_property("name", - make_function(&font_set::get_name,return_value_policy()), - &font_set::set_name, - "Get/Set the name of the FontSet.\n" - ) - .def("add_face_name",&font_set::add_face_name, - (arg("name")), - "Add a face-name to the fontset.\n" - "\n" - "Example:\n" - ">>> fs = Fontset('book-fonts')\n" - ">>> fs.add_face_name('DejaVu Sans Book')\n") - .add_property("names",make_function - (&font_set::get_face_names, - return_value_policy()), - "List of face names belonging to a FontSet.\n" - ) - ; -} diff --git a/bindings/python/mapnik_gamma_method.cpp b/bindings/python/mapnik_gamma_method.cpp deleted file mode 100644 index 82b74d487..000000000 --- a/bindings/python/mapnik_gamma_method.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#pragma GCC diagnostic pop - -#include -#include "mapnik_enumeration.hpp" - -void export_gamma_method() -{ - using namespace boost::python; - - mapnik::enumeration_("gamma_method") - .value("POWER", mapnik::GAMMA_POWER) - .value("LINEAR",mapnik::GAMMA_LINEAR) - .value("NONE", mapnik::GAMMA_NONE) - .value("THRESHOLD", mapnik::GAMMA_THRESHOLD) - .value("MULTIPLY", mapnik::GAMMA_MULTIPLY) - ; - -} diff --git a/bindings/python/mapnik_geometry.cpp b/bindings/python/mapnik_geometry.cpp deleted file mode 100644 index 2c1c1bd72..000000000 --- a/bindings/python/mapnik_geometry.cpp +++ /dev/null @@ -1,296 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2015 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#include -#include -#include -#include -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include -#include -#include -#include -#include -#include - -#include // from_wkt -#include // from_geojson -#include // to_geojson -#include // to_wkb -#include // to_wkt -//#include -#include - - -// stl -#include - -namespace { - -std::shared_ptr > from_wkb_impl(std::string const& wkb) -{ - std::shared_ptr > geom = std::make_shared >(); - try - { - *geom = std::move(mapnik::geometry_utils::from_wkb(wkb.c_str(), wkb.size())); - } - catch (...) - { - throw std::runtime_error("Failed to parse WKB"); - } - return geom; -} - -std::shared_ptr > from_wkt_impl(std::string const& wkt) -{ - std::shared_ptr > geom = std::make_shared >(); - if (!mapnik::from_wkt(wkt, *geom)) - throw std::runtime_error("Failed to parse WKT geometry"); - return geom; -} - -std::shared_ptr > from_geojson_impl(std::string const& json) -{ - std::shared_ptr > geom = std::make_shared >(); - if (!mapnik::json::from_geojson(json, *geom)) - throw std::runtime_error("Failed to parse geojson geometry"); - return geom; -} - -} - -inline std::string boost_version() -{ - std::ostringstream s; - s << BOOST_VERSION/100000 << "." << BOOST_VERSION/100 % 1000 << "." << BOOST_VERSION % 100; - return s.str(); -} - -PyObject* to_wkb_impl(mapnik::geometry::geometry const& geom, mapnik::wkbByteOrder byte_order) -{ - mapnik::util::wkb_buffer_ptr wkb = mapnik::util::to_wkb(geom,byte_order); - if (wkb) - { - return -#if PY_VERSION_HEX >= 0x03000000 - ::PyBytes_FromStringAndSize -#else - ::PyString_FromStringAndSize -#endif - ((const char*)wkb->buffer(),wkb->size()); - } - else - { - Py_RETURN_NONE; - } -} - -std::string to_geojson_impl(mapnik::geometry::geometry const& geom) -{ - std::string wkt; - if (!mapnik::util::to_geojson(wkt, geom)) - { - throw std::runtime_error("Generate JSON failed"); - } - return wkt; -} - -std::string to_wkt_impl(mapnik::geometry::geometry const& geom) -{ - std::string wkt; - if (!mapnik::util::to_wkt(wkt,geom)) - { - throw std::runtime_error("Generate WKT failed"); - } - return wkt; -} - -mapnik::geometry::geometry_types geometry_type_impl(mapnik::geometry::geometry const& geom) -{ - return mapnik::geometry::geometry_type(geom); -} - -mapnik::box2d geometry_envelope_impl(mapnik::geometry::geometry const& geom) -{ - return mapnik::geometry::envelope(geom); -} - -// only Boost >= 1.56 has is_valid and is_simple -#if BOOST_VERSION >= 105600 - -bool geometry_is_valid_impl(mapnik::geometry::geometry const& geom) -{ - return mapnik::geometry::is_valid(geom); -} - -bool geometry_is_simple_impl(mapnik::geometry::geometry const& geom) -{ - return mapnik::geometry::is_simple(geom); -} - -#endif // BOOST_VERSION >= 1.56 - -bool geometry_is_empty_impl(mapnik::geometry::geometry const& geom) -{ - return mapnik::geometry::is_empty(geom); -} - -void geometry_correct_impl(mapnik::geometry::geometry & geom) -{ - mapnik::geometry::correct(geom); -} - -void polygon_set_exterior_impl(mapnik::geometry::polygon & poly, mapnik::geometry::linear_ring const& ring) -{ - poly.exterior_ring = ring; // copy -} - -void polygon_add_hole_impl(mapnik::geometry::polygon & poly, mapnik::geometry::linear_ring const& ring) -{ - poly.interior_rings.push_back(ring); // copy -} - -mapnik::geometry::point geometry_centroid_impl(mapnik::geometry::geometry const& geom) -{ - mapnik::geometry::point pt; - mapnik::geometry::centroid(geom, pt); - return pt; -} - - -void export_geometry() -{ - using namespace boost::python; - - implicitly_convertible, mapnik::geometry::geometry >(); - implicitly_convertible, mapnik::geometry::geometry >(); - implicitly_convertible, mapnik::geometry::geometry >(); - enum_("GeometryType") - .value("Unknown",mapnik::geometry::geometry_types::Unknown) - .value("Point",mapnik::geometry::geometry_types::Point) - .value("LineString",mapnik::geometry::geometry_types::LineString) - .value("Polygon",mapnik::geometry::geometry_types::Polygon) - .value("MultiPoint",mapnik::geometry::geometry_types::MultiPoint) - .value("MultiLineString",mapnik::geometry::geometry_types::MultiLineString) - .value("MultiPolygon",mapnik::geometry::geometry_types::MultiPolygon) - .value("GeometryCollection",mapnik::geometry::geometry_types::GeometryCollection) - ; - - enum_("wkbByteOrder") - .value("XDR",mapnik::wkbXDR) - .value("NDR",mapnik::wkbNDR) - ; - - using mapnik::geometry::geometry; - using mapnik::geometry::point; - using mapnik::geometry::line_string; - using mapnik::geometry::linear_ring; - using mapnik::geometry::polygon; - - class_ >("Point", init((arg("x"), arg("y")), - "Constructs a new Point object\n")) - .add_property("x", &point::x, "X coordinate") - .add_property("y", &point::y, "Y coordinate") -// only Boost >= 1.56 has is_valid and is_simple -#if BOOST_VERSION >= 105600 - .def("is_valid", &geometry_is_valid_impl) - .def("is_simple", &geometry_is_simple_impl) -#endif // BOOST_VERSION >= 1.56 - .def("to_geojson",&to_geojson_impl) - .def("to_wkb",&to_wkb_impl) - .def("to_wkt",&to_wkt_impl) - ; - - class_ >("LineString", init<>( - "Constructs a new LineString object\n")) - .def("add_coord", &line_string::add_coord, "Adds coord") -// only Boost >= 1.56 has is_valid and is_simple -#if BOOST_VERSION >= 105600 - .def("is_valid", &geometry_is_valid_impl) - .def("is_simple", &geometry_is_simple_impl) -#endif // BOOST_VERSION >= 1.56 - .def("to_geojson",&to_geojson_impl) - .def("to_wkb",&to_wkb_impl) - .def("to_wkt",&to_wkt_impl) - ; - - class_ >("LinearRing", init<>( - "Constructs a new LinearRtring object\n")) - .def("add_coord", &linear_ring::add_coord, "Adds coord") - ; - - class_ >("Polygon", init<>( - "Constructs a new Polygon object\n")) - .add_property("exterior_ring", &polygon::exterior_ring , "Exterior ring") - .def("add_hole", &polygon_add_hole_impl, "Add interior ring") - .def("num_rings", polygon_set_exterior_impl, "Number of rings (at least 1)") -// only Boost >= 1.56 has is_valid and is_simple -#if BOOST_VERSION >= 105600 - .def("is_valid", &geometry_is_valid_impl) - .def("is_simple", &geometry_is_simple_impl) -#endif // BOOST_VERSION >= 1.56 - .def("to_geojson",&to_geojson_impl) - .def("to_wkb",&to_wkb_impl) - .def("to_wkt",&to_wkt_impl) - ; - - class_, std::shared_ptr >, boost::noncopyable>("Geometry",no_init) - .def("envelope",&geometry_envelope_impl) - .def("from_geojson", from_geojson_impl) - .def("from_wkt", from_wkt_impl) - .def("from_wkb", from_wkb_impl) - .staticmethod("from_geojson") - .staticmethod("from_wkt") - .staticmethod("from_wkb") - .def("__str__",&to_wkt_impl) - .def("type",&geometry_type_impl) -// only Boost >= 1.56 has is_valid and is_simple -#if BOOST_VERSION >= 105600 - .def("is_valid", &geometry_is_valid_impl) - .def("is_simple", &geometry_is_simple_impl) -#endif // BOOST_VERSION >= 1.56 - .def("is_empty", &geometry_is_empty_impl) - .def("correct", &geometry_correct_impl) - .def("centroid",&geometry_centroid_impl) - .def("to_wkb",&to_wkb_impl) - .def("to_wkt",&to_wkt_impl) - .def("to_geojson",&to_geojson_impl) - //.def("to_svg",&to_svg) - // TODO add other geometry_type methods - ; -} diff --git a/bindings/python/mapnik_grid.cpp b/bindings/python/mapnik_grid.cpp deleted file mode 100644 index 7069714d8..000000000 --- a/bindings/python/mapnik_grid.cpp +++ /dev/null @@ -1,95 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#if defined(GRID_RENDERER) - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include "python_grid_utils.hpp" - -using namespace boost::python; - -// help compiler see template definitions -static dict (*encode)( mapnik::grid const&, std::string const& , bool, unsigned int) = mapnik::grid_encode; - -bool painted(mapnik::grid const& grid) -{ - return grid.painted(); -} - -mapnik::grid::value_type get_pixel(mapnik::grid const& grid, int x, int y) -{ - if (x < static_cast(grid.width()) && y < static_cast(grid.height())) - { - mapnik::grid::data_type const & data = grid.data(); - return data(x,y); - } - PyErr_SetString(PyExc_IndexError, "invalid x,y for grid dimensions"); - boost::python::throw_error_already_set(); - return 0; -} - -void export_grid() -{ - class_ >( - "Grid", - "This class represents a feature hitgrid.", - init( - ( boost::python::arg("width"), boost::python::arg("height"),boost::python::arg("key")="__id__"), - "Create a mapnik.Grid object\n" - )) - .def("painted",&painted) - .def("width",&mapnik::grid::width) - .def("height",&mapnik::grid::height) - .def("view",&mapnik::grid::get_view) - .def("get_pixel",&get_pixel) - .def("clear",&mapnik::grid::clear) - .def("encode",encode, - ( boost::python::arg("encoding")="utf", boost::python::arg("features")=true,boost::python::arg("resolution")=4 ), - "Encode the grid as as optimized json\n" - ) - .add_property("key", - make_function(&mapnik::grid::get_key,return_value_policy()), - &mapnik::grid::set_key, - "Get/Set key to be used as unique indentifier for features\n" - "The value should either be __id__ to refer to the feature.id()\n" - "or some globally unique integer or string attribute field\n" - ) - ; - -} - -#endif diff --git a/bindings/python/mapnik_grid_view.cpp b/bindings/python/mapnik_grid_view.cpp deleted file mode 100644 index 99e3b5e2d..000000000 --- a/bindings/python/mapnik_grid_view.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#if defined(GRID_RENDERER) - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include -#include "python_grid_utils.hpp" - -using namespace boost::python; - -// help compiler see template definitions -static dict (*encode)( mapnik::grid_view const&, std::string const& , bool, unsigned int) = mapnik::grid_encode; - -void export_grid_view() -{ - class_ >("GridView", - "This class represents a feature hitgrid subset.",no_init) - .def("width",&mapnik::grid_view::width) - .def("height",&mapnik::grid_view::height) - .def("encode",encode, - ( boost::python::arg("encoding")="utf",boost::python::arg("add_features")=true,boost::python::arg("resolution")=4 ), - "Encode the grid as as optimized json\n" - ) - ; -} - -#endif diff --git a/bindings/python/mapnik_image.cpp b/bindings/python/mapnik_image.cpp deleted file mode 100644 index 8c54b6cb3..000000000 --- a/bindings/python/mapnik_image.cpp +++ /dev/null @@ -1,471 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include -#include -#include -#include -#include - -// cairo -#if defined(HAVE_CAIRO) && defined(HAVE_PYCAIRO) -#include -#include -#include -#include -#endif - -using mapnik::image_any; -using mapnik::image_reader; -using mapnik::get_image_reader; -using mapnik::type_from_filename; -using mapnik::save_to_file; - -using namespace boost::python; - -// output 'raw' pixels -PyObject* tostring1( image_any const& im) -{ - return -#if PY_VERSION_HEX >= 0x03000000 - ::PyBytes_FromStringAndSize -#else - ::PyString_FromStringAndSize -#endif - ((const char*)im.getBytes(),im.getSize()); -} - -// encode (png,jpeg) -PyObject* tostring2(image_any const & im, std::string const& format) -{ - std::string s = mapnik::save_to_string(im, format); - return -#if PY_VERSION_HEX >= 0x03000000 - ::PyBytes_FromStringAndSize -#else - ::PyString_FromStringAndSize -#endif - (s.data(),s.size()); -} - -PyObject* tostring3(image_any const & im, std::string const& format, mapnik::rgba_palette const& pal) -{ - std::string s = mapnik::save_to_string(im, format, pal); - return -#if PY_VERSION_HEX >= 0x03000000 - ::PyBytes_FromStringAndSize -#else - ::PyString_FromStringAndSize -#endif - (s.data(),s.size()); -} - - -void save_to_file1(mapnik::image_any const& im, std::string const& filename) -{ - save_to_file(im,filename); -} - -void save_to_file2(mapnik::image_any const& im, std::string const& filename, std::string const& type) -{ - save_to_file(im,filename,type); -} - -void save_to_file3(mapnik::image_any const& im, std::string const& filename, std::string const& type, mapnik::rgba_palette const& pal) -{ - save_to_file(im,filename,type,pal); -} - -mapnik::image_view_any get_view(mapnik::image_any const& data,unsigned x,unsigned y, unsigned w,unsigned h) -{ - return mapnik::create_view(data,x,y,w,h); -} - -bool is_solid(mapnik::image_any const& im) -{ - return mapnik::is_solid(im); -} - -void fill_color(mapnik::image_any & im, mapnik::color const& c) -{ - mapnik::fill(im, c); -} - -void fill_int(mapnik::image_any & im, int val) -{ - mapnik::fill(im, val); -} - -void fill_double(mapnik::image_any & im, double val) -{ - mapnik::fill(im, val); -} - -std::shared_ptr copy(mapnik::image_any const& im, mapnik::image_dtype type, double offset, double scaling) -{ - return std::make_shared(std::move(mapnik::image_copy(im, type, offset, scaling))); -} - -unsigned compare(mapnik::image_any const& im1, mapnik::image_any const& im2, double threshold, bool alpha) -{ - return mapnik::compare(im1, im2, threshold, alpha); -} - -struct get_pixel_visitor -{ - get_pixel_visitor(unsigned x, unsigned y) - : x_(x), y_(y) {} - - object operator() (mapnik::image_null const&) - { - throw std::runtime_error("Can not return a null image from a pixel (shouldn't have reached here)"); - } - - template - object operator() (T const& im) - { - using pixel_type = typename T::pixel_type; - return object(mapnik::get_pixel(im, x_, y_)); - } - - private: - unsigned x_; - unsigned y_; -}; - -object get_pixel(mapnik::image_any const& im, unsigned x, unsigned y, bool get_color) -{ - if (x < static_cast(im.width()) && y < static_cast(im.height())) - { - if (get_color) - { - return object( - mapnik::get_pixel(im, x, y) - ); - } - else - { - return mapnik::util::apply_visitor(get_pixel_visitor(x, y), im); - } - } - PyErr_SetString(PyExc_IndexError, "invalid x,y for image dimensions"); - boost::python::throw_error_already_set(); - return object(); -} - -void set_pixel_color(mapnik::image_any & im, unsigned x, unsigned y, mapnik::color const& c) -{ - if (x >= static_cast(im.width()) && y >= static_cast(im.height())) - { - PyErr_SetString(PyExc_IndexError, "invalid x,y for image dimensions"); - boost::python::throw_error_already_set(); - return; - } - mapnik::set_pixel(im, x, y, c); -} - -void set_pixel_double(mapnik::image_any & im, unsigned x, unsigned y, double val) -{ - if (x >= static_cast(im.width()) && y >= static_cast(im.height())) - { - PyErr_SetString(PyExc_IndexError, "invalid x,y for image dimensions"); - boost::python::throw_error_already_set(); - return; - } - mapnik::set_pixel(im, x, y, val); -} - -void set_pixel_int(mapnik::image_any & im, unsigned x, unsigned y, int val) -{ - if (x >= static_cast(im.width()) && y >= static_cast(im.height())) - { - PyErr_SetString(PyExc_IndexError, "invalid x,y for image dimensions"); - boost::python::throw_error_already_set(); - return; - } - mapnik::set_pixel(im, x, y, val); -} - -unsigned get_type(mapnik::image_any & im) -{ - return im.get_dtype(); -} - -std::shared_ptr open_from_file(std::string const& filename) -{ - boost::optional type = type_from_filename(filename); - if (type) - { - std::unique_ptr reader(get_image_reader(filename,*type)); - if (reader.get()) - { - return std::make_shared(std::move(reader->read(0,0,reader->width(),reader->height()))); - } - throw mapnik::image_reader_exception("Failed to load: " + filename); - } - throw mapnik::image_reader_exception("Unsupported image format:" + filename); -} - -std::shared_ptr fromstring(std::string const& str) -{ - std::unique_ptr reader(get_image_reader(str.c_str(),str.size())); - if (reader.get()) - { - return std::make_shared(std::move(reader->read(0,0,reader->width(), reader->height()))); - } - throw mapnik::image_reader_exception("Failed to load image from buffer" ); -} - -std::shared_ptr frombuffer(PyObject * obj) -{ - void const* buffer=0; - Py_ssize_t buffer_len; - if (PyObject_AsReadBuffer(obj, &buffer, &buffer_len) == 0) - { - std::unique_ptr reader(get_image_reader(reinterpret_cast(buffer),buffer_len)); - if (reader.get()) - { - return std::make_shared(reader->read(0,0,reader->width(),reader->height())); - } - } - throw mapnik::image_reader_exception("Failed to load image from buffer" ); -} - -void set_grayscale_to_alpha(image_any & im) -{ - mapnik::set_grayscale_to_alpha(im); -} - -void set_grayscale_to_alpha_c(image_any & im, mapnik::color const& c) -{ - mapnik::set_grayscale_to_alpha(im, c); -} - -void set_color_to_alpha(image_any & im, mapnik::color const& c) -{ - mapnik::set_color_to_alpha(im, c); -} - -void set_alpha(image_any & im, float opacity) -{ - mapnik::set_alpha(im, opacity); -} - -bool premultiplied(image_any &im) -{ - return im.get_premultiplied(); -} - -bool premultiply(image_any & im) -{ - return mapnik::premultiply_alpha(im); -} - -bool demultiply(image_any & im) -{ - return mapnik::demultiply_alpha(im); -} - -void clear(image_any & im) -{ - mapnik::fill(im, 0); -} - -void composite(image_any & dst, image_any & src, mapnik::composite_mode_e mode, float opacity, int dx, int dy) -{ - bool demultiply_dst = mapnik::premultiply_alpha(dst); - bool demultiply_src = mapnik::premultiply_alpha(src); - mapnik::composite(dst,src,mode,opacity,dx,dy); - if (demultiply_dst) - { - mapnik::demultiply_alpha(dst); - } - if (demultiply_src) - { - mapnik::demultiply_alpha(src); - } -} - -#if defined(HAVE_CAIRO) && defined(HAVE_PYCAIRO) -std::shared_ptr from_cairo(PycairoSurface* py_surface) -{ - mapnik::cairo_surface_ptr surface(cairo_surface_reference(py_surface->surface), mapnik::cairo_surface_closer()); - mapnik::image_rgba8 image = mapnik::image_rgba8(cairo_image_surface_get_width(&*surface), cairo_image_surface_get_height(&*surface)); - cairo_image_to_rgba8(image, surface); - return std::make_shared(std::move(image)); -} -#endif - -void export_image() -{ - using namespace boost::python; - // NOTE: must match list in include/mapnik/image_compositing.hpp - enum_("CompositeOp") - .value("clear", mapnik::clear) - .value("src", mapnik::src) - .value("dst", mapnik::dst) - .value("src_over", mapnik::src_over) - .value("dst_over", mapnik::dst_over) - .value("src_in", mapnik::src_in) - .value("dst_in", mapnik::dst_in) - .value("src_out", mapnik::src_out) - .value("dst_out", mapnik::dst_out) - .value("src_atop", mapnik::src_atop) - .value("dst_atop", mapnik::dst_atop) - .value("xor", mapnik::_xor) - .value("plus", mapnik::plus) - .value("minus", mapnik::minus) - .value("multiply", mapnik::multiply) - .value("screen", mapnik::screen) - .value("overlay", mapnik::overlay) - .value("darken", mapnik::darken) - .value("lighten", mapnik::lighten) - .value("color_dodge", mapnik::color_dodge) - .value("color_burn", mapnik::color_burn) - .value("hard_light", mapnik::hard_light) - .value("soft_light", mapnik::soft_light) - .value("difference", mapnik::difference) - .value("exclusion", mapnik::exclusion) - .value("contrast", mapnik::contrast) - .value("invert", mapnik::invert) - .value("grain_merge", mapnik::grain_merge) - .value("grain_extract", mapnik::grain_extract) - .value("hue", mapnik::hue) - .value("saturation", mapnik::saturation) - .value("color", mapnik::_color) - .value("value", mapnik::_value) - .value("linear_dodge", mapnik::linear_dodge) - .value("linear_burn", mapnik::linear_burn) - .value("divide", mapnik::divide) - ; - - enum_("ImageType") - .value("rgba8", mapnik::image_dtype_rgba8) - .value("gray8", mapnik::image_dtype_gray8) - .value("gray8s", mapnik::image_dtype_gray8s) - .value("gray16", mapnik::image_dtype_gray16) - .value("gray16s", mapnik::image_dtype_gray16s) - .value("gray32", mapnik::image_dtype_gray32) - .value("gray32s", mapnik::image_dtype_gray32s) - .value("gray32f", mapnik::image_dtype_gray32f) - .value("gray64", mapnik::image_dtype_gray64) - .value("gray64s", mapnik::image_dtype_gray64s) - .value("gray64f", mapnik::image_dtype_gray64f) - ; - - class_, boost::noncopyable >("Image","This class represents a image.",init()) - .def(init()) - .def(init()) - .def(init()) - .def(init()) - .def("width",&image_any::width) - .def("height",&image_any::height) - .def("view",&get_view) - .def("painted",&image_any::painted) - .def("is_solid",&is_solid) - .def("fill",&fill_color) - .def("fill",&fill_int) - .def("fill",&fill_double) - .def("set_grayscale_to_alpha",&set_grayscale_to_alpha, "Set the grayscale values to the alpha channel of the Image") - .def("set_grayscale_to_alpha",&set_grayscale_to_alpha_c, "Set the grayscale values to the alpha channel of the Image") - .def("set_color_to_alpha",&set_color_to_alpha, "Set a given color to the alpha channel of the Image") - .def("set_alpha",&set_alpha, "Set the overall alpha channel of the Image") - .def("composite",&composite, - ( arg("self"), - arg("image"), - arg("mode")=mapnik::src_over, - arg("opacity")=1.0f, - arg("dx")=0, - arg("dy")=0 - )) - .def("compare",&compare, - ( arg("self"), - arg("image"), - arg("threshold")=0.0, - arg("alpha")=true - )) - .def("copy",©, - ( arg("self"), - arg("type"), - arg("offset")=0.0, - arg("scaling")=1.0 - )) - .add_property("offset", - &image_any::get_offset, - &image_any::set_offset, - "Gets or sets the offset component.\n") - .add_property("scaling", - &image_any::get_scaling, - &image_any::set_scaling, - "Gets or sets the offset component.\n") - .def("premultiplied",&premultiplied) - .def("premultiply",&premultiply) - .def("demultiply",&demultiply) - .def("set_pixel",&set_pixel_color) - .def("set_pixel",&set_pixel_double) - .def("set_pixel",&set_pixel_int) - .def("get_pixel",&get_pixel, - ( arg("self"), - arg("x"), - arg("y"), - arg("get_color")=false - )) - .def("get_type",&get_type) - .def("clear",&clear) - //TODO(haoyu) The method name 'tostring' might be confusing since they actually return bytes in Python 3 - - .def("tostring",&tostring1) - .def("tostring",&tostring2) - .def("tostring",&tostring3) - .def("save", &save_to_file1) - .def("save", &save_to_file2) - .def("save", &save_to_file3) - .def("open",open_from_file) - .staticmethod("open") - .def("frombuffer",&frombuffer) - .staticmethod("frombuffer") - .def("fromstring",&fromstring) - .staticmethod("fromstring") -#if defined(HAVE_CAIRO) && defined(HAVE_PYCAIRO) - .def("from_cairo",&from_cairo) - .staticmethod("from_cairo") -#endif - ; - -} diff --git a/bindings/python/mapnik_image_view.cpp b/bindings/python/mapnik_image_view.cpp deleted file mode 100644 index 1c48bd33b..000000000 --- a/bindings/python/mapnik_image_view.cpp +++ /dev/null @@ -1,128 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include -#include -#include -#include - -using mapnik::image_view_any; -using mapnik::save_to_file; - -// output 'raw' pixels -PyObject* view_tostring1(image_view_any const& view) -{ - std::ostringstream ss(std::ios::out|std::ios::binary); - mapnik::view_to_string(view, ss); - return -#if PY_VERSION_HEX >= 0x03000000 - ::PyBytes_FromStringAndSize -#else - ::PyString_FromStringAndSize -#endif - ((const char*)ss.str().c_str(),ss.str().size()); -} - -// encode (png,jpeg) -PyObject* view_tostring2(image_view_any const & view, std::string const& format) -{ - std::string s = save_to_string(view, format); - return -#if PY_VERSION_HEX >= 0x03000000 - ::PyBytes_FromStringAndSize -#else - ::PyString_FromStringAndSize -#endif - (s.data(),s.size()); -} - -PyObject* view_tostring3(image_view_any const & view, std::string const& format, mapnik::rgba_palette const& pal) -{ - std::string s = save_to_string(view, format, pal); - return -#if PY_VERSION_HEX >= 0x03000000 - ::PyBytes_FromStringAndSize -#else - ::PyString_FromStringAndSize -#endif - (s.data(),s.size()); -} - -bool is_solid(image_view_any const& view) -{ - return mapnik::is_solid(view); -} - -void save_view1(image_view_any const& view, - std::string const& filename) -{ - save_to_file(view,filename); -} - -void save_view2(image_view_any const& view, - std::string const& filename, - std::string const& type) -{ - save_to_file(view,filename,type); -} - -void save_view3(image_view_any const& view, - std::string const& filename, - std::string const& type, - mapnik::rgba_palette const& pal) -{ - save_to_file(view,filename,type,pal); -} - - -void export_image_view() -{ - using namespace boost::python; - class_("ImageView","A view into an image.",no_init) - .def("width",&image_view_any::width) - .def("height",&image_view_any::height) - .def("is_solid",&is_solid) - .def("tostring",&view_tostring1) - .def("tostring",&view_tostring2) - .def("tostring",&view_tostring3) - .def("save",&save_view1) - .def("save",&save_view2) - .def("save",&save_view3) - ; -} diff --git a/bindings/python/mapnik_label_collision_detector.cpp b/bindings/python/mapnik_label_collision_detector.cpp deleted file mode 100644 index eb16ea87d..000000000 --- a/bindings/python/mapnik_label_collision_detector.cpp +++ /dev/null @@ -1,131 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#include -#pragma GCC diagnostic pop - -#include -#include - -#include - -using mapnik::label_collision_detector4; -using mapnik::box2d; -using mapnik::Map; - -namespace -{ - -std::shared_ptr -create_label_collision_detector_from_extent(box2d const &extent) -{ - return std::make_shared(extent); -} - -std::shared_ptr -create_label_collision_detector_from_map(Map const &m) -{ - double buffer = m.buffer_size(); - box2d extent(-buffer, -buffer, m.width() + buffer, m.height() + buffer); - return std::make_shared(extent); -} - -boost::python::list -make_label_boxes(std::shared_ptr det) -{ - boost::python::list boxes; - - for (label_collision_detector4::query_iterator jtr = det->begin(); - jtr != det->end(); ++jtr) - { - boxes.append >(jtr->box); - } - - return boxes; -} - -} - -void export_label_collision_detector() -{ - using namespace boost::python; - - // for overload resolution - void (label_collision_detector4::*insert_box)(box2d const &) = &label_collision_detector4::insert; - - class_, boost::noncopyable> - ("LabelCollisionDetector", - "Object to detect collisions between labels, used in the rendering process.", - no_init) - - .def("__init__", make_constructor(create_label_collision_detector_from_extent), - "Creates an empty collision detection object with a given extent. Note " - "that the constructor from Map objects is a sensible default and usually " - "what you want to do.\n" - "\n" - "Example:\n" - ">>> m = Map(size_x, size_y)\n" - ">>> buf_sz = m.buffer_size\n" - ">>> extent = mapnik.Box2d(-buf_sz, -buf_sz, m.width + buf_sz, m.height + buf_sz)\n" - ">>> detector = mapnik.LabelCollisionDetector(extent)") - - .def("__init__", make_constructor(create_label_collision_detector_from_map), - "Creates an empty collision detection object matching the given Map object. " - "The created detector will have the same size, including the buffer, as the " - "map object. This is usually what you want to do.\n" - "\n" - "Example:\n" - ">>> m = Map(size_x, size_y)\n" - ">>> detector = mapnik.LabelCollisionDetector(m)") - - .def("extent", &label_collision_detector4::extent, return_value_policy(), - "Returns the total extent (bounding box) of all labels inside the detector.\n" - "\n" - "Example:\n" - ">>> detector.extent()\n" - "Box2d(573.252589209,494.789179821,584.261023823,496.83610261)") - - .def("boxes", &make_label_boxes, - "Returns a list of all the label boxes inside the detector.") - - .def("insert", insert_box, - "Insert a 2d box into the collision detector. This can be used to ensure that " - "some space is left clear on the map for later overdrawing, for example by " - "non-Mapnik processes.\n" - "\n" - "Example:\n" - ">>> m = Map(size_x, size_y)\n" - ">>> detector = mapnik.LabelCollisionDetector(m)" - ">>> detector.insert(mapnik.Box2d(196, 254, 291, 389))") - ; -} diff --git a/bindings/python/mapnik_layer.cpp b/bindings/python/mapnik_layer.cpp deleted file mode 100644 index 405755bad..000000000 --- a/bindings/python/mapnik_layer.cpp +++ /dev/null @@ -1,388 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include - -using mapnik::layer; -using mapnik::parameters; -using mapnik::datasource_cache; - - -struct layer_pickle_suite : boost::python::pickle_suite -{ - static boost::python::tuple - getinitargs(const layer& l) - { - return boost::python::make_tuple(l.name(),l.srs()); - } - - static boost::python::tuple - getstate(const layer& l) - { - boost::python::list s; - std::vector const& style_names = l.styles(); - for (unsigned i = 0; i < style_names.size(); ++i) - { - s.append(style_names[i]); - } - return boost::python::make_tuple(l.clear_label_cache(),l.min_zoom(),l.max_zoom(),l.queryable(),l.datasource()->params(),l.cache_features(),s); - } - - static void - setstate (layer& l, boost::python::tuple state) - { - using namespace boost::python; - if (len(state) != 9) - { - PyErr_SetObject(PyExc_ValueError, - ("expected 9-item tuple in call to __setstate__; got %s" - % state).ptr() - ); - throw_error_already_set(); - } - - l.set_clear_label_cache(extract(state[0])); - - l.set_min_zoom(extract(state[1])); - - l.set_max_zoom(extract(state[2])); - - l.set_queryable(extract(state[3])); - - mapnik::parameters params = extract(state[4]); - l.set_datasource(datasource_cache::instance().create(params)); - - boost::python::list s = extract(state[5]); - for (int i=0;i(s[i])); - } - - l.set_cache_features(extract(state[6])); - } -}; - -std::vector & (mapnik::layer::*_styles_)() = &mapnik::layer::styles; - -void set_maximum_extent(mapnik::layer & l, boost::optional > const& box) -{ - if (box) - { - l.set_maximum_extent(*box); - } - else - { - l.reset_maximum_extent(); - } -} - -void set_buffer_size(mapnik::layer & l, boost::optional const& buffer_size) -{ - if (buffer_size) - { - l.set_buffer_size(*buffer_size); - } - else - { - l.reset_buffer_size(); - } -} - -PyObject * get_buffer_size(mapnik::layer & l) -{ - boost::optional buffer_size = l.buffer_size(); - if (buffer_size) - { -#if PY_VERSION_HEX >= 0x03000000 - return PyLong_FromLong(*buffer_size); -#else - return PyInt_FromLong(*buffer_size); -#endif - } - else - { - Py_RETURN_NONE; - } -} - -void export_layer() -{ - using namespace boost::python; - class_ >("Names") - .def(vector_indexing_suite,true >()) - ; - - class_("Layer", "A Mapnik map layer.", init >( - "Create a Layer with a named string and, optionally, an srs string.\n" - "\n" - "The srs can be either a Proj.4 epsg code ('+init=epsg:') or\n" - "of a Proj.4 literal ('+proj=').\n" - "If no srs is specified it will default to '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'\n" - "\n" - "Usage:\n" - ">>> from mapnik import Layer\n" - ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" - ">>> lyr\n" - "\n" - )) - - .def_pickle(layer_pickle_suite()) - - .def("envelope",&layer::envelope, - "Return the geographic envelope/bounding box." - "\n" - "Determined based on the layer datasource.\n" - "\n" - "Usage:\n" - ">>> from mapnik import Layer\n" - ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" - ">>> lyr.envelope()\n" - "box2d(-1.0,-1.0,0.0,0.0) # default until a datasource is loaded\n" - ) - - .def("visible", &layer::visible, - "Return True if this layer's data is active and visible at a given scale.\n" - "\n" - "Otherwise returns False.\n" - "Accepts a scale value as an integer or float input.\n" - "Will return False if:\n" - "\tscale >= minzoom - 1e-6\n" - "\tor:\n" - "\tscale < maxzoom + 1e-6\n" - "\n" - "Usage:\n" - ">>> from mapnik import Layer\n" - ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" - ">>> lyr.visible(1.0/1000000)\n" - "True\n" - ">>> lyr.active = False\n" - ">>> lyr.visible(1.0/1000000)\n" - "False\n" - ) - - .add_property("active", - &layer::active, - &layer::set_active, - "Get/Set whether this layer is active and will be rendered (same as status property).\n" - "\n" - "Usage:\n" - ">>> from mapnik import Layer\n" - ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" - ">>> lyr.active\n" - "True # Active by default\n" - ">>> lyr.active = False # set False to disable layer rendering\n" - ">>> lyr.active\n" - "False\n" - ) - - .add_property("status", - &layer::active, - &layer::set_active, - "Get/Set whether this layer is active and will be rendered.\n" - "\n" - "Usage:\n" - ">>> from mapnik import Layer\n" - ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" - ">>> lyr.status\n" - "True # Active by default\n" - ">>> lyr.status = False # set False to disable layer rendering\n" - ">>> lyr.status\n" - "False\n" - ) - - .add_property("clear_label_cache", - &layer::clear_label_cache, - &layer::set_clear_label_cache, - "Get/Set whether to clear the label collision detector cache for this layer during rendering\n" - "\n" - "Usage:\n" - ">>> lyr.clear_label_cache\n" - "False # False by default, meaning label positions from other layers will impact placement \n" - ">>> lyr.clear_label_cache = True # set to True to clear the label collision detector cache\n" - ) - - .add_property("cache_features", - &layer::cache_features, - &layer::set_cache_features, - "Get/Set whether features should be cached during rendering if used between multiple styles\n" - "\n" - "Usage:\n" - ">>> lyr.cache_features\n" - "False # False by default\n" - ">>> lyr.cache_features = True # set to True to enable feature caching\n" - ) - - .add_property("datasource", - &layer::datasource, - &layer::set_datasource, - "The datasource attached to this layer.\n" - "\n" - "Usage:\n" - ">>> from mapnik import Layer, Datasource\n" - ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" - ">>> lyr.datasource = Datasource(type='shape',file='world_borders')\n" - ">>> lyr.datasource\n" - "\n" - ) - - .add_property("buffer_size", - &get_buffer_size, - &set_buffer_size, - "Get/Set the size of buffer around layer in pixels.\n" - "\n" - "Usage:\n" - ">>> print(l.buffer_size)\n" - "None # None by default\n" - ">>> l.buffer_size = 2\n" - ">>> l.buffer_size\n" - "2\n" - ) - - .add_property("maximum_extent",make_function - (&layer::maximum_extent,return_value_policy()), - &set_maximum_extent, - "The maximum extent of the map.\n" - "\n" - "Usage:\n" - ">>> m.maximum_extent = Box2d(-180,-90,180,90)\n" - ) - - .add_property("maxzoom", - &layer::max_zoom, - &layer::set_max_zoom, - "Get/Set the maximum zoom lever of the layer.\n" - "\n" - "Usage:\n" - ">>> from mapnik import Layer\n" - ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" - ">>> lyr.maxzoom\n" - "1.7976931348623157e+308 # default is the numerical maximum\n" - ">>> lyr.maxzoom = 1.0/1000000\n" - ">>> lyr.maxzoom\n" - "9.9999999999999995e-07\n" - ) - - .add_property("minzoom", - &layer::min_zoom, - &layer::set_min_zoom, - "Get/Set the minimum zoom lever of the layer.\n" - "\n" - "Usage:\n" - ">>> from mapnik import Layer\n" - ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" - ">>> lyr.minzoom # default is 0\n" - "0.0\n" - ">>> lyr.minzoom = 1.0/1000000\n" - ">>> lyr.minzoom\n" - "9.9999999999999995e-07\n" - ) - - .add_property("name", - make_function(&layer::name, return_value_policy()), - &layer::set_name, - "Get/Set the name of the layer.\n" - "\n" - "Usage:\n" - ">>> from mapnik import Layer\n" - ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" - ">>> lyr.name\n" - "'My Layer'\n" - ">>> lyr.name = 'New Name'\n" - ">>> lyr.name\n" - "'New Name'\n" - ) - - .add_property("queryable", - &layer::queryable, - &layer::set_queryable, - "Get/Set whether this layer is queryable.\n" - "\n" - "Usage:\n" - ">>> from mapnik import layer\n" - ">>> lyr = layer('My layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" - ">>> lyr.queryable\n" - "False # Not queryable by default\n" - ">>> lyr.queryable = True\n" - ">>> lyr.queryable\n" - "True\n" - ) - - .add_property("srs", - make_function(&layer::srs,return_value_policy()), - &layer::set_srs, - "Get/Set the SRS of the layer.\n" - "\n" - "Usage:\n" - ">>> from mapnik import layer\n" - ">>> lyr = layer('My layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" - ">>> lyr.srs\n" - "'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' # The default srs if not initialized with custom srs\n" - ">>> # set to google mercator with Proj.4 literal\n" - "... \n" - ">>> lyr.srs = '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over'\n" - ) - - .add_property("group_by", - make_function(&layer::group_by,return_value_policy()), - &layer::set_group_by, - "Get/Set the optional layer group name.\n" - "\n" - "More details at https://github.com/mapnik/mapnik/wiki/Grouped-rendering:\n" - ) - - .add_property("styles", - make_function(_styles_,return_value_policy()), - "The styles list attached to this layer.\n" - "\n" - "Usage:\n" - ">>> from mapnik import layer\n" - ">>> lyr = layer('My layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" - ">>> lyr.styles\n" - "\n" - ">>> len(lyr.styles)\n" - "0\n # no styles until you append them\n" - "lyr.styles.append('My Style') # mapnik uses named styles for flexibility\n" - ">>> len(lyr.styles)\n" - "1\n" - ">>> lyr.styles[0]\n" - "'My Style'\n" - ) - // comparison - .def(self == self) - ; -} diff --git a/bindings/python/mapnik_logger.cpp b/bindings/python/mapnik_logger.cpp deleted file mode 100644 index 7c9591211..000000000 --- a/bindings/python/mapnik_logger.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#pragma GCC diagnostic pop - -#include -#include -#include "mapnik_enumeration.hpp" - -void export_logger() -{ - using mapnik::logger; - using mapnik::singleton; - using mapnik::CreateStatic; - using namespace boost::python; - - class_,boost::noncopyable>("Singleton",no_init) - .def("instance",&singleton::instance, - return_value_policy()) - .staticmethod("instance") - ; - - enum_("severity_type") - .value("Debug", logger::debug) - .value("Warn", logger::warn) - .value("Error", logger::error) - .value("None", logger::none) - ; - - class_ >, - boost::noncopyable>("logger",no_init) - .def("get_severity", &logger::get_severity) - .def("set_severity", &logger::set_severity) - .def("get_object_severity", &logger::get_object_severity) - .def("set_object_severity", &logger::set_object_severity) - .def("clear_object_severity", &logger::clear_object_severity) - .def("get_format", &logger::get_format) - .def("set_format", &logger::set_format) - .def("str", &logger::str) - .def("use_file", &logger::use_file) - .def("use_console", &logger::use_console) - .staticmethod("get_severity") - .staticmethod("set_severity") - .staticmethod("get_object_severity") - .staticmethod("set_object_severity") - .staticmethod("clear_object_severity") - .staticmethod("get_format") - .staticmethod("set_format") - .staticmethod("str") - .staticmethod("use_file") - .staticmethod("use_console") - ; -} diff --git a/bindings/python/mapnik_map.cpp b/bindings/python/mapnik_map.cpp deleted file mode 100644 index 15ecc67fd..000000000 --- a/bindings/python/mapnik_map.cpp +++ /dev/null @@ -1,543 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#include -#include -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include -#include -#include -#include -#include "mapnik_enumeration.hpp" - -using mapnik::color; -using mapnik::coord; -using mapnik::box2d; -using mapnik::layer; -using mapnik::Map; - -std::vector& (Map::*layers_nonconst)() = &Map::layers; -std::vector const& (Map::*layers_const)() const = &Map::layers; -mapnik::parameters& (Map::*params_nonconst)() = &Map::get_extra_parameters; - -void insert_style(mapnik::Map & m, std::string const& name, mapnik::feature_type_style const& style) -{ - m.insert_style(name,style); -} - -void insert_fontset(mapnik::Map & m, std::string const& name, mapnik::font_set const& fontset) -{ - m.insert_fontset(name,fontset); -} - -mapnik::feature_type_style find_style(mapnik::Map const& m, std::string const& name) -{ - boost::optional style = m.find_style(name); - if (!style) - { - PyErr_SetString(PyExc_KeyError, "Invalid style name"); - boost::python::throw_error_already_set(); - } - return *style; -} - -mapnik::font_set find_fontset(mapnik::Map const& m, std::string const& name) -{ - boost::optional fontset = m.find_fontset(name); - if (!fontset) - { - PyErr_SetString(PyExc_KeyError, "Invalid font_set name"); - boost::python::throw_error_already_set(); - } - return *fontset; -} - -// TODO - we likely should allow indexing by negative number from python -// for now, protect against negative values and kindly throw -mapnik::featureset_ptr query_point(mapnik::Map const& m, int index, double x, double y) -{ - if (index < 0){ - PyErr_SetString(PyExc_IndexError, "Please provide a layer index >= 0"); - boost::python::throw_error_already_set(); - } - unsigned idx = index; - return m.query_point(idx, x, y); -} - -mapnik::featureset_ptr query_map_point(mapnik::Map const& m, int index, double x, double y) -{ - if (index < 0){ - PyErr_SetString(PyExc_IndexError, "Please provide a layer index >= 0"); - boost::python::throw_error_already_set(); - } - unsigned idx = index; - return m.query_map_point(idx, x, y); -} - -void set_maximum_extent(mapnik::Map & m, boost::optional > const& box) -{ - if (box) - { - m.set_maximum_extent(*box); - } - else - { - m.reset_maximum_extent(); - } -} - -struct extract_style -{ - using result_type = boost::python::tuple; - result_type operator() (std::map::value_type const& val) const - { - return boost::python::make_tuple(val.first,val.second); - } -}; - -using style_extract_iterator = boost::transform_iterator; -using style_range = std::pair; - -style_range _styles_ (mapnik::Map const& m) -{ - return style_range( - boost::make_transform_iterator(m.begin_styles(), extract_style()), - boost::make_transform_iterator(m.end_styles(), extract_style())); -} - -void export_map() -{ - using namespace boost::python; - - // aspect ratio fix modes - mapnik::enumeration_("aspect_fix_mode") - .value("GROW_BBOX", mapnik::Map::GROW_BBOX) - .value("GROW_CANVAS",mapnik::Map::GROW_CANVAS) - .value("SHRINK_BBOX",mapnik::Map::SHRINK_BBOX) - .value("SHRINK_CANVAS",mapnik::Map::SHRINK_CANVAS) - .value("ADJUST_BBOX_WIDTH",mapnik::Map::ADJUST_BBOX_WIDTH) - .value("ADJUST_BBOX_HEIGHT",mapnik::Map::ADJUST_BBOX_HEIGHT) - .value("ADJUST_CANVAS_WIDTH",mapnik::Map::ADJUST_CANVAS_WIDTH) - .value("ADJUST_CANVAS_HEIGHT", mapnik::Map::ADJUST_CANVAS_HEIGHT) - .value("RESPECT", mapnik::Map::RESPECT) - ; - - class_ >("Layers") - .def(vector_indexing_suite >()) - ; - - class_("StyleRange") - .def("__iter__", - boost::python::range(&style_range::first, &style_range::second)) - ; - - class_("Map","The map object.",init >( - ( arg("width"),arg("height"),arg("srs") ), - "Create a Map with a width and height as integers and, optionally,\n" - "an srs string either with a Proj.4 epsg code ('+init=epsg:')\n" - "or with a Proj.4 literal ('+proj=').\n" - "If no srs is specified the map will default to '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'\n" - "\n" - "Usage:\n" - ">>> from mapnik import Map\n" - ">>> m = Map(600,400)\n" - ">>> m\n" - "\n" - ">>> m.srs\n" - "'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'\n" - )) - - .def("append_style",insert_style, - (arg("style_name"),arg("style_object")), - "Insert a Mapnik Style onto the map by appending it.\n" - "\n" - "Usage:\n" - ">>> sty\n" - "\n" - ">>> m.append_style('Style Name', sty)\n" - "True # style object added to map by name\n" - ">>> m.append_style('Style Name', sty)\n" - "False # you can only append styles with unique names\n" - ) - - .def("append_fontset",insert_fontset, - (arg("fontset")), - "Add a FontSet to the map." - ) - - .def("buffered_envelope", - &Map::get_buffered_extent, - "Get the Box2d() of the Map given\n" - "the Map.buffer_size.\n" - "\n" - "Usage:\n" - ">>> m = Map(600,400)\n" - ">>> m.envelope()\n" - "Box2d(-1.0,-1.0,0.0,0.0)\n" - ">>> m.buffered_envelope()\n" - "Box2d(-1.0,-1.0,0.0,0.0)\n" - ">>> m.buffer_size = 1\n" - ">>> m.buffered_envelope()\n" - "Box2d(-1.02222222222,-1.02222222222,0.0222222222222,0.0222222222222)\n" - ) - - .def("envelope", - make_function(&Map::get_current_extent, - return_value_policy()), - "Return the Map Box2d object\n" - "and print the string representation\n" - "of the current extent of the map.\n" - "\n" - "Usage:\n" - ">>> m.envelope()\n" - "Box2d(-0.185833333333,-0.96,0.189166666667,-0.71)\n" - ">>> dir(m.envelope())\n" - "...'center', 'contains', 'expand_to_include', 'forward',\n" - "...'height', 'intersect', 'intersects', 'inverse', 'maxx',\n" - "...'maxy', 'minx', 'miny', 'width'\n" - ) - - .def("find_fontset",find_fontset, - (arg("name")), - "Find a fontset by name." - ) - - .def("find_style", - find_style, - (arg("name")), - "Query the Map for a style by name and return\n" - "a style object if found or raise KeyError\n" - "style if not found.\n" - "\n" - "Usage:\n" - ">>> m.find_style('Style Name')\n" - "\n" - ) - - .add_property("styles", _styles_) - - .def("pan",&Map::pan, - (arg("x"),arg("y")), - "Set the Map center at a given x,y location\n" - "as integers in the coordinates of the pixmap or map surface.\n" - "\n" - "Usage:\n" - ">>> m = Map(600,400)\n" - ">>> m.envelope().center()\n" - "Coord(-0.5,-0.5) # default Map center\n" - ">>> m.pan(-1,-1)\n" - ">>> m.envelope().center()\n" - "Coord(0.00166666666667,-0.835)\n" - ) - - .def("pan_and_zoom",&Map::pan_and_zoom, - (arg("x"),arg("y"),arg("factor")), - "Set the Map center at a given x,y location\n" - "and zoom factor as a float.\n" - "\n" - "Usage:\n" - ">>> m = Map(600,400)\n" - ">>> m.envelope().center()\n" - "Coord(-0.5,-0.5) # default Map center\n" - ">>> m.scale()\n" - "-0.0016666666666666668\n" - ">>> m.pan_and_zoom(-1,-1,0.25)\n" - ">>> m.scale()\n" - "0.00062500000000000001\n" - ) - - .def("query_map_point",query_map_point, - (arg("layer_idx"),arg("pixel_x"),arg("pixel_y")), - "Query a Map Layer (by layer index) for features \n" - "intersecting the given x,y location in the pixel\n" - "coordinates of the rendered map image.\n" - "Layer index starts at 0 (first layer in map).\n" - "Will return a Mapnik Featureset if successful\n" - "otherwise will return None.\n" - "\n" - "Usage:\n" - ">>> featureset = m.query_map_point(0,200,200)\n" - ">>> featureset\n" - "\n" - ">>> featureset.features\n" - ">>> []\n" - ) - - .def("query_point",query_point, - (arg("layer idx"),arg("x"),arg("y")), - "Query a Map Layer (by layer index) for features \n" - "intersecting the given x,y location in the coordinates\n" - "of map projection.\n" - "Layer index starts at 0 (first layer in map).\n" - "Will return a Mapnik Featureset if successful\n" - "otherwise will return None.\n" - "\n" - "Usage:\n" - ">>> featureset = m.query_point(0,-122,48)\n" - ">>> featureset\n" - "\n" - ">>> featureset.features\n" - ">>> []\n" - ) - - .def("remove_all",&Map::remove_all, - "Remove all Mapnik Styles and layers from the Map.\n" - "\n" - "Usage:\n" - ">>> m.remove_all()\n" - ) - - .def("remove_style",&Map::remove_style, - (arg("style_name")), - "Remove a Mapnik Style from the map.\n" - "\n" - "Usage:\n" - ">>> m.remove_style('Style Name')\n" - ) - - .def("resize",&Map::resize, - (arg("width"),arg("height")), - "Resize a Mapnik Map.\n" - "\n" - "Usage:\n" - ">>> m.resize(64,64)\n" - ) - - .def("scale", &Map::scale, - "Return the Map Scale.\n" - "Usage:\n" - "\n" - ">>> m.scale()\n" - ) - - .def("scale_denominator", &Map::scale_denominator, - "Return the Map Scale Denominator.\n" - "Usage:\n" - "\n" - ">>> m.scale_denominator()\n" - ) - - .def("view_transform",&Map::transform, - "Return the map ViewTransform object\n" - "which is used internally to convert between\n" - "geographic coordinates and screen coordinates.\n" - "\n" - "Usage:\n" - ">>> m.view_transform()\n" - ) - - .def("zoom",&Map::zoom, - (arg("factor")), - "Zoom in or out by a given factor.\n" - "positive number larger than 1, zooms out\n" - "positive number smaller than 1, zooms in\n" - "\n" - "Usage:\n" - "\n" - ">>> m.zoom(0.25)\n" - ) - - .def("zoom_all",&Map::zoom_all, - "Set the geographical extent of the map\n" - "to the combined extents of all active layers.\n" - "\n" - "Usage:\n" - ">>> m.zoom_all()\n" - ) - - .def("zoom_to_box",&Map::zoom_to_box, - (arg("Boxd2")), - "Set the geographical extent of the map\n" - "by specifying a Mapnik Box2d.\n" - "\n" - "Usage:\n" - ">>> extext = Box2d(-180.0, -90.0, 180.0, 90.0)\n" - ">>> m.zoom_to_box(extent)\n" - ) - - .add_property("parameters",make_function(params_nonconst,return_value_policy()),"TODO") - - .add_property("aspect_fix_mode", - &Map::get_aspect_fix_mode, - &Map::set_aspect_fix_mode, - // TODO - how to add arg info to properties? - //(arg("aspect_fix_mode")), - "Get/Set aspect fix mode.\n" - "Usage:\n" - "\n" - ">>> m.aspect_fix_mode = aspect_fix_mode.GROW_BBOX\n" - ) - - .add_property("background",make_function - (&Map::background,return_value_policy()), - &Map::set_background, - "The background color of the map (same as background_color property).\n" - "\n" - "Usage:\n" - ">>> m.background = Color('steelblue')\n" - ) - - .add_property("background_color",make_function - (&Map::background,return_value_policy()), - &Map::set_background, - "The background color of the map.\n" - "\n" - "Usage:\n" - ">>> m.background_color = Color('steelblue')\n" - ) - - .add_property("background_image",make_function - (&Map::background_image,return_value_policy()), - &Map::set_background_image, - "The optional background image of the map.\n" - "\n" - "Usage:\n" - ">>> m.background_image = '/path/to/image.png'\n" - ) - - .add_property("background_image_comp_op",&Map::background_image_comp_op, - &Map::set_background_image_comp_op, - "The background image compositing operation.\n" - "\n" - "Usage:\n" - ">>> m.background_image_comp_op = mapnik.CompositeOp.src_over\n" - ) - - .add_property("background_image_opacity",&Map::background_image_opacity, - &Map::set_background_image_opacity, - "The background image opacity.\n" - "\n" - "Usage:\n" - ">>> m.background_image_opacity = 1.0\n" - ) - - .add_property("base", - make_function(&Map::base_path,return_value_policy()), - &Map::set_base_path, - "The base path of the map where any files using relative \n" - "paths will be interpreted as relative to.\n" - "\n" - "Usage:\n" - ">>> m.base_path = '.'\n" - ) - - .add_property("buffer_size", - &Map::buffer_size, - &Map::set_buffer_size, - "Get/Set the size of buffer around map in pixels.\n" - "\n" - "Usage:\n" - ">>> m.buffer_size\n" - "0 # zero by default\n" - ">>> m.buffer_size = 2\n" - ">>> m.buffer_size\n" - "2\n" - ) - - .add_property("height", - &Map::height, - &Map::set_height, - "Get/Set the height of the map in pixels.\n" - "Minimum settable size is 16 pixels.\n" - "\n" - "Usage:\n" - ">>> m.height\n" - "400\n" - ">>> m.height = 600\n" - ">>> m.height\n" - "600\n" - ) - - .add_property("layers",make_function - (layers_nonconst,return_value_policy()), - "The list of map layers.\n" - "\n" - "Usage:\n" - ">>> m.layers\n" - "" - ">>> m.layers[0]\n" - "\n" - ) - - .add_property("maximum_extent",make_function - (&Map::maximum_extent,return_value_policy()), - &set_maximum_extent, - "The maximum extent of the map.\n" - "\n" - "Usage:\n" - ">>> m.maximum_extent = Box2d(-180,-90,180,90)\n" - ) - - .add_property("srs", - make_function(&Map::srs,return_value_policy()), - &Map::set_srs, - "Spatial reference in Proj.4 format.\n" - "Either an epsg code or proj literal.\n" - "For example, a proj literal:\n" - "\t'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'\n" - "and a proj epsg code:\n" - "\t'+init=epsg:4326'\n" - "\n" - "Note: using epsg codes requires the installation of\n" - "the Proj.4 'epsg' data file normally found in '/usr/local/share/proj'\n" - "\n" - "Usage:\n" - ">>> m.srs\n" - "'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' # The default srs if not initialized with custom srs\n" - ">>> # set to google mercator with Proj.4 literal\n" - "... \n" - ">>> m.srs = '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over'\n" - ) - - .add_property("width", - &Map::width, - &Map::set_width, - "Get/Set the width of the map in pixels.\n" - "Minimum settable size is 16 pixels.\n" - "\n" - "Usage:\n" - ">>> m.width\n" - "600\n" - ">>> m.width = 800\n" - ">>> m.width\n" - "800\n" - ) - // comparison - .def(self == self) - ; -} diff --git a/bindings/python/mapnik_palette.cpp b/bindings/python/mapnik_palette.cpp deleted file mode 100644 index 12cf2fdec..000000000 --- a/bindings/python/mapnik_palette.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#pragma GCC diagnostic pop - -//mapnik -#include - -// stl -#include - -static std::shared_ptr make_palette( std::string const& palette, std::string const& format ) -{ - mapnik::rgba_palette::palette_type type = mapnik::rgba_palette::PALETTE_RGBA; - if (format == "rgb") - type = mapnik::rgba_palette::PALETTE_RGB; - else if (format == "act") - type = mapnik::rgba_palette::PALETTE_ACT; - else - throw std::runtime_error("invalid type passed for mapnik.Palette: must be either rgba, rgb, or act"); - return std::make_shared(palette, type); -} - -void export_palette () -{ - using namespace boost::python; - - class_, - boost::noncopyable >("Palette",no_init) - //, init( - // ( arg("palette"), arg("type")), - // "Creates a new color palette from a file\n" - // ) - .def( "__init__", boost::python::make_constructor(make_palette)) - .def("to_string", &mapnik::rgba_palette::to_string, - "Returns the palette as a string.\n" - ) - ; -} diff --git a/bindings/python/mapnik_parameters.cpp b/bindings/python/mapnik_parameters.cpp deleted file mode 100644 index 21504d3ba..000000000 --- a/bindings/python/mapnik_parameters.cpp +++ /dev/null @@ -1,246 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include -#include -#include -// stl -#include - -using mapnik::parameter; -using mapnik::parameters; - -struct parameter_pickle_suite : boost::python::pickle_suite -{ - static boost::python::tuple - getinitargs(const parameter& p) - { - using namespace boost::python; - return boost::python::make_tuple(p.first,p.second); - } -}; - -struct parameters_pickle_suite : boost::python::pickle_suite -{ - static boost::python::tuple - getstate(const parameters& p) - { - using namespace boost::python; - dict d; - parameters::const_iterator pos=p.begin(); - while(pos!=p.end()) - { - d[pos->first] = pos->second; - ++pos; - } - return boost::python::make_tuple(d); - } - - static void setstate(parameters& p, boost::python::tuple state) - { - using namespace boost::python; - if (len(state) != 1) - { - PyErr_SetObject(PyExc_ValueError, - ("expected 1-item tuple in call to __setstate__; got %s" - % state).ptr() - ); - throw_error_already_set(); - } - - dict d = extract(state[0]); - boost::python::list keys = d.keys(); - for (int i=0; i(keys[i]); - object obj = d[key]; - extract ex0(obj); - extract ex1(obj); - extract ex2(obj); - extract ex3(obj); - - // TODO - this is never hit - we need proper python string -> std::string to get invoked here - if (ex0.check()) - { - p[key] = ex0(); - } - else if (ex1.check()) - { - p[key] = ex1(); - } - else if (ex2.check()) - { - p[key] = ex2(); - } - else if (ex3.check()) - { - std::string buffer; - mapnik::to_utf8(ex3(),buffer); - p[key] = buffer; - } - else - { - MAPNIK_LOG_DEBUG(bindings) << "parameters_pickle_suite: Could not unpickle key=" << key; - } - } - } -}; - - -mapnik::value_holder get_params_by_key1(mapnik::parameters const& p, std::string const& key) -{ - parameters::const_iterator pos = p.find(key); - if (pos != p.end()) - { - // will be auto-converted to proper python type by `mapnik_params_to_python` - return pos->second; - } - return mapnik::value_null(); -} - -mapnik::value_holder get_params_by_key2(mapnik::parameters const& p, std::string const& key) -{ - parameters::const_iterator pos = p.find(key); - if (pos == p.end()) - { - PyErr_SetString(PyExc_KeyError, key.c_str()); - boost::python::throw_error_already_set(); - } - // will be auto-converted to proper python type by `mapnik_params_to_python` - return pos->second; -} - -mapnik::parameter get_params_by_index(mapnik::parameters const& p, int index) -{ - if (index < 0 || static_cast(index) > p.size()) - { - PyErr_SetString(PyExc_IndexError, "Index is out of range"); - throw boost::python::error_already_set(); - } - - parameters::const_iterator itr = p.begin(); - std::advance(itr, index); - if (itr != p.end()) - { - return *itr; - } - PyErr_SetString(PyExc_IndexError, "Index is out of range"); - throw boost::python::error_already_set(); -} - -unsigned get_params_size(mapnik::parameters const& p) -{ - return p.size(); -} - -void add_parameter(mapnik::parameters & p, mapnik::parameter const& param) -{ - p[param.first] = param.second; -} - -mapnik::value_holder get_param(mapnik::parameter const& p, int index) -{ - if (index == 0) - { - return p.first; - } - else if (index == 1) - { - return p.second; - } - else - { - PyErr_SetString(PyExc_IndexError, "Index is out of range"); - throw boost::python::error_already_set(); - } -} - -std::shared_ptr create_parameter(mapnik::value_unicode_string const& key, mapnik::value_holder const& value) -{ - std::string key_utf8; - mapnik::to_utf8(key, key_utf8); - return std::make_shared(key_utf8,value); -} - -bool contains(mapnik::parameters const& p, std::string const& key) -{ - parameters::const_iterator pos = p.find(key); - return pos != p.end(); -} - -// needed for Python_Unicode to std::string (utf8) conversion - -std::shared_ptr create_parameter_from_string(mapnik::value_unicode_string const& key, mapnik::value_unicode_string const& ustr) -{ - std::string key_utf8; - std::string ustr_utf8; - mapnik::to_utf8(key, key_utf8); - mapnik::to_utf8(ustr,ustr_utf8); - return std::make_shared(key_utf8, ustr_utf8); -} - -void export_parameters() -{ - using namespace boost::python; - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - - class_ >("Parameter",no_init) - .def("__init__", make_constructor(create_parameter), - "Create a mapnik.Parameter from a pair of values, the first being a string\n" - "and the second being either a string, and integer, or a float") - .def("__init__", make_constructor(create_parameter_from_string), - "Create a mapnik.Parameter from a pair of values, the first being a string\n" - "and the second being either a string, and integer, or a float") - - .def_pickle(parameter_pickle_suite()) - .def("__getitem__",get_param) - ; - - class_("Parameters",init<>()) - .def_pickle(parameters_pickle_suite()) - .def("get",get_params_by_key1) - .def("__getitem__",get_params_by_key2) - .def("__getitem__",get_params_by_index) - .def("__len__",get_params_size) - .def("__contains__",contains) - .def("append",add_parameter) - .def("iteritems",iterator()) - ; -} diff --git a/bindings/python/mapnik_proj_transform.cpp b/bindings/python/mapnik_proj_transform.cpp deleted file mode 100644 index 393d2b860..000000000 --- a/bindings/python/mapnik_proj_transform.cpp +++ /dev/null @@ -1,154 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include -#include - -// stl -#include - - -using mapnik::proj_transform; -using mapnik::projection; - -struct proj_transform_pickle_suite : boost::python::pickle_suite -{ - static boost::python::tuple - getinitargs(const proj_transform& p) - { - using namespace boost::python; - return boost::python::make_tuple(p.source(),p.dest()); - } -}; - -namespace { - -mapnik::coord2d forward_transform_c(mapnik::proj_transform& t, mapnik::coord2d const& c) -{ - double x = c.x; - double y = c.y; - double z = 0.0; - if (!t.forward(x,y,z)) { - std::ostringstream s; - s << "Failed to forward project " - << "from " << t.source().params() << " to: " << t.dest().params(); - throw std::runtime_error(s.str()); - } - return mapnik::coord2d(x,y); -} - -mapnik::coord2d backward_transform_c(mapnik::proj_transform& t, mapnik::coord2d const& c) -{ - double x = c.x; - double y = c.y; - double z = 0.0; - if (!t.backward(x,y,z)) { - std::ostringstream s; - s << "Failed to back project " - << "from " << t.dest().params() << " to: " << t.source().params(); - throw std::runtime_error(s.str()); - } - return mapnik::coord2d(x,y); -} - -mapnik::box2d forward_transform_env(mapnik::proj_transform& t, mapnik::box2d const & box) -{ - mapnik::box2d new_box = box; - if (!t.forward(new_box)) { - std::ostringstream s; - s << "Failed to forward project " - << "from " << t.source().params() << " to: " << t.dest().params(); - throw std::runtime_error(s.str()); - } - return new_box; -} - -mapnik::box2d backward_transform_env(mapnik::proj_transform& t, mapnik::box2d const & box) -{ - mapnik::box2d new_box = box; - if (!t.backward(new_box)){ - std::ostringstream s; - s << "Failed to back project " - << "from " << t.dest().params() << " to: " << t.source().params(); - throw std::runtime_error(s.str()); - } - return new_box; -} - -mapnik::box2d forward_transform_env_p(mapnik::proj_transform& t, mapnik::box2d const & box, unsigned int points) -{ - mapnik::box2d new_box = box; - if (!t.forward(new_box,points)) { - std::ostringstream s; - s << "Failed to forward project " - << "from " << t.source().params() << " to: " << t.dest().params(); - throw std::runtime_error(s.str()); - } - return new_box; -} - -mapnik::box2d backward_transform_env_p(mapnik::proj_transform& t, mapnik::box2d const & box, unsigned int points) -{ - mapnik::box2d new_box = box; - if (!t.backward(new_box,points)){ - std::ostringstream s; - s << "Failed to back project " - << "from " << t.dest().params() << " to: " << t.source().params(); - throw std::runtime_error(s.str()); - } - return new_box; -} - -} - -void export_proj_transform () -{ - using namespace boost::python; - - class_("ProjTransform", init< projection const&, projection const& >()) - .def_pickle(proj_transform_pickle_suite()) - .def("forward", forward_transform_c) - .def("backward",backward_transform_c) - .def("forward", forward_transform_env) - .def("backward",backward_transform_env) - .def("forward", forward_transform_env_p) - .def("backward",backward_transform_env_p) - ; - -} diff --git a/bindings/python/mapnik_projection.cpp b/bindings/python/mapnik_projection.cpp deleted file mode 100644 index 235fa9b6c..000000000 --- a/bindings/python/mapnik_projection.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include - -using mapnik::projection; - -struct projection_pickle_suite : boost::python::pickle_suite -{ - static boost::python::tuple - getinitargs(const projection& p) - { - using namespace boost::python; - return boost::python::make_tuple(p.params()); - } -}; - -namespace { -mapnik::coord2d forward_pt(mapnik::coord2d const& pt, - mapnik::projection const& prj) -{ - double x = pt.x; - double y = pt.y; - prj.forward(x,y); - return mapnik::coord2d(x,y); -} - -mapnik::coord2d inverse_pt(mapnik::coord2d const& pt, - mapnik::projection const& prj) -{ - double x = pt.x; - double y = pt.y; - prj.inverse(x,y); - return mapnik::coord2d(x,y); -} - -mapnik::box2d forward_env(mapnik::box2d const & box, - mapnik::projection const& prj) -{ - double minx = box.minx(); - double miny = box.miny(); - double maxx = box.maxx(); - double maxy = box.maxy(); - prj.forward(minx,miny); - prj.forward(maxx,maxy); - return mapnik::box2d(minx,miny,maxx,maxy); -} - -mapnik::box2d inverse_env(mapnik::box2d const & box, - mapnik::projection const& prj) -{ - double minx = box.minx(); - double miny = box.miny(); - double maxx = box.maxx(); - double maxy = box.maxy(); - prj.inverse(minx,miny); - prj.inverse(maxx,maxy); - return mapnik::box2d(minx,miny,maxx,maxy); -} - -} - -void export_projection () -{ - using namespace boost::python; - - class_("Projection", "Represents a map projection.",init( - (arg("proj4_string")), - "Constructs a new projection from its PROJ.4 string representation.\n" - "\n" - "The constructor will throw a RuntimeError in case the projection\n" - "cannot be initialized.\n" - ) - ) - .def_pickle(projection_pickle_suite()) - .def ("params", make_function(&projection::params, - return_value_policy()), - "Returns the PROJ.4 string for this projection.\n") - .def ("expanded",&projection::expanded, - "normalize PROJ.4 definition by expanding +init= syntax\n") - .add_property ("geographic", &projection::is_geographic, - "This property is True if the projection is a geographic projection\n" - "(i.e. it uses lon/lat coordinates)\n") - ; - - def("forward_",&forward_pt); - def("inverse_",&inverse_pt); - def("forward_",&forward_env); - def("inverse_",&inverse_env); - -} diff --git a/bindings/python/mapnik_python.cpp b/bindings/python/mapnik_python.cpp deleted file mode 100644 index b4ef3a92c..000000000 --- a/bindings/python/mapnik_python.cpp +++ /dev/null @@ -1,1072 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" -#include "python_to_value.hpp" -#include // for keywords, arg, etc -#include -#include // for def -#include -#include // for none -#include // for dict -#include -#include // for list -#include // for BOOST_PYTHON_MODULE -#include // for get_managed_object -#include -#include -#pragma GCC diagnostic pop - -// stl -#include -#include - -void export_color(); -void export_coord(); -void export_layer(); -void export_parameters(); -void export_envelope(); -void export_query(); -void export_geometry(); -void export_palette(); -void export_image(); -void export_image_view(); -void export_gamma_method(); -void export_scaling_method(); -#if defined(GRID_RENDERER) -void export_grid(); -void export_grid_view(); -#endif -void export_map(); -void export_python(); -void export_expression(); -void export_rule(); -void export_style(); -void export_feature(); -void export_featureset(); -void export_fontset(); -void export_datasource(); -void export_datasource_cache(); -void export_symbolizer(); -void export_markers_symbolizer(); -void export_point_symbolizer(); -void export_line_symbolizer(); -void export_line_pattern_symbolizer(); -void export_polygon_symbolizer(); -void export_building_symbolizer(); -void export_polygon_pattern_symbolizer(); -void export_raster_symbolizer(); -void export_text_placement(); -void export_shield_symbolizer(); -void export_debug_symbolizer(); -void export_group_symbolizer(); -void export_font_engine(); -void export_projection(); -void export_proj_transform(); -void export_view_transform(); -void export_raster_colorizer(); -void export_label_collision_detector(); -void export_logger(); - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(GRID_RENDERER) -#include "python_grid_utils.hpp" -#endif -#include "mapnik_value_converter.hpp" -#include "mapnik_enumeration_wrapper_converter.hpp" -#include "mapnik_threads.hpp" -#include "python_optional.hpp" -#include -#if defined(SHAPE_MEMORY_MAPPED_FILE) -#include -#endif - -#if defined(SVG_RENDERER) -#include -#endif - -namespace mapnik { - class font_set; - class layer; - class color; - class label_collision_detector4; -} -void clear_cache() -{ - mapnik::marker_cache::instance().clear(); -#if defined(SHAPE_MEMORY_MAPPED_FILE) - mapnik::mapped_memory_cache::instance().clear(); -#endif -} - -#if defined(HAVE_CAIRO) -#include -#include -#include -#endif - -#if defined(HAVE_PYCAIRO) -#include -#include -#include -static Pycairo_CAPI_t *Pycairo_CAPI; -static void *extract_surface(PyObject* op) -{ - if (PyObject_TypeCheck(op, const_cast(Pycairo_CAPI->Surface_Type))) - { - return op; - } - else - { - return 0; - } -} - -static void *extract_context(PyObject* op) -{ - if (PyObject_TypeCheck(op, const_cast(Pycairo_CAPI->Context_Type))) - { - return op; - } - else - { - return 0; - } -} - -void register_cairo() -{ -#if PY_MAJOR_VERSION >= 3 - Pycairo_CAPI = (Pycairo_CAPI_t*) PyCapsule_Import(const_cast("cairo.CAPI"), 0); -#else - Pycairo_CAPI = (Pycairo_CAPI_t*) PyCObject_Import(const_cast("cairo"), const_cast("CAPI")); -#endif - if (Pycairo_CAPI == nullptr) return; - - boost::python::converter::registry::insert(&extract_surface, boost::python::type_id()); - boost::python::converter::registry::insert(&extract_context, boost::python::type_id()); -} -#endif - -using mapnik::python_thread; -using mapnik::python_unblock_auto_block; -#ifdef MAPNIK_DEBUG -bool python_thread::thread_support = true; -#endif -boost::thread_specific_ptr python_thread::state; - -struct agg_renderer_visitor_1 -{ - agg_renderer_visitor_1(mapnik::Map const& m, double scale_factor, unsigned offset_x, unsigned offset_y) - : m_(m), scale_factor_(scale_factor), offset_x_(offset_x), offset_y_(offset_y) {} - - template - void operator() (T & pixmap) - { - throw std::runtime_error("This image type is not currently supported for rendering."); - } - - private: - mapnik::Map const& m_; - double scale_factor_; - unsigned offset_x_; - unsigned offset_y_; -}; - -template <> -void agg_renderer_visitor_1::operator() (mapnik::image_rgba8 & pixmap) -{ - mapnik::agg_renderer ren(m_,pixmap,scale_factor_,offset_x_, offset_y_); - ren.apply(); -} - -struct agg_renderer_visitor_2 -{ - agg_renderer_visitor_2(mapnik::Map const &m, std::shared_ptr detector, - double scale_factor, unsigned offset_x, unsigned offset_y) - : m_(m), detector_(detector), scale_factor_(scale_factor), offset_x_(offset_x), offset_y_(offset_y) {} - - template - void operator() (T & pixmap) - { - throw std::runtime_error("This image type is not currently supported for rendering."); - } - - private: - mapnik::Map const& m_; - std::shared_ptr detector_; - double scale_factor_; - unsigned offset_x_; - unsigned offset_y_; -}; - -template <> -void agg_renderer_visitor_2::operator() (mapnik::image_rgba8 & pixmap) -{ - mapnik::agg_renderer ren(m_,pixmap,detector_, scale_factor_,offset_x_, offset_y_); - ren.apply(); -} - -struct agg_renderer_visitor_3 -{ - agg_renderer_visitor_3(mapnik::Map const& m, mapnik::request const& req, mapnik::attributes const& vars, - double scale_factor, unsigned offset_x, unsigned offset_y) - : m_(m), req_(req), vars_(vars), scale_factor_(scale_factor), offset_x_(offset_x), offset_y_(offset_y) {} - - template - void operator() (T & pixmap) - { - throw std::runtime_error("This image type is not currently supported for rendering."); - } - - private: - mapnik::Map const& m_; - mapnik::request const& req_; - mapnik::attributes const& vars_; - double scale_factor_; - unsigned offset_x_; - unsigned offset_y_; - -}; - -template <> -void agg_renderer_visitor_3::operator() (mapnik::image_rgba8 & pixmap) -{ - mapnik::agg_renderer ren(m_,req_, vars_, pixmap, scale_factor_, offset_x_, offset_y_); - ren.apply(); -} - -struct agg_renderer_visitor_4 -{ - agg_renderer_visitor_4(mapnik::Map const& m, double scale_factor, unsigned offset_x, unsigned offset_y, - mapnik::layer const& layer, std::set& names) - : m_(m), scale_factor_(scale_factor), offset_x_(offset_x), offset_y_(offset_y), - layer_(layer), names_(names) {} - - template - void operator() (T & pixmap) - { - throw std::runtime_error("This image type is not currently supported for rendering."); - } - - private: - mapnik::Map const& m_; - double scale_factor_; - unsigned offset_x_; - unsigned offset_y_; - mapnik::layer const& layer_; - std::set & names_; -}; - -template <> -void agg_renderer_visitor_4::operator() (mapnik::image_rgba8 & pixmap) -{ - mapnik::agg_renderer ren(m_,pixmap,scale_factor_,offset_x_, offset_y_); - ren.apply(layer_, names_); -} - - -void render(mapnik::Map const& map, - mapnik::image_any& image, - double scale_factor = 1.0, - unsigned offset_x = 0u, - unsigned offset_y = 0u) -{ - python_unblock_auto_block b; - mapnik::util::apply_visitor(agg_renderer_visitor_1(map, scale_factor, offset_x, offset_y), image); -} - -void render_with_vars(mapnik::Map const& map, - mapnik::image_any& image, - boost::python::dict const& d, - double scale_factor = 1.0, - unsigned offset_x = 0u, - unsigned offset_y = 0u) -{ - mapnik::attributes vars = mapnik::dict2attr(d); - mapnik::request req(map.width(),map.height(),map.get_current_extent()); - req.set_buffer_size(map.buffer_size()); - python_unblock_auto_block b; - mapnik::util::apply_visitor(agg_renderer_visitor_3(map, req, vars, scale_factor, offset_x, offset_y), image); -} - -void render_with_detector( - mapnik::Map const& map, - mapnik::image_any &image, - std::shared_ptr detector, - double scale_factor = 1.0, - unsigned offset_x = 0u, - unsigned offset_y = 0u) -{ - python_unblock_auto_block b; - mapnik::util::apply_visitor(agg_renderer_visitor_2(map, detector, scale_factor, offset_x, offset_y), image); -} - -void render_layer2(mapnik::Map const& map, - mapnik::image_any& image, - unsigned layer_idx, - double scale_factor, - unsigned offset_x, - unsigned offset_y) -{ - std::vector const& layers = map.layers(); - std::size_t layer_num = layers.size(); - if (layer_idx >= layer_num) { - std::ostringstream s; - s << "Zero-based layer index '" << layer_idx << "' not valid, only '" - << layer_num << "' layers are in map\n"; - throw std::runtime_error(s.str()); - } - - python_unblock_auto_block b; - mapnik::layer const& layer = layers[layer_idx]; - std::set names; - mapnik::util::apply_visitor(agg_renderer_visitor_4(map, scale_factor, offset_x, offset_y, layer, names), image); -} - -#if defined(HAVE_CAIRO) && defined(HAVE_PYCAIRO) - -void render3(mapnik::Map const& map, - PycairoSurface* py_surface, - double scale_factor = 1.0, - unsigned offset_x = 0, - unsigned offset_y = 0) -{ - python_unblock_auto_block b; - mapnik::cairo_surface_ptr surface(cairo_surface_reference(py_surface->surface), mapnik::cairo_surface_closer()); - mapnik::cairo_renderer ren(map,mapnik::create_context(surface),scale_factor,offset_x,offset_y); - ren.apply(); -} - -void render4(mapnik::Map const& map, PycairoSurface* py_surface) -{ - python_unblock_auto_block b; - mapnik::cairo_surface_ptr surface(cairo_surface_reference(py_surface->surface), mapnik::cairo_surface_closer()); - mapnik::cairo_renderer ren(map,mapnik::create_context(surface)); - ren.apply(); -} - -void render5(mapnik::Map const& map, - PycairoContext* py_context, - double scale_factor = 1.0, - unsigned offset_x = 0, - unsigned offset_y = 0) -{ - python_unblock_auto_block b; - mapnik::cairo_ptr context(cairo_reference(py_context->ctx), mapnik::cairo_closer()); - mapnik::cairo_renderer ren(map,context,scale_factor,offset_x, offset_y); - ren.apply(); -} - -void render6(mapnik::Map const& map, PycairoContext* py_context) -{ - python_unblock_auto_block b; - mapnik::cairo_ptr context(cairo_reference(py_context->ctx), mapnik::cairo_closer()); - mapnik::cairo_renderer ren(map,context); - ren.apply(); -} -void render_with_detector2( - mapnik::Map const& map, - PycairoContext* py_context, - std::shared_ptr detector) -{ - python_unblock_auto_block b; - mapnik::cairo_ptr context(cairo_reference(py_context->ctx), mapnik::cairo_closer()); - mapnik::cairo_renderer ren(map,context,detector); - ren.apply(); -} - -void render_with_detector3( - mapnik::Map const& map, - PycairoContext* py_context, - std::shared_ptr detector, - double scale_factor = 1.0, - unsigned offset_x = 0u, - unsigned offset_y = 0u) -{ - python_unblock_auto_block b; - mapnik::cairo_ptr context(cairo_reference(py_context->ctx), mapnik::cairo_closer()); - mapnik::cairo_renderer ren(map,context,detector,scale_factor,offset_x,offset_y); - ren.apply(); -} - -void render_with_detector4( - mapnik::Map const& map, - PycairoSurface* py_surface, - std::shared_ptr detector) -{ - python_unblock_auto_block b; - mapnik::cairo_surface_ptr surface(cairo_surface_reference(py_surface->surface), mapnik::cairo_surface_closer()); - mapnik::cairo_renderer ren(map, mapnik::create_context(surface), detector); - ren.apply(); -} - -void render_with_detector5( - mapnik::Map const& map, - PycairoSurface* py_surface, - std::shared_ptr detector, - double scale_factor = 1.0, - unsigned offset_x = 0u, - unsigned offset_y = 0u) -{ - python_unblock_auto_block b; - mapnik::cairo_surface_ptr surface(cairo_surface_reference(py_surface->surface), mapnik::cairo_surface_closer()); - mapnik::cairo_renderer ren(map, mapnik::create_context(surface), detector, scale_factor, offset_x, offset_y); - ren.apply(); -} - -#endif - - -void render_tile_to_file(mapnik::Map const& map, - unsigned offset_x, unsigned offset_y, - unsigned width, unsigned height, - std::string const& file, - std::string const& format) -{ - mapnik::image_any image(width,height); - render(map,image,1.0,offset_x, offset_y); - mapnik::save_to_file(image,file,format); -} - -void render_to_file1(mapnik::Map const& map, - std::string const& filename, - std::string const& format) -{ - if (format == "svg-ng") - { -#if defined(SVG_RENDERER) - std::ofstream file (filename.c_str(), std::ios::out|std::ios::trunc|std::ios::binary); - if (!file) - { - throw mapnik::ImageWriterException("could not open file for writing: " + filename); - } - using iter_type = std::ostream_iterator; - iter_type output_stream_iterator(file); - mapnik::svg_renderer ren(map,output_stream_iterator); - ren.apply(); -#else - throw mapnik::ImageWriterException("SVG backend not available, cannot write to format: " + format); -#endif - } - else if (format == "pdf" || format == "svg" || format =="ps" || format == "ARGB32" || format == "RGB24") - { -#if defined(HAVE_CAIRO) - mapnik::save_to_cairo_file(map,filename,format,1.0); -#else - throw mapnik::ImageWriterException("Cairo backend not available, cannot write to format: " + format); -#endif - } - else - { - mapnik::image_any image(map.width(),map.height()); - render(map,image,1.0,0,0); - mapnik::save_to_file(image,filename,format); - } -} - -void render_to_file2(mapnik::Map const& map,std::string const& filename) -{ - std::string format = mapnik::guess_type(filename); - if (format == "pdf" || format == "svg" || format =="ps") - { -#if defined(HAVE_CAIRO) - mapnik::save_to_cairo_file(map,filename,format,1.0); -#else - throw mapnik::ImageWriterException("Cairo backend not available, cannot write to format: " + format); -#endif - } - else - { - mapnik::image_any image(map.width(),map.height()); - render(map,image,1.0,0,0); - mapnik::save_to_file(image,filename); - } -} - -void render_to_file3(mapnik::Map const& map, - std::string const& filename, - std::string const& format, - double scale_factor = 1.0 - ) -{ - if (format == "svg-ng") - { -#if defined(SVG_RENDERER) - std::ofstream file (filename.c_str(), std::ios::out|std::ios::trunc|std::ios::binary); - if (!file) - { - throw mapnik::ImageWriterException("could not open file for writing: " + filename); - } - using iter_type = std::ostream_iterator; - iter_type output_stream_iterator(file); - mapnik::svg_renderer ren(map,output_stream_iterator,scale_factor); - ren.apply(); -#else - throw mapnik::ImageWriterException("SVG backend not available, cannot write to format: " + format); -#endif - } - else if (format == "pdf" || format == "svg" || format =="ps" || format == "ARGB32" || format == "RGB24") - { -#if defined(HAVE_CAIRO) - mapnik::save_to_cairo_file(map,filename,format,scale_factor); -#else - throw mapnik::ImageWriterException("Cairo backend not available, cannot write to format: " + format); -#endif - } - else - { - mapnik::image_any image(map.width(),map.height()); - render(map,image,scale_factor,0,0); - mapnik::save_to_file(image,filename,format); - } -} - -double scale_denominator(mapnik::Map const& map, bool geographic) -{ - return mapnik::scale_denominator(map.scale(), geographic); -} - -// http://docs.python.org/c-api/exceptions.html#standard-exceptions -void value_error_translator(mapnik::value_error const & ex) -{ - PyErr_SetString(PyExc_ValueError, ex.what()); -} - -void runtime_error_translator(std::runtime_error const & ex) -{ - PyErr_SetString(PyExc_RuntimeError, ex.what()); -} - -void out_of_range_error_translator(std::out_of_range const & ex) -{ - PyErr_SetString(PyExc_IndexError, ex.what()); -} - -void standard_error_translator(std::exception const & ex) -{ - PyErr_SetString(PyExc_RuntimeError, ex.what()); -} - -unsigned mapnik_version() -{ - return MAPNIK_VERSION; -} - -std::string mapnik_version_string() -{ - return MAPNIK_VERSION_STRING; -} - -bool has_proj4() -{ -#if defined(MAPNIK_USE_PROJ4) - return true; -#else - return false; -#endif -} - -bool has_svg_renderer() -{ -#if defined(SVG_RENDERER) - return true; -#else - return false; -#endif -} - -bool has_grid_renderer() -{ -#if defined(GRID_RENDERER) - return true; -#else - return false; -#endif -} - -bool has_jpeg() -{ -#if defined(HAVE_JPEG) - return true; -#else - return false; -#endif -} - -bool has_png() -{ -#if defined(HAVE_PNG) - return true; -#else - return false; -#endif -} - -bool has_tiff() -{ -#if defined(HAVE_TIFF) - return true; -#else - return false; -#endif -} - -bool has_webp() -{ -#if defined(HAVE_WEBP) - return true; -#else - return false; -#endif -} - -// indicator for cairo rendering support inside libmapnik -bool has_cairo() -{ -#if defined(HAVE_CAIRO) - return true; -#else - return false; -#endif -} - -// indicator for pycairo support in the python bindings -bool has_pycairo() -{ -#if defined(HAVE_CAIRO) && defined(HAVE_PYCAIRO) -#if PY_MAJOR_VERSION >= 3 - Pycairo_CAPI = (Pycairo_CAPI_t*) PyCapsule_Import(const_cast("cairo.CAPI"), 0); -#else - Pycairo_CAPI = (Pycairo_CAPI_t*) PyCObject_Import(const_cast("cairo"), const_cast("CAPI")); -#endif - if (Pycairo_CAPI == nullptr){ - /* - Case where pycairo support has been compiled into - mapnik but at runtime the cairo python module - is unable to be imported and therefore Pycairo surfaces - and contexts cannot be passed to mapnik.render() - */ - return false; - } - return true; -#else - return false; -#endif -} - - -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -BOOST_PYTHON_FUNCTION_OVERLOADS(load_map_overloads, load_map, 2, 4) -BOOST_PYTHON_FUNCTION_OVERLOADS(load_map_string_overloads, load_map_string, 2, 4) -BOOST_PYTHON_FUNCTION_OVERLOADS(save_map_overloads, save_map, 2, 3) -BOOST_PYTHON_FUNCTION_OVERLOADS(save_map_to_string_overloads, save_map_to_string, 1, 2) -BOOST_PYTHON_FUNCTION_OVERLOADS(render_overloads, render, 2, 5) -BOOST_PYTHON_FUNCTION_OVERLOADS(render_with_detector_overloads, render_with_detector, 3, 6) -#pragma GCC diagnostic pop - -BOOST_PYTHON_MODULE(_mapnik) -{ - - using namespace boost::python; - - using mapnik::load_map; - using mapnik::load_map_string; - using mapnik::save_map; - using mapnik::save_map_to_string; - - register_exception_translator(&standard_error_translator); - register_exception_translator(&out_of_range_error_translator); - register_exception_translator(&value_error_translator); - register_exception_translator(&runtime_error_translator); -#if defined(HAVE_CAIRO) && defined(HAVE_PYCAIRO) - register_cairo(); -#endif - export_query(); - export_geometry(); - export_feature(); - export_featureset(); - export_fontset(); - export_datasource(); - export_parameters(); - export_color(); - export_envelope(); - export_palette(); - export_image(); - export_image_view(); - export_gamma_method(); - export_scaling_method(); -#if defined(GRID_RENDERER) - export_grid(); - export_grid_view(); -#endif - export_expression(); - export_rule(); - export_style(); - export_layer(); - export_datasource_cache(); - export_symbolizer(); - export_markers_symbolizer(); - export_point_symbolizer(); - export_line_symbolizer(); - export_line_pattern_symbolizer(); - export_polygon_symbolizer(); - export_building_symbolizer(); - export_polygon_pattern_symbolizer(); - export_raster_symbolizer(); - export_text_placement(); - export_shield_symbolizer(); - export_debug_symbolizer(); - export_group_symbolizer(); - export_font_engine(); - export_projection(); - export_proj_transform(); - export_view_transform(); - export_coord(); - export_map(); - export_raster_colorizer(); - export_label_collision_detector(); - export_logger(); - - def("clear_cache", &clear_cache, - "\n" - "Clear all global caches of markers and mapped memory regions.\n" - "\n" - "Usage:\n" - ">>> from mapnik import clear_cache\n" - ">>> clear_cache()\n" - ); - - def("render_to_file",&render_to_file1, - "\n" - "Render Map to file using explicit image type.\n" - "\n" - "Usage:\n" - ">>> from mapnik import Map, render_to_file, load_map\n" - ">>> m = Map(256,256)\n" - ">>> load_map(m,'mapfile.xml')\n" - ">>> render_to_file(m,'image32bit.png','png')\n" - "\n" - "8 bit (paletted) PNG can be requested with 'png256':\n" - ">>> render_to_file(m,'8bit_image.png','png256')\n" - "\n" - "JPEG quality can be controlled by adding a suffix to\n" - "'jpeg' between 0 and 100 (default is 85):\n" - ">>> render_to_file(m,'top_quality.jpeg','jpeg100')\n" - ">>> render_to_file(m,'medium_quality.jpeg','jpeg50')\n" - ); - - def("render_to_file",&render_to_file2, - "\n" - "Render Map to file (type taken from file extension)\n" - "\n" - "Usage:\n" - ">>> from mapnik import Map, render_to_file, load_map\n" - ">>> m = Map(256,256)\n" - ">>> render_to_file(m,'image.jpeg')\n" - "\n" - ); - - def("render_to_file",&render_to_file3, - "\n" - "Render Map to file using explicit image type and scale factor.\n" - "\n" - "Usage:\n" - ">>> from mapnik import Map, render_to_file, load_map\n" - ">>> m = Map(256,256)\n" - ">>> scale_factor = 4\n" - ">>> render_to_file(m,'image.jpeg',scale_factor)\n" - "\n" - ); - - def("render_tile_to_file",&render_tile_to_file, - "\n" - "TODO\n" - "\n" - ); - - def("render_with_vars",&render_with_vars, - (arg("map"), - arg("image"), - arg("vars"), - arg("scale_factor")=1.0, - arg("offset_x")=0, - arg("offset_y")=0 - ) - ); - - def("render", &render, render_overloads( - "\n" - "Render Map to an AGG image_any using offsets\n" - "\n" - "Usage:\n" - ">>> from mapnik import Map, Image, render, load_map\n" - ">>> m = Map(256,256)\n" - ">>> load_map(m,'mapfile.xml')\n" - ">>> im = Image(m.width,m.height)\n" - ">>> scale_factor=2.0\n" - ">>> offset = [100,50]\n" - ">>> render(m,im)\n" - ">>> render(m,im,scale_factor)\n" - ">>> render(m,im,scale_factor,offset[0],offset[1])\n" - "\n" - )); - - def("render_with_detector", &render_with_detector, render_with_detector_overloads( - "\n" - "Render Map to an AGG image_any using a pre-constructed detector.\n" - "\n" - "Usage:\n" - ">>> from mapnik import Map, Image, LabelCollisionDetector, render_with_detector, load_map\n" - ">>> m = Map(256,256)\n" - ">>> load_map(m,'mapfile.xml')\n" - ">>> im = Image(m.width,m.height)\n" - ">>> detector = LabelCollisionDetector(m)\n" - ">>> render_with_detector(m, im, detector)\n" - )); - - def("render_layer", &render_layer2, - (arg("map"), - arg("image"), - arg("layer"), - arg("scale_factor")=1.0, - arg("offset_x")=0, - arg("offset_y")=0 - ) - ); - -#if defined(GRID_RENDERER) - def("render_layer", &mapnik::render_layer_for_grid, - (arg("map"), - arg("grid"), - arg("layer"), - arg("fields")=boost::python::list(), - arg("scale_factor")=1.0, - arg("offset_x")=0, - arg("offset_y")=0 - ) - ); -#endif - -#if defined(HAVE_CAIRO) && defined(HAVE_PYCAIRO) - def("render",&render3, - "\n" - "Render Map to Cairo Surface using offsets\n" - "\n" - "Usage:\n" - ">>> from mapnik import Map, render, load_map\n" - ">>> from cairo import SVGSurface\n" - ">>> m = Map(256,256)\n" - ">>> load_map(m,'mapfile.xml')\n" - ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" - ">>> render(m,surface,1,1)\n" - "\n" - ); - - def("render",&render4, - "\n" - "Render Map to Cairo Surface\n" - "\n" - "Usage:\n" - ">>> from mapnik import Map, render, load_map\n" - ">>> from cairo import SVGSurface\n" - ">>> m = Map(256,256)\n" - ">>> load_map(m,'mapfile.xml')\n" - ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" - ">>> render(m,surface)\n" - "\n" - ); - - def("render",&render5, - "\n" - "Render Map to Cairo Context using offsets\n" - "\n" - "Usage:\n" - ">>> from mapnik import Map, render, load_map\n" - ">>> from cairo import SVGSurface, Context\n" - ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" - ">>> ctx = Context(surface)\n" - ">>> load_map(m,'mapfile.xml')\n" - ">>> render(m,context,1,1)\n" - "\n" - ); - - def("render",&render6, - "\n" - "Render Map to Cairo Context\n" - "\n" - "Usage:\n" - ">>> from mapnik import Map, render, load_map\n" - ">>> from cairo import SVGSurface, Context\n" - ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" - ">>> ctx = Context(surface)\n" - ">>> load_map(m,'mapfile.xml')\n" - ">>> render(m,context)\n" - "\n" - ); - - def("render_with_detector", &render_with_detector2, - "\n" - "Render Map to Cairo Context using a pre-constructed detector.\n" - "\n" - "Usage:\n" - ">>> from mapnik import Map, LabelCollisionDetector, render_with_detector, load_map\n" - ">>> from cairo import SVGSurface, Context\n" - ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" - ">>> ctx = Context(surface)\n" - ">>> m = Map(256,256)\n" - ">>> load_map(m,'mapfile.xml')\n" - ">>> detector = LabelCollisionDetector(m)\n" - ">>> render_with_detector(m, ctx, detector)\n" - ); - - def("render_with_detector", &render_with_detector3, - "\n" - "Render Map to Cairo Context using a pre-constructed detector, scale and offsets.\n" - "\n" - "Usage:\n" - ">>> from mapnik import Map, LabelCollisionDetector, render_with_detector, load_map\n" - ">>> from cairo import SVGSurface, Context\n" - ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" - ">>> ctx = Context(surface)\n" - ">>> m = Map(256,256)\n" - ">>> load_map(m,'mapfile.xml')\n" - ">>> detector = LabelCollisionDetector(m)\n" - ">>> render_with_detector(m, ctx, detector, 1, 1, 1)\n" - ); - - def("render_with_detector", &render_with_detector4, - "\n" - "Render Map to Cairo Surface using a pre-constructed detector.\n" - "\n" - "Usage:\n" - ">>> from mapnik import Map, LabelCollisionDetector, render_with_detector, load_map\n" - ">>> from cairo import SVGSurface, Context\n" - ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" - ">>> m = Map(256,256)\n" - ">>> load_map(m,'mapfile.xml')\n" - ">>> detector = LabelCollisionDetector(m)\n" - ">>> render_with_detector(m, surface, detector)\n" - ); - - def("render_with_detector", &render_with_detector5, - "\n" - "Render Map to Cairo Surface using a pre-constructed detector, scale and offsets.\n" - "\n" - "Usage:\n" - ">>> from mapnik import Map, LabelCollisionDetector, render_with_detector, load_map\n" - ">>> from cairo import SVGSurface, Context\n" - ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" - ">>> m = Map(256,256)\n" - ">>> load_map(m,'mapfile.xml')\n" - ">>> detector = LabelCollisionDetector(m)\n" - ">>> render_with_detector(m, surface, detector, 1, 1, 1)\n" - ); - -#endif - - def("scale_denominator", &scale_denominator, - (arg("map"),arg("is_geographic")), - "\n" - "Return the Map Scale Denominator.\n" - "Also available as Map.scale_denominator()\n" - "\n" - "Usage:\n" - "\n" - ">>> from mapnik import Map, Projection, scale_denominator, load_map\n" - ">>> m = Map(256,256)\n" - ">>> load_map(m,'mapfile.xml')\n" - ">>> scale_denominator(m,Projection(m.srs).geographic)\n" - "\n" - ); - - def("load_map", &load_map, load_map_overloads()); - - def("load_map_from_string", &load_map_string, load_map_string_overloads()); - - def("save_map", &save_map, save_map_overloads()); -/* - "\n" - "Save Map object to XML file\n" - "\n" - "Usage:\n" - ">>> from mapnik import Map, load_map, save_map\n" - ">>> m = Map(256,256)\n" - ">>> load_map(m,'mapfile_wgs84.xml')\n" - ">>> m.srs\n" - "'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'\n" - ">>> m.srs = '+init=espg:3395'\n" - ">>> save_map(m,'mapfile_mercator.xml')\n" - "\n" - ); -*/ - - def("save_map_to_string", &save_map_to_string, save_map_to_string_overloads()); - def("mapnik_version", &mapnik_version,"Get the Mapnik version number"); - def("mapnik_version_string", &mapnik_version_string,"Get the Mapnik version string"); - def("has_proj4", &has_proj4, "Get proj4 status"); - def("has_jpeg", &has_jpeg, "Get jpeg read/write support status"); - def("has_png", &has_png, "Get png read/write support status"); - def("has_tiff", &has_tiff, "Get tiff read/write support status"); - def("has_webp", &has_webp, "Get webp read/write support status"); - def("has_svg_renderer", &has_svg_renderer, "Get svg_renderer status"); - def("has_grid_renderer", &has_grid_renderer, "Get grid_renderer status"); - def("has_cairo", &has_cairo, "Get cairo library status"); - def("has_pycairo", &has_pycairo, "Get pycairo module status"); - - python_optional(); - python_optional(); - python_optional >(); - python_optional(); - python_optional(); - python_optional(); - python_optional(); - python_optional(); - python_optional(); - python_optional(); - python_optional(); - python_optional(); - register_ptr_to_python(); - register_ptr_to_python(); - to_python_converter(); - to_python_converter(); - to_python_converter(); -} diff --git a/bindings/python/mapnik_query.cpp b/bindings/python/mapnik_query.cpp deleted file mode 100644 index 210182f18..000000000 --- a/bindings/python/mapnik_query.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include "python_to_value.hpp" -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include - -#include -#include - -using mapnik::query; -using mapnik::box2d; - -namespace python = boost::python; - -struct resolution_to_tuple -{ - static PyObject* convert(query::resolution_type const& x) - { - python::object tuple(python::make_tuple(std::get<0>(x), std::get<1>(x))); - return python::incref(tuple.ptr()); - } - - static PyTypeObject const* get_pytype() - { - return &PyTuple_Type; - } -}; - -struct names_to_list -{ - static PyObject* convert(std::set const& names) - { - boost::python::list l; - for ( std::string const& name : names ) - { - l.append(name); - } - return python::incref(l.ptr()); - } - - static PyTypeObject const* get_pytype() - { - return &PyList_Type; - } -}; - -namespace { - - void set_variables(mapnik::query & q, boost::python::dict const& d) - { - mapnik::attributes vars = mapnik::dict2attr(d); - q.set_variables(vars); - } -} - -void export_query() -{ - using namespace boost::python; - - to_python_converter (); - to_python_converter, names_to_list> (); - - class_("Query", "a spatial query data object", - init,query::resolution_type const&,double>() ) - .def(init >()) - .add_property("resolution",make_function(&query::resolution, - return_value_policy())) - .add_property("bbox", make_function(&query::get_bbox, - return_value_policy()) ) - .add_property("property_names", make_function(&query::property_names, - return_value_policy()) ) - .def("add_property_name", &query::add_property_name) - .def("set_variables",&set_variables); -} diff --git a/bindings/python/mapnik_raster_colorizer.cpp b/bindings/python/mapnik_raster_colorizer.cpp deleted file mode 100644 index 05140b75c..000000000 --- a/bindings/python/mapnik_raster_colorizer.cpp +++ /dev/null @@ -1,241 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include - -using mapnik::raster_colorizer; -using mapnik::raster_colorizer_ptr; -using mapnik::symbolizer_base; -using mapnik::colorizer_stop; -using mapnik::colorizer_stops; -using mapnik::colorizer_mode_enum; -using mapnik::color; -using mapnik::COLORIZER_INHERIT; -using mapnik::COLORIZER_LINEAR; -using mapnik::COLORIZER_DISCRETE; -using mapnik::COLORIZER_EXACT; - - -namespace { -void add_stop(raster_colorizer_ptr & rc, colorizer_stop & stop) -{ - rc->add_stop(stop); -} - -void add_stop2(raster_colorizer_ptr & rc, float v) -{ - colorizer_stop stop(v, rc->get_default_mode(), rc->get_default_color()); - rc->add_stop(stop); -} - -void add_stop3(raster_colorizer_ptr &rc, float v, color c) -{ - colorizer_stop stop(v, rc->get_default_mode(), c); - rc->add_stop(stop); -} - -void add_stop4(raster_colorizer_ptr &rc, float v, colorizer_mode_enum m) -{ - colorizer_stop stop(v, m, rc->get_default_color()); - rc->add_stop(stop); -} - -void add_stop5(raster_colorizer_ptr &rc, float v, colorizer_mode_enum m, color c) -{ - colorizer_stop stop(v, m, c); - rc->add_stop(stop); -} - -mapnik::color get_color(raster_colorizer_ptr &rc, float value) -{ - unsigned rgba = rc->get_color(value); - unsigned r = (rgba & 0xff); - unsigned g = (rgba >> 8 ) & 0xff; - unsigned b = (rgba >> 16) & 0xff; - unsigned a = (rgba >> 24) & 0xff; - return mapnik::color(r,g,b,a); -} - -colorizer_stops const& get_stops(raster_colorizer_ptr & rc) -{ - return rc->get_stops(); -} - -} - -void export_raster_colorizer() -{ - using namespace boost::python; - - implicitly_convertible(); - - class_("RasterColorizer", - "A Raster Colorizer object.", - init(args("default_mode","default_color")) - ) - .def(init<>()) - .add_property("default_color", - make_function(&raster_colorizer::get_default_color, return_value_policy()), - &raster_colorizer::set_default_color, - "The default color for stops added without a color (mapnik.Color).\n") - .add_property("default_mode", - &raster_colorizer::get_default_mode_enum, - &raster_colorizer::set_default_mode_enum, - "The default mode (mapnik.ColorizerMode).\n" - "\n" - "If a stop is added without a mode, then it will inherit this default mode\n") - .add_property("stops", - make_function(get_stops,return_value_policy()), - "The list of stops this RasterColorizer contains\n") - .add_property("epsilon", - &raster_colorizer::get_epsilon, - &raster_colorizer::set_epsilon, - "Comparison epsilon value for exact mode\n" - "\n" - "When comparing values in exact mode, values need only be within epsilon to match.\n") - - - .def("add_stop", add_stop, - (arg("ColorizerStop")), - "Add a colorizer stop to the raster colorizer.\n" - "\n" - "Usage:\n" - ">>> colorizer = mapnik.RasterColorizer()\n" - ">>> color = mapnik.Color(\"#0044cc\")\n" - ">>> stop = mapnik.ColorizerStop(3, mapnik.COLORIZER_INHERIT, color)\n" - ">>> colorizer.add_stop(stop)\n" - ) - .def("add_stop", add_stop2, - (arg("value")), - "Add a colorizer stop to the raster colorizer, using the default mode and color.\n" - "\n" - "Usage:\n" - ">>> default_color = mapnik.Color(\"#0044cc\")\n" - ">>> colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_LINEAR, default_color)\n" - ">>> colorizer.add_stop(100)\n" - ) - .def("add_stop", add_stop3, - (arg("value")), - "Add a colorizer stop to the raster colorizer, using the default mode.\n" - "\n" - "Usage:\n" - ">>> default_color = mapnik.Color(\"#0044cc\")\n" - ">>> colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_LINEAR, default_color)\n" - ">>> colorizer.add_stop(100, mapnik.Color(\"#123456\"))\n" - ) - .def("add_stop", add_stop4, - (arg("value")), - "Add a colorizer stop to the raster colorizer, using the default color.\n" - "\n" - "Usage:\n" - ">>> default_color = mapnik.Color(\"#0044cc\")\n" - ">>> colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_LINEAR, default_color)\n" - ">>> colorizer.add_stop(100, mapnik.COLORIZER_EXACT)\n" - ) - .def("add_stop", add_stop5, - (arg("value")), - "Add a colorizer stop to the raster colorizer.\n" - "\n" - "Usage:\n" - ">>> default_color = mapnik.Color(\"#0044cc\")\n" - ">>> colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_LINEAR, default_color)\n" - ">>> colorizer.add_stop(100, mapnik.COLORIZER_DISCRETE, mapnik.Color(\"#112233\"))\n" - ) - .def("get_color", get_color, - "Get the color assigned to a certain value in raster data.\n" - "\n" - "Usage:\n" - ">>> colorizer = mapnik.RasterColorizer()\n" - ">>> color = mapnik.Color(\"#0044cc\")\n" - ">>> colorizer.add_stop(0, mapnik.COLORIZER_DISCRETE, mapnik.Color(\"#000000\"))\n" - ">>> colorizer.add_stop(100, mapnik.COLORIZER_DISCRETE, mapnik.Color(\"#0E0A06\"))\n" - ">>> colorizer.get_color(50)\n" - "Color('#070503')\n" - ) - ; - - - - class_("ColorizerStops", - "A RasterColorizer's collection of ordered color stops.\n" - "This class is not meant to be instantiated from python. However, " - "it can be accessed at a RasterColorizer's \"stops\" attribute for " - "introspection purposes", - no_init) - .def(vector_indexing_suite()) - ; - - enum_("ColorizerMode") - .value("COLORIZER_INHERIT", COLORIZER_INHERIT) - .value("COLORIZER_LINEAR", COLORIZER_LINEAR) - .value("COLORIZER_DISCRETE", COLORIZER_DISCRETE) - .value("COLORIZER_EXACT", COLORIZER_EXACT) - .export_values() - ; - - - class_("ColorizerStop",init( - "A Colorizer Stop object.\n" - "Create with a value, ColorizerMode, and Color\n" - "\n" - "Usage:" - ">>> color = mapnik.Color(\"#fff000\")\n" - ">>> stop= mapnik.ColorizerStop(42.42, mapnik.COLORIZER_LINEAR, color)\n" - )) - .add_property("color", - make_function(&colorizer_stop::get_color, return_value_policy()), - &colorizer_stop::set_color, - "The stop color (mapnik.Color).\n") - .add_property("value", - &colorizer_stop::get_value, - &colorizer_stop::set_value, - "The stop value.\n") - .add_property("label", - make_function(&colorizer_stop::get_label, return_value_policy()), - &colorizer_stop::set_label, - "The stop label.\n") - .add_property("mode", - &colorizer_stop::get_mode_enum, - &colorizer_stop::set_mode_enum, - "The stop mode (mapnik.ColorizerMode).\n" - "\n" - "If this is COLORIZER_INHERIT then it will inherit the default mode\n" - " from the RasterColorizer it is added to.\n") - .def(self == self) - .def("__str__",&colorizer_stop::to_string) - ; -} diff --git a/bindings/python/mapnik_rule.cpp b/bindings/python/mapnik_rule.cpp deleted file mode 100644 index f4b5cd856..000000000 --- a/bindings/python/mapnik_rule.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include - -using mapnik::rule; -using mapnik::expr_node; -using mapnik::expression_ptr; -using mapnik::point_symbolizer; -using mapnik::line_symbolizer; -using mapnik::line_pattern_symbolizer; -using mapnik::polygon_symbolizer; -using mapnik::polygon_pattern_symbolizer; -using mapnik::raster_symbolizer; -using mapnik::shield_symbolizer; -using mapnik::text_symbolizer; -using mapnik::building_symbolizer; -using mapnik::markers_symbolizer; -using mapnik::group_symbolizer; -using mapnik::symbolizer; -using mapnik::to_expression_string; - -void export_rule() -{ - using namespace boost::python; - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - - class_("Symbolizers",init<>("TODO")) - .def(vector_indexing_suite()) - ; - - class_("Rule",init<>("default constructor")) - .def(init >()) - .add_property("name",make_function - (&rule::get_name, - return_value_policy()), - &rule::set_name) - .add_property("filter",make_function - (&rule::get_filter,return_value_policy()), - &rule::set_filter) - .add_property("min_scale",&rule::get_min_scale,&rule::set_min_scale) - .add_property("max_scale",&rule::get_max_scale,&rule::set_max_scale) - .def("set_else",&rule::set_else) - .def("has_else",&rule::has_else_filter) - .def("set_also",&rule::set_also) - .def("has_also",&rule::has_also_filter) - .def("active",&rule::active) - .add_property("symbols",make_function - (&rule::get_symbolizers,return_value_policy())) - .add_property("copy_symbols",make_function - (&rule::get_symbolizers,return_value_policy())) - ; -} diff --git a/bindings/python/mapnik_scaling_method.cpp b/bindings/python/mapnik_scaling_method.cpp deleted file mode 100644 index 1a2c62a4e..000000000 --- a/bindings/python/mapnik_scaling_method.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - - -#include - -// boost -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#pragma GCC diagnostic pop - -void export_scaling_method() -{ - using namespace boost::python; - - enum_("scaling_method") - .value("NEAR", mapnik::SCALING_NEAR) - .value("BILINEAR", mapnik::SCALING_BILINEAR) - .value("BICUBIC", mapnik::SCALING_BICUBIC) - .value("SPLINE16", mapnik::SCALING_SPLINE16) - .value("SPLINE36", mapnik::SCALING_SPLINE36) - .value("HANNING", mapnik::SCALING_HANNING) - .value("HAMMING", mapnik::SCALING_HAMMING) - .value("HERMITE", mapnik::SCALING_HERMITE) - .value("KAISER", mapnik::SCALING_KAISER) - .value("QUADRIC", mapnik::SCALING_QUADRIC) - .value("CATROM", mapnik::SCALING_CATROM) - .value("GAUSSIAN", mapnik::SCALING_GAUSSIAN) - .value("BESSEL", mapnik::SCALING_BESSEL) - .value("MITCHELL", mapnik::SCALING_MITCHELL) - .value("SINC", mapnik::SCALING_SINC) - .value("LANCZOS", mapnik::SCALING_LANCZOS) - .value("BLACKMAN", mapnik::SCALING_BLACKMAN) - ; -} diff --git a/bindings/python/mapnik_style.cpp b/bindings/python/mapnik_style.cpp deleted file mode 100644 index 6f7762063..000000000 --- a/bindings/python/mapnik_style.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include "mapnik_enumeration.hpp" -#include -#include // generate_image_filters - -using mapnik::feature_type_style; -using mapnik::rules; -using mapnik::rule; - -std::string get_image_filters(feature_type_style & style) -{ - std::string filters_str; - std::back_insert_iterator sink(filters_str); - generate_image_filters(sink, style.image_filters()); - return filters_str; -} - -void set_image_filters(feature_type_style & style, std::string const& filters) -{ - std::vector new_filters; - bool result = parse_image_filters(filters, new_filters); - if (!result) - { - throw mapnik::value_error("failed to parse image-filters: '" + filters + "'"); - } -#ifdef _WINDOWS - style.image_filters() = new_filters; - // FIXME : https://svn.boost.org/trac/boost/ticket/2839 -#else - style.image_filters() = std::move(new_filters); -#endif -} - -void export_style() -{ - using namespace boost::python; - - mapnik::enumeration_("filter_mode") - .value("ALL",mapnik::FILTER_ALL) - .value("FIRST",mapnik::FILTER_FIRST) - ; - - class_("Rules",init<>("default ctor")) - .def(vector_indexing_suite()) - ; - class_("Style",init<>("default style constructor")) - - .add_property("rules",make_function - (&feature_type_style::get_rules, - return_value_policy()), - "List of rules belonging to a style as rule objects.\n" - "\n" - "Usage:\n" - ">>> for r in m.find_style('style 1').rules:\n" - ">>> print r\n" - "\n" - "\n" - ) - .add_property("filter_mode", - &feature_type_style::get_filter_mode, - &feature_type_style::set_filter_mode, - "Set/get the filter mode of the style") - .add_property("opacity", - &feature_type_style::get_opacity, - &feature_type_style::set_opacity, - "Set/get the opacity of the style") - .add_property("comp_op", - &feature_type_style::comp_op, - &feature_type_style::set_comp_op, - "Set/get the comp-op (composite operation) of the style") - .add_property("image_filters_inflate", - &feature_type_style::image_filters_inflate, - &feature_type_style::image_filters_inflate, - "Set/get the image_filters_inflate property of the style") - .add_property("image_filters", - get_image_filters, - set_image_filters, - "Set/get the comp-op (composite operation) of the style") - ; - -} diff --git a/bindings/python/mapnik_svg.hpp b/bindings/python/mapnik_svg.hpp deleted file mode 100644 index 418ee0511..000000000 --- a/bindings/python/mapnik_svg.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2010 Robert Coup - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ -#ifndef MAPNIK_PYTHON_BINDING_SVG_INCLUDED -#define MAPNIK_PYTHON_BINDING_SVG_INCLUDED - -// mapnik -#include -#include -#include - -namespace mapnik { -using namespace boost::python; - -template -std::string get_svg_transform(T& symbolizer) -{ - return symbolizer.get_image_transform_string(); -} - -template -void set_svg_transform(T& symbolizer, std::string const& transform_wkt) -{ - transform_list_ptr trans_expr = mapnik::parse_transform(transform_wkt); - if (!trans_expr) - { - std::stringstream ss; - ss << "Could not parse transform from '" - << transform_wkt - << "', expected SVG transform attribute"; - throw mapnik::value_error(ss.str()); - } - symbolizer.set_image_transform(trans_expr); -} - -} // end of namespace mapnik - -#endif // MAPNIK_PYTHON_BINDING_SVG_INCLUDED diff --git a/bindings/python/mapnik_svg_generator_grammar.cpp b/bindings/python/mapnik_svg_generator_grammar.cpp deleted file mode 100644 index 705a28258..000000000 --- a/bindings/python/mapnik_svg_generator_grammar.cpp +++ /dev/null @@ -1,27 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include -#include - -using sink_type = std::back_insert_iterator; -template struct mapnik::svg::svg_path_generator; diff --git a/bindings/python/mapnik_symbolizer.cpp b/bindings/python/mapnik_symbolizer.cpp deleted file mode 100644 index 2f4929229..000000000 --- a/bindings/python/mapnik_symbolizer.cpp +++ /dev/null @@ -1,422 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include -#include -#include -#include -#include -#include "mapnik_enumeration.hpp" -#include "mapnik_svg.hpp" -#include -#include -#include // for known_svg_prefix_ -#include -#include -#include -#include - -// stl -#include - -using mapnik::symbolizer; -using mapnik::point_symbolizer; -using mapnik::line_symbolizer; -using mapnik::line_pattern_symbolizer; -using mapnik::polygon_symbolizer; -using mapnik::polygon_pattern_symbolizer; -using mapnik::raster_symbolizer; -using mapnik::shield_symbolizer; -using mapnik::text_symbolizer; -using mapnik::building_symbolizer; -using mapnik::markers_symbolizer; -using mapnik::debug_symbolizer; -using mapnik::group_symbolizer; -using mapnik::symbolizer_base; -using mapnik::color; -using mapnik::path_processor_type; -using mapnik::path_expression_ptr; -using mapnik::guess_type; -using mapnik::expression_ptr; -using mapnik::parse_path; - - -namespace { -using namespace boost::python; -void __setitem__(mapnik::symbolizer_base & sym, std::string const& name, mapnik::symbolizer_base::value_type const& val) -{ - put(sym, mapnik::get_key(name), val); -} - -std::shared_ptr numeric_wrapper(const object& arg) -{ - std::shared_ptr result; - if (PyBool_Check(arg.ptr())) - { - mapnik::value_bool val = extract(arg); - result.reset(new mapnik::symbolizer_base::value_type(val)); - } - else if (PyFloat_Check(arg.ptr())) - { - mapnik::value_double val = extract(arg); - result.reset(new mapnik::symbolizer_base::value_type(val)); - } - else - { - mapnik::value_integer val = extract(arg); - result.reset(new mapnik::symbolizer_base::value_type(val)); - } - return result; -} - -struct extract_python_object -{ - using result_type = boost::python::object; - - template - auto operator() (T const& val) const -> result_type - { - return result_type(val); // wrap into python object - } -}; - -boost::python::object __getitem__(mapnik::symbolizer_base const& sym, std::string const& name) -{ - using const_iterator = symbolizer_base::cont_type::const_iterator; - mapnik::keys key = mapnik::get_key(name); - const_iterator itr = sym.properties.find(key); - if (itr != sym.properties.end()) - { - return mapnik::util::apply_visitor(extract_python_object(), itr->second); - } - //mapnik::property_meta_type const& meta = mapnik::get_meta(key); - //return mapnik::util::apply_visitor(extract_python_object(), std::get<1>(meta)); - return boost::python::object(); -} - -/* -std::string __str__(mapnik::symbolizer const& sym) -{ - return mapnik::util::apply_visitor(mapnik::symbolizer_to_json(), sym); -} -*/ - -std::string get_symbolizer_type(symbolizer const& sym) -{ - return mapnik::symbolizer_name(sym); // FIXME - do we need this ? -} - -std::size_t hash_impl(symbolizer const& sym) -{ - return mapnik::util::apply_visitor(mapnik::symbolizer_hash_visitor(), sym); -} - -template -std::size_t hash_impl_2(T const& sym) -{ - return mapnik::symbolizer_hash::value(sym); -} - -struct extract_underlying_type_visitor -{ - template - boost::python::object operator() (T const& sym) const - { - return boost::python::object(sym); - } -}; - -boost::python::object extract_underlying_type(symbolizer const& sym) -{ - return mapnik::util::apply_visitor(extract_underlying_type_visitor(), sym); -} - -} - -void export_symbolizer() -{ - using namespace boost::python; - - //implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible(); - implicitly_convertible, mapnik::symbolizer_base::value_type>(); - - enum_("keys") - .value("gamma", mapnik::keys::gamma) - .value("gamma_method",mapnik::keys::gamma_method) - ; - - class_("Symbolizer",no_init) - .def("type",get_symbolizer_type) - .def("__hash__",hash_impl) - .def("extract", extract_underlying_type) - ; - - class_("NumericWrapper") - .def("__init__", make_constructor(numeric_wrapper)) - ; - - class_("SymbolizerBase",no_init) - .def("__setitem__",&__setitem__) - .def("__setattr__",&__setitem__) - .def("__getitem__",&__getitem__) - .def("__getattr__",&__getitem__) - //.def("__str__", &__str__) - .def(self == self) // __eq__ - ; -} - - -void export_shield_symbolizer() -{ - using namespace boost::python; - class_< shield_symbolizer, bases >("ShieldSymbolizer", - init<>("Default ctor")) - .def("__hash__",hash_impl_2) - ; - -} - -void export_polygon_symbolizer() -{ - using namespace boost::python; - - class_ >("PolygonSymbolizer", - init<>("Default ctor")) - .def("__hash__",hash_impl_2) - ; - -} - -void export_polygon_pattern_symbolizer() -{ - using namespace boost::python; - - mapnik::enumeration_("pattern_alignment") - .value("LOCAL",mapnik::LOCAL_ALIGNMENT) - .value("GLOBAL",mapnik::GLOBAL_ALIGNMENT) - ; - - class_("PolygonPatternSymbolizer", - init<>("Default ctor")) - .def("__hash__",hash_impl_2) - ; -} - -void export_raster_symbolizer() -{ - using namespace boost::python; - - class_ >("RasterSymbolizer", - init<>("Default ctor")) - ; -} - -void export_point_symbolizer() -{ - using namespace boost::python; - - mapnik::enumeration_("point_placement") - .value("CENTROID",mapnik::CENTROID_POINT_PLACEMENT) - .value("INTERIOR",mapnik::INTERIOR_POINT_PLACEMENT) - ; - - class_ >("PointSymbolizer", - init<>("Default Point Symbolizer - 4x4 black square")) - .def("__hash__",hash_impl_2) - ; -} - -void export_markers_symbolizer() -{ - using namespace boost::python; - - mapnik::enumeration_("marker_placement") - .value("POINT_PLACEMENT",mapnik::MARKER_POINT_PLACEMENT) - .value("INTERIOR_PLACEMENT",mapnik::MARKER_INTERIOR_PLACEMENT) - .value("LINE_PLACEMENT",mapnik::MARKER_LINE_PLACEMENT) - ; - - mapnik::enumeration_("marker_multi_policy") - .value("EACH",mapnik::MARKER_EACH_MULTI) - .value("WHOLE",mapnik::MARKER_WHOLE_MULTI) - .value("LARGEST",mapnik::MARKER_LARGEST_MULTI) - ; - - class_ >("MarkersSymbolizer", - init<>("Default Markers Symbolizer - circle")) - .def("__hash__",hash_impl_2) - ; -} - - -void export_line_symbolizer() -{ - using namespace boost::python; - - mapnik::enumeration_("line_rasterizer") - .value("FULL",mapnik::RASTERIZER_FULL) - .value("FAST",mapnik::RASTERIZER_FAST) - ; - - mapnik::enumeration_("stroke_linecap", - "The possible values for a line cap used when drawing\n" - "with a stroke.\n") - .value("BUTT_CAP",mapnik::BUTT_CAP) - .value("SQUARE_CAP",mapnik::SQUARE_CAP) - .value("ROUND_CAP",mapnik::ROUND_CAP) - ; - - mapnik::enumeration_("stroke_linejoin", - "The possible values for the line joining mode\n" - "when drawing with a stroke.\n") - .value("MITER_JOIN",mapnik::MITER_JOIN) - .value("MITER_REVERT_JOIN",mapnik::MITER_REVERT_JOIN) - .value("ROUND_JOIN",mapnik::ROUND_JOIN) - .value("BEVEL_JOIN",mapnik::BEVEL_JOIN) - ; - - - class_ >("LineSymbolizer", - init<>("Default LineSymbolizer - 1px solid black")) - .def("__hash__",hash_impl_2) - ; -} - -void export_line_pattern_symbolizer() -{ - using namespace boost::python; - - class_ >("LinePatternSymbolizer", - init<> ("Default LinePatternSymbolizer")) - .def("__hash__",hash_impl_2) - ; -} - -void export_debug_symbolizer() -{ - using namespace boost::python; - - mapnik::enumeration_("debug_symbolizer_mode") - .value("COLLISION",mapnik::DEBUG_SYM_MODE_COLLISION) - .value("VERTEX",mapnik::DEBUG_SYM_MODE_VERTEX) - ; - - class_ >("DebugSymbolizer", - init<>("Default debug Symbolizer")) - .def("__hash__",hash_impl_2) - ; -} - -void export_building_symbolizer() -{ - using namespace boost::python; - - class_ >("BuildingSymbolizer", - init<>("Default BuildingSymbolizer")) - .def("__hash__",hash_impl_2) - ; - -} - -namespace { - -void group_symbolizer_properties_set_layout_simple(mapnik::group_symbolizer_properties &p, - mapnik::simple_row_layout &s) -{ - p.set_layout(s); -} - -void group_symbolizer_properties_set_layout_pair(mapnik::group_symbolizer_properties &p, - mapnik::pair_layout &s) -{ - p.set_layout(s); -} - -std::shared_ptr group_rule_construct1(mapnik::expression_ptr p) -{ - return std::make_shared(p, mapnik::expression_ptr()); -} - -} // anonymous namespace - -void export_group_symbolizer() -{ - using namespace boost::python; - using mapnik::group_rule; - using mapnik::simple_row_layout; - using mapnik::pair_layout; - using mapnik::group_symbolizer_properties; - - class_ >("GroupRule", - init()) - .def("__init__", boost::python::make_constructor(group_rule_construct1)) - .def("append", &group_rule::append) - .def("set_filter", &group_rule::set_filter) - .def("set_repeat_key", &group_rule::set_repeat_key) - ; - - class_("SimpleRowLayout") - .def("item_margin", &simple_row_layout::get_item_margin) - .def("set_item_margin", &simple_row_layout::set_item_margin) - ; - - class_("PairLayout") - .def("item_margin", &simple_row_layout::get_item_margin) - .def("set_item_margin", &simple_row_layout::set_item_margin) - .def("max_difference", &pair_layout::get_max_difference) - .def("set_max_difference", &pair_layout::set_max_difference) - ; - - class_ >("GroupSymbolizerProperties") - .def("add_rule", &group_symbolizer_properties::add_rule) - .def("set_layout", &group_symbolizer_properties_set_layout_simple) - .def("set_layout", &group_symbolizer_properties_set_layout_pair) - ; - - class_ >("GroupSymbolizer", - init<>("Default GroupSymbolizer")) - .def("__hash__",hash_impl_2) - ; - -} diff --git a/bindings/python/mapnik_text_placement.cpp b/bindings/python/mapnik_text_placement.cpp deleted file mode 100644 index 955f49b7a..000000000 --- a/bindings/python/mapnik_text_placement.cpp +++ /dev/null @@ -1,587 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#include "boost_std_shared_shim.hpp" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#include -#include -#pragma GCC diagnostic pop - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "mapnik_enumeration.hpp" -#include "mapnik_threads.hpp" - -using namespace mapnik; - -/* Notes: - Overriding functions in inherited classes: - boost.python documentation doesn't really tell you how to do it. - But this helps: - http://www.gamedev.net/topic/446225-inheritance-in-boostpython/ - - register_ptr_to_python is required for wrapped classes, but not for unwrapped. - - Functions don't have to be members of the class, but can also be - normal functions taking a ref to the class as first parameter. -*/ - -namespace { - -using namespace boost::python; - -// This class works around a feature in boost python. -// See http://osdir.com/ml/python.c++/2003-11/msg00158.html - -template -class class_with_converter : public boost::python::class_ -{ -public: - using self = class_with_converter; - // Construct with the class name, with or without docstring, and default __init__() function - class_with_converter(char const* name, char const* doc = 0) : boost::python::class_(name, doc) { } - - // Construct with class name, no docstring, and an uncallable __init__ function - class_with_converter(char const* name, boost::python::no_init_t y) : boost::python::class_(name, y) { } - - // Construct with class name, docstring, and an uncallable __init__ function - class_with_converter(char const* name, char const* doc, boost::python::no_init_t y) : boost::python::class_(name, doc, y) { } - - // Construct with class name and init<> function - template class_with_converter(char const* name, boost::python::init_base const& i) - : boost::python::class_(name, i) { } - - // Construct with class name, docstring and init<> function - template - inline class_with_converter(char const* name, char const* doc, boost::python::init_base const& i) - : boost::python::class_(name, doc, i) { } - - template - self& def_readwrite_convert(char const* name, D const& d, char const* /*doc*/=0) - { - this->add_property(name, - boost::python::make_getter(d, boost::python::return_value_policy()), - boost::python::make_setter(d, boost::python::default_call_policies())); - return *this; - } -}; - -/* -boost::python::tuple get_displacement(text_layout_properties const& t) -{ - return boost::python::make_tuple(0.0,0.0);// FIXME t.displacement.x, t.displacement.y); -} - -void set_displacement(text_layout_properties &t, boost::python::tuple arg) -{ - if (len(arg) != 2) - { - PyErr_SetObject(PyExc_ValueError, - ("expected 2-item tuple in call to set_displacement; got %s" - % arg).ptr() - ); - throw_error_already_set(); - } - - //double x = extract(arg[0]); - //double y = extract(arg[1]); - //t.displacement.set(x, y); FIXME -} - - -struct NodeWrap - : formatting::node, wrapper -{ - NodeWrap() - : formatting::node(), wrapper() {} - - void apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const - { - python_block_auto_unblock b; - this->get_override("apply")(ptr(&p), ptr(&feature), ptr(&vars), ptr(&output)); - } - - virtual void add_expressions(expression_set &output) const - { - override o = this->get_override("add_expressions"); - if (o) - { - python_block_auto_unblock b; - o(ptr(&output)); - } else - { - formatting::node::add_expressions(output); - } - } - - void default_add_expressions(expression_set &output) const - { - formatting::node::add_expressions(output); - } -}; -*/ -/* -struct TextNodeWrap - : formatting::text_node, wrapper -{ - TextNodeWrap(expression_ptr expr) - : formatting::text_node(expr), wrapper() {} - - TextNodeWrap(std::string expr_text) - : formatting::text_node(expr_text), wrapper() {} - - virtual void apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const - { - if(override o = this->get_override("apply")) - { - python_block_auto_unblock b; - o(ptr(&p), ptr(&feature), ptr(&vars), ptr(&output)); - } - else - { - formatting::text_node::apply(p, feature, vars, output); - } - } - - void default_apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const - { - formatting::text_node::apply(p, feature, vars, output); - } -}; -*/ -/* -struct FormatNodeWrap - : formatting::format_node, wrapper -{ - virtual void apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const - { - if(override o = this->get_override("apply")) - { - python_block_auto_unblock b; - o(ptr(&p), ptr(&feature), ptr(&vars), ptr(&output)); - } - else - { - formatting::format_node::apply(p, feature, vars ,output); - } - } - - void default_apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const - { - formatting::format_node::apply(p, feature, vars, output); - } -}; - -struct ExprFormatWrap: formatting::expression_format, wrapper -{ - virtual void apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const - { - if(override o = this->get_override("apply")) - { - python_block_auto_unblock b; - o(ptr(&p), ptr(&feature), ptr(&vars), ptr(&output)); - } - else - { - formatting::expression_format::apply(p, feature, vars, output); - } - } - - void default_apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const - { - formatting::expression_format::apply(p, feature, vars, output); - } -}; - -struct LayoutNodeWrap: formatting::layout_node, wrapper -{ - virtual void apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const - { - if(override o = this->get_override("apply")) - { - python_block_auto_unblock b; - o(ptr(&p), ptr(&feature), ptr(&vars), ptr(&output)); - } - else - { - formatting::layout_node::apply(p, feature, vars, output); - } - } - - void default_apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const - { - formatting::layout_node::apply(p, feature, vars, output); - } -}; - -struct ListNodeWrap: formatting::list_node, wrapper -{ - //Default constructor - ListNodeWrap() : formatting::list_node(), wrapper() - { - } - - //Special constructor: Takes a python sequence as its argument - ListNodeWrap(object l) : formatting::list_node(), wrapper() - { - stl_input_iterator begin(l), end; - while (begin != end) - { - children_.push_back(*begin); - ++begin; - } - } - - // TODO: Add constructor taking variable number of arguments. - http://wiki.python.org/moin/boost.python/HowTo#A.22Raw.22_function - - virtual void apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const - { - if(override o = this->get_override("apply")) - { - python_block_auto_unblock b; - o(ptr(&p), ptr(&feature), ptr(&vars), ptr(&output)); - } - else - { - formatting::list_node::apply(p, feature, vars, output); - } - } - - void default_apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const - { - formatting::list_node::apply(p, feature, vars, output); - } - - inline void IndexError(){ - PyErr_SetString(PyExc_IndexError, "Index out of range"); - throw_error_already_set(); - } - - unsigned get_length() - { - return children_.size(); - } - - formatting::node_ptr get_item(int i) - { - if (i < 0) i+= children_.size(); - if (i < static_cast(children_.size())) return children_[i]; - IndexError(); - return formatting::node_ptr(); //Avoid compiler warning - } - - void set_item(int i, formatting::node_ptr ptr) - { - if (i < 0) i+= children_.size(); - if (i < static_cast(children_.size())) children_[i] = ptr; - IndexError(); - } - - void append(formatting::node_ptr ptr) - { - children_.push_back(ptr); - } -}; -*/ -/* -struct TextPlacementsWrap: text_placements, wrapper -{ - text_placement_info_ptr get_placement_info(double scale_factor_) const - { - python_block_auto_unblock b; - //return this->get_override("get_placement_info")(); - return text_placement_info_ptr(); - } -}; - -struct TextPlacementInfoWrap: text_placement_info, wrapper -{ - TextPlacementInfoWrap(text_placements const* parent, - double scale_factor_) - : text_placement_info(parent, scale_factor_) - { - - } - - bool next() - { - python_block_auto_unblock b; - return this->get_override("next")(); - } -}; - -void insert_expression(expression_set *set, expression_ptr p) -{ - set->insert(p); -} - - -evaluated_format_properties_ptr get_format(text_symbolizer const& sym) -{ - return sym.get_placement_options()->defaults.format; -} - -void set_format(text_symbolizer const& sym, evaluated_format_properties_ptr format) -{ - sym.get_placement_options()->defaults.format = format; -} - -text_symbolizer_properties & get_properties(text_symbolizer const& sym) -{ - return sym.get_placement_options()->defaults; -} - -void set_properties(text_symbolizer const& sym, text_symbolizer_properties & defaults) -{ - sym.get_placement_options()->defaults = defaults; -} -*/ -} - -void export_text_placement() -{ - /* - using namespace boost::python; - - enumeration_("label_placement") - .value("LINE_PLACEMENT",LINE_PLACEMENT) - .value("POINT_PLACEMENT",POINT_PLACEMENT) - .value("VERTEX_PLACEMENT",VERTEX_PLACEMENT) - .value("INTERIOR_PLACEMENT",INTERIOR_PLACEMENT) - ; - enumeration_("vertical_alignment") - .value("TOP",V_TOP) - .value("MIDDLE",V_MIDDLE) - .value("BOTTOM",V_BOTTOM) - .value("AUTO",V_AUTO) - ; - - enumeration_("horizontal_alignment") - .value("LEFT",H_LEFT) - .value("MIDDLE",H_MIDDLE) - .value("RIGHT",H_RIGHT) - .value("AUTO",H_AUTO) - ; - - enumeration_("justify_alignment") - .value("LEFT",J_LEFT) - .value("MIDDLE",J_MIDDLE) - .value("RIGHT",J_RIGHT) - .value("AUTO", J_AUTO) - ; - - enumeration_("text_transform") - .value("NONE",NONE) - .value("UPPERCASE",UPPERCASE) - .value("LOWERCASE",LOWERCASE) - .value("CAPITALIZE",CAPITALIZE) - ; - - enumeration_("halo_rasterizer") - .value("FULL",HALO_RASTERIZER_FULL) - .value("FAST",HALO_RASTERIZER_FAST) - ; - */ - class_("TextSymbolizer", - init<>()) - ; - /* - - class_with_converter - ("TextSymbolizerProperties") - .def_readwrite_convert("label_placement", &text_symbolizer_properties::label_placement) - .def_readwrite_convert("upright", &text_symbolizer_properties::upright) - .def_readwrite("label_spacing", &text_symbolizer_properties::label_spacing) - .def_readwrite("label_position_tolerance", &text_symbolizer_properties::label_position_tolerance) - .def_readwrite("avoid_edges", &text_symbolizer_properties::avoid_edges) - .def_readwrite("margin", &text_symbolizer_properties::margin) - .def_readwrite("repeat_distance", &text_symbolizer_properties::repeat_distance) - .def_readwrite("minimum_distance", &text_symbolizer_properties::minimum_distance) - .def_readwrite("minimum_padding", &text_symbolizer_properties::minimum_padding) - .def_readwrite("minimum_path_length", &text_symbolizer_properties::minimum_path_length) - .def_readwrite("maximum_angle_char_delta", &text_symbolizer_properties::max_char_angle_delta) - .def_readwrite("allow_overlap", &text_symbolizer_properties::allow_overlap) - .def_readwrite("largest_bbox_only", &text_symbolizer_properties::largest_bbox_only) - .def_readwrite("layout_defaults", &text_symbolizer_properties::layout_defaults) - //.def_readwrite("format", &text_symbolizer_properties::format) - .add_property ("format_tree", - &text_symbolizer_properties::format_tree, - &text_symbolizer_properties::set_format_tree); - //from_xml, to_xml operate on mapnik's internal XML tree and don't make sense in python. - // add_expressions isn't useful in python either. The result is only needed by - // attribute_collector (which isn't exposed in python) and - // it just calls add_expressions of the associated formatting tree. - // set_old_style expression is just a compatibility wrapper and doesn't need to be exposed in python. - ; - - class_with_converter - ("TextLayoutProperties") - .def_readwrite_convert("horizontal_alignment", &text_layout_properties::halign) - .def_readwrite_convert("justify_alignment", &text_layout_properties::jalign) - .def_readwrite_convert("vertical_alignment", &text_layout_properties::valign) - .def_readwrite("text_ratio", &text_layout_properties::text_ratio) - .def_readwrite("wrap_width", &text_layout_properties::wrap_width) - .def_readwrite("wrap_before", &text_layout_properties::wrap_before) - .def_readwrite("orientation", &text_layout_properties::orientation) - .def_readwrite("rotate_displacement", &text_layout_properties::rotate_displacement) - .add_property("displacement", &get_displacement, &set_displacement); - - class_with_converter - ("CharProperties") - .def_readwrite_convert("text_transform", &detail::evaluated_format_properties::text_transform) - .def_readwrite_convert("fontset", &detail::evaluated_format_properties::fontset) - .def(init()) //Copy constructor - .def_readwrite("face_name", &detail::evaluated_format_properties::face_name) - .def_readwrite("text_size", &detail::evaluated_format_properties::text_size) - .def_readwrite("character_spacing", &detail::evaluated_format_properties::character_spacing) - .def_readwrite("line_spacing", &detail::evaluated_format_properties::line_spacing) - .def_readwrite("text_opacity", &detail::evaluated_format_properties::text_opacity) - .def_readwrite("fill", &detail::evaluated_format_properties::fill) - .def_readwrite("halo_fill", &detail::evaluated_format_properties::halo_fill) - .def_readwrite("halo_radius", &evaluated_format_properties::halo_radius) - //from_xml, to_xml operate on mapnik's internal XML tree and don't make sense in python. - ; - class_, - boost::noncopyable> - ("TextPlacements") - .def_readwrite("defaults", &text_placements::defaults) - //.def("get_placement_info", pure_virtual(&text_placements::get_placement_info)) - // TODO: add_expressions() - ; - register_ptr_to_python >(); - - class_, - boost::noncopyable> - ("TextPlacementInfo", - init()) - .def("next", pure_virtual(&text_placement_info::next)) - .def_readwrite("properties", &text_placement_info::properties) - .def_readwrite("scale_factor", &text_placement_info::scale_factor) - ; - register_ptr_to_python >(); - - - class_, - boost::noncopyable>("ExpressionSet") - .def("insert", &insert_expression); - ; - - class_, - boost::noncopyable>("FormattingNode") - .def("apply", pure_virtual(&formatting::node::apply)) - .def("add_expressions", pure_virtual(&formatting::node::add_expressions)) - .def("to_xml", pure_virtual(&formatting::node::to_xml)) - ; - - register_ptr_to_python >(); - - class_, - bases,boost::noncopyable>("FormattingText", init()) - .def(init()) - .def("apply", &formatting::text_node::apply)//, &TextNodeWrap::default_apply) - .add_property("text",&formatting::text_node::get_text, &formatting::text_node::set_text) - ; - - register_ptr_to_python >(); - - class_with_converter, - bases, - boost::noncopyable> - ("FormattingFormat") - .def_readwrite_convert("text_size", &formatting::format_node::text_size) - .def_readwrite_convert("face_name", &formatting::format_node::face_name) - .def_readwrite_convert("character_spacing", &formatting::format_node::character_spacing) - .def_readwrite_convert("line_spacing", &formatting::format_node::line_spacing) - .def_readwrite_convert("text_opacity", &formatting::format_node::text_opacity) - .def_readwrite_convert("text_transform", &formatting::format_node::text_transform) - .def_readwrite_convert("fill", &formatting::format_node::fill) - .def_readwrite_convert("halo_fill", &formatting::format_node::halo_fill) - .def_readwrite_convert("halo_radius", &formatting::format_node::halo_radius) - .def("apply", &formatting::format_node::apply, &FormatNodeWrap::default_apply) - .add_property("child", - &formatting::format_node::get_child, - &formatting::format_node::set_child) - ; - register_ptr_to_python >(); - - class_, - bases, - boost::noncopyable> - ("FormattingList", init<>()) - .def(init()) - .def("append", &formatting::list_node::push_back) - .def("apply", &formatting::list_node::apply, &ListNodeWrap::default_apply) - .def("__len__", &ListNodeWrap::get_length) - .def("__getitem__", &ListNodeWrap::get_item) - .def("__setitem__", &ListNodeWrap::set_item) - .def("append", &ListNodeWrap::append) - ; - - register_ptr_to_python >(); - - class_, - bases, - boost::noncopyable> - ("FormattingExpressionFormat") - .def_readwrite("text_size", &formatting::expression_format::text_size) - .def_readwrite("face_name", &formatting::expression_format::face_name) - .def_readwrite("character_spacing", &formatting::expression_format::character_spacing) - .def_readwrite("line_spacing", &formatting::expression_format::line_spacing) - .def_readwrite("text_opacity", &formatting::expression_format::text_opacity) - .def_readwrite("fill", &formatting::expression_format::fill) - .def_readwrite("halo_fill", &formatting::expression_format::halo_fill) - .def_readwrite("halo_radius", &formatting::expression_format::halo_radius) - .def("apply", &formatting::expression_format::apply, &ExprFormatWrap::default_apply) - .add_property("child", - &formatting::expression_format::get_child, - &formatting::expression_format::set_child) - ; - register_ptr_to_python >(); -*/ - //TODO: registry -} diff --git a/bindings/python/mapnik_threads.hpp b/bindings/python/mapnik_threads.hpp deleted file mode 100644 index e48a707e4..000000000 --- a/bindings/python/mapnik_threads.hpp +++ /dev/null @@ -1,109 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ -#ifndef MAPNIK_THREADS_HPP -#define MAPNIK_THREADS_HPP - -#include // for thread_specific_ptr -#include - -namespace mapnik { -class python_thread -{ - /* Docs: - http://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock - */ -public: - static void unblock() - { -#ifdef MAPNIK_DEBUG - if (state.get()) - { - std::cerr << "ERROR: Python threads are already unblocked. " - "Unblocking again will loose the current state and " - "might crash later. Aborting!\n"; - abort(); //This is a serious error and can't be handled in any other sane way - } -#endif - PyThreadState *_save = 0; //Name defined by python - Py_UNBLOCK_THREADS; - state.reset(_save); -#ifdef MAPNIK_DEBUG - if (!_save) { - thread_support = false; - } -#endif - } - - static void block() - { -#ifdef MAPNIK_DEBUG - if (thread_support && !state.get()) - { - std::cerr << "ERROR: Trying to restore python thread state, " - "but no state is saved. Can't continue and also " - "can't raise an exception because the python " - "interpreter might be non-function. Aborting!\n"; - abort(); - } -#endif - PyThreadState *_save = state.release(); //Name defined by python - Py_BLOCK_THREADS; - } - -private: - static boost::thread_specific_ptr state; -#ifdef MAPNIK_DEBUG - static bool thread_support; -#endif -}; - -class python_block_auto_unblock -{ -public: - python_block_auto_unblock() - { - python_thread::block(); - } - - ~python_block_auto_unblock() - { - python_thread::unblock(); - } -}; - -class python_unblock_auto_block -{ -public: - python_unblock_auto_block() - { - python_thread::unblock(); - } - - ~python_unblock_auto_block() - { - python_thread::block(); - } -}; - -} //namespace - -#endif // MAPNIK_THREADS_HPP diff --git a/bindings/python/mapnik_value_converter.hpp b/bindings/python/mapnik_value_converter.hpp deleted file mode 100644 index 4f152a035..000000000 --- a/bindings/python/mapnik_value_converter.hpp +++ /dev/null @@ -1,90 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ -#ifndef MAPNIK_PYTHON_BINDING_VALUE_CONVERTER_INCLUDED -#define MAPNIK_PYTHON_BINDING_VALUE_CONVERTER_INCLUDED - -// mapnik -#include -#include -// boost -#include -#include - -namespace boost { namespace python { - - struct value_converter - { - PyObject * operator() (mapnik::value_integer val) const - { - return ::PyLong_FromLongLong(val); - } - - PyObject * operator() (mapnik::value_double val) const - { - return ::PyFloat_FromDouble(val); - } - - PyObject * operator() (mapnik::value_bool val) const - { - return ::PyBool_FromLong(val); - } - - PyObject * operator() (std::string const& s) const - { - return ::PyUnicode_DecodeUTF8(s.c_str(),implicit_cast(s.length()),0); - } - - PyObject * operator() (mapnik::value_unicode_string const& s) const - { - std::string buffer; - mapnik::to_utf8(s,buffer); - return ::PyUnicode_DecodeUTF8(buffer.c_str(),implicit_cast(buffer.length()),0); - } - - PyObject * operator() (mapnik::value_null const& /*s*/) const - { - Py_RETURN_NONE; - } - }; - - - struct mapnik_value_to_python - { - static PyObject* convert(mapnik::value const& v) - { - return mapnik::util::apply_visitor(value_converter(),v); - } - - }; - - struct mapnik_param_to_python - { - static PyObject* convert(mapnik::value_holder const& v) - { - return mapnik::util::apply_visitor(value_converter(),v); - } - }; - - -}} - -#endif // MAPNIK_PYTHON_BINDING_VALUE_CONVERTER_INCLUDED diff --git a/bindings/python/mapnik_view_transform.cpp b/bindings/python/mapnik_view_transform.cpp deleted file mode 100644 index b6c9a2058..000000000 --- a/bindings/python/mapnik_view_transform.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko, Jean-Francois Doyon - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include - -// boost -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#pragma GCC diagnostic pop - -// mapnik -#include - -using mapnik::view_transform; - -struct view_transform_pickle_suite : boost::python::pickle_suite -{ - static boost::python::tuple - getinitargs(const view_transform& c) - { - using namespace boost::python; - return boost::python::make_tuple(c.width(),c.height(),c.extent()); - } -}; - -namespace { - -mapnik::coord2d forward_point(mapnik::view_transform const& t, mapnik::coord2d const& in) -{ - mapnik::coord2d out(in); - t.forward(out); - return out; -} - -mapnik::coord2d backward_point(mapnik::view_transform const& t, mapnik::coord2d const& in) -{ - mapnik::coord2d out(in); - t.backward(out); - return out; -} - -mapnik::box2d forward_envelope(mapnik::view_transform const& t, mapnik::box2d const& in) -{ - return t.forward(in); -} - -mapnik::box2d backward_envelope(mapnik::view_transform const& t, mapnik::box2d const& in) -{ - return t.backward(in); -} -} - -void export_view_transform() -{ - using namespace boost::python; - using mapnik::box2d; - using mapnik::coord2d; - - class_("ViewTransform",init const& > ( - "Create a ViewTransform with a width and height as integers and extent")) - .def_pickle(view_transform_pickle_suite()) - .def("forward", forward_point) - .def("backward",backward_point) - .def("forward", forward_envelope) - .def("backward",backward_envelope) - .def("scale_x",&view_transform::scale_x) - .def("scale_y",&view_transform::scale_y) - ; -} diff --git a/bindings/python/python_grid_utils.cpp b/bindings/python/python_grid_utils.cpp deleted file mode 100644 index e92ac6b1a..000000000 --- a/bindings/python/python_grid_utils.cpp +++ /dev/null @@ -1,405 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#if defined(GRID_RENDERER) - -#include - -// boost -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" - -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "python_grid_utils.hpp" - -// stl -#include - -namespace mapnik { - - -template -void grid2utf(T const& grid_type, - boost::python::list& l, - std::vector& key_order) -{ - using keys_type = std::map< typename T::lookup_type, typename T::value_type>; - using keys_iterator = typename keys_type::iterator; - - typename T::data_type const& data = grid_type.data(); - typename T::feature_key_type const& feature_keys = grid_type.get_feature_keys(); - typename T::feature_key_type::const_iterator feature_pos; - - keys_type keys; - // start counting at utf8 codepoint 32, aka space character - std::uint16_t codepoint = 32; - - unsigned array_size = data.width(); - for (unsigned y = 0; y < data.height(); ++y) - { - std::uint16_t idx = 0; - const std::unique_ptr line(new Py_UNICODE[array_size]); - typename T::value_type const* row = data.getRow(y); - for (unsigned x = 0; x < data.width(); ++x) - { - typename T::value_type feature_id = row[x]; - feature_pos = feature_keys.find(feature_id); - if (feature_pos != feature_keys.end()) - { - mapnik::grid::lookup_type val = feature_pos->second; - keys_iterator key_pos = keys.find(val); - if (key_pos == keys.end()) - { - // Create a new entry for this key. Skip the codepoints that - // can't be encoded directly in JSON. - if (codepoint == 34) ++codepoint; // Skip " - else if (codepoint == 92) ++codepoint; // Skip backslash - if (feature_id == mapnik::grid::base_mask) - { - keys[""] = codepoint; - key_order.push_back(""); - } - else - { - keys[val] = codepoint; - key_order.push_back(val); - } - line[idx++] = static_cast(codepoint); - ++codepoint; - } - else - { - line[idx++] = static_cast(key_pos->second); - } - } - // else, shouldn't get here... - } - l.append(boost::python::object( - boost::python::handle<>( - PyUnicode_FromUnicode(line.get(), array_size)))); - } -} - - -template -void grid2utf(T const& grid_type, - boost::python::list& l, - std::vector& key_order, - unsigned int resolution) -{ - using keys_type = std::map< typename T::lookup_type, typename T::value_type>; - using keys_iterator = typename keys_type::iterator; - - typename T::feature_key_type const& feature_keys = grid_type.get_feature_keys(); - typename T::feature_key_type::const_iterator feature_pos; - - keys_type keys; - // start counting at utf8 codepoint 32, aka space character - std::uint16_t codepoint = 32; - - unsigned array_size = std::ceil(grid_type.width()/static_cast(resolution)); - for (unsigned y = 0; y < grid_type.height(); y=y+resolution) - { - std::uint16_t idx = 0; - const std::unique_ptr line(new Py_UNICODE[array_size]); - mapnik::grid::value_type const* row = grid_type.getRow(y); - for (unsigned x = 0; x < grid_type.width(); x=x+resolution) - { - typename T::value_type feature_id = row[x]; - feature_pos = feature_keys.find(feature_id); - if (feature_pos != feature_keys.end()) - { - mapnik::grid::lookup_type val = feature_pos->second; - keys_iterator key_pos = keys.find(val); - if (key_pos == keys.end()) - { - // Create a new entry for this key. Skip the codepoints that - // can't be encoded directly in JSON. - if (codepoint == 34) ++codepoint; // Skip " - else if (codepoint == 92) ++codepoint; // Skip backslash - if (feature_id == mapnik::grid::base_mask) - { - keys[""] = codepoint; - key_order.push_back(""); - } - else - { - keys[val] = codepoint; - key_order.push_back(val); - } - line[idx++] = static_cast(codepoint); - ++codepoint; - } - else - { - line[idx++] = static_cast(key_pos->second); - } - } - // else, shouldn't get here... - } - l.append(boost::python::object( - boost::python::handle<>( - PyUnicode_FromUnicode(line.get(), array_size)))); - } -} - - -template -void grid2utf2(T const& grid_type, - boost::python::list& l, - std::vector& key_order, - unsigned int resolution) -{ - using keys_type = std::map< typename T::lookup_type, typename T::value_type>; - using keys_iterator = typename keys_type::iterator; - - typename T::data_type const& data = grid_type.data(); - typename T::feature_key_type const& feature_keys = grid_type.get_feature_keys(); - typename T::feature_key_type::const_iterator feature_pos; - - keys_type keys; - // start counting at utf8 codepoint 32, aka space character - uint16_t codepoint = 32; - - mapnik::grid::data_type target(data.width()/resolution,data.height()/resolution); - mapnik::scale_grid(target,grid_type.data(),0.0,0.0); - - unsigned array_size = target.width(); - for (unsigned y = 0; y < target.height(); ++y) - { - uint16_t idx = 0; - const std::unique_ptr line(new Py_UNICODE[array_size]); - mapnik::grid::value_type * row = target.getRow(y); - unsigned x; - for (x = 0; x < target.width(); ++x) - { - feature_pos = feature_keys.find(row[x]); - if (feature_pos != feature_keys.end()) - { - mapnik::grid::lookup_type val = feature_pos->second; - keys_iterator key_pos = keys.find(val); - if (key_pos == keys.end()) - { - // Create a new entry for this key. Skip the codepoints that - // can't be encoded directly in JSON. - if (codepoint == 34) ++codepoint; // Skip " - else if (codepoint == 92) ++codepoint; // Skip backslash - keys[val] = codepoint; - key_order.push_back(val); - line[idx++] = static_cast(codepoint); - ++codepoint; - } - else - { - line[idx++] = static_cast(key_pos->second); - } - } - // else, shouldn't get here... - } - l.append(boost::python::object( - boost::python::handle<>( - PyUnicode_FromUnicode(line.get(), array_size)))); - } -} - - -template -void write_features(T const& grid_type, - boost::python::dict& feature_data, - std::vector const& key_order) -{ - typename T::feature_type const& g_features = grid_type.get_grid_features(); - if (g_features.size() <= 0) - { - return; - } - - std::set const& attributes = grid_type.get_fields(); - typename T::feature_type::const_iterator feat_end = g_features.end(); - for ( std::string const& key_item :key_order ) - { - if (key_item.empty()) - { - continue; - } - - typename T::feature_type::const_iterator feat_itr = g_features.find(key_item); - if (feat_itr == feat_end) - { - continue; - } - - bool found = false; - boost::python::dict feat; - mapnik::feature_ptr feature = feat_itr->second; - for ( std::string const& attr : attributes ) - { - if (attr == "__id__") - { - feat[attr.c_str()] = feature->id(); - } - else if (feature->has_key(attr)) - { - found = true; - feat[attr.c_str()] = feature->get(attr); - } - } - - if (found) - { - feature_data[feat_itr->first] = feat; - } - } -} - -template -void grid_encode_utf(T const& grid_type, - boost::python::dict & json, - bool add_features, - unsigned int resolution) -{ - // convert buffer to utf and gather key order - boost::python::list l; - std::vector key_order; - - if (resolution != 1) { - // resample on the fly - faster, less accurate - mapnik::grid2utf(grid_type,l,key_order,resolution); - - // resample first - slower, more accurate - //mapnik::grid2utf2(grid_type,l,key_order,resolution); - } - else - { - mapnik::grid2utf(grid_type,l,key_order); - } - - // convert key order to proper python list - boost::python::list keys_a; - for ( typename T::lookup_type const& key_id : key_order ) - { - keys_a.append(key_id); - } - - // gather feature data - boost::python::dict feature_data; - if (add_features) { - mapnik::write_features(grid_type,feature_data,key_order); - } - - json["grid"] = l; - json["keys"] = keys_a; - json["data"] = feature_data; - -} - -template -boost::python::dict grid_encode( T const& grid, std::string const& format, bool add_features, unsigned int resolution) -{ - if (format == "utf") { - boost::python::dict json; - grid_encode_utf(grid,json,add_features,resolution); - return json; - } - else - { - std::stringstream s; - s << "'utf' is currently the only supported encoding format."; - throw mapnik::value_error(s.str()); - } -} - -template boost::python::dict grid_encode( mapnik::grid const& grid, std::string const& format, bool add_features, unsigned int resolution); -template boost::python::dict grid_encode( mapnik::grid_view const& grid, std::string const& format, bool add_features, unsigned int resolution); - -void render_layer_for_grid(mapnik::Map const& map, - mapnik::grid & grid, - unsigned layer_idx, - boost::python::list const& fields, - double scale_factor, - unsigned offset_x, - unsigned offset_y) -{ - std::vector const& layers = map.layers(); - std::size_t layer_num = layers.size(); - if (layer_idx >= layer_num) { - std::ostringstream s; - s << "Zero-based layer index '" << layer_idx << "' not valid, only '" - << layer_num << "' layers are in map\n"; - throw std::runtime_error(s.str()); - } - - // convert python list to std::set - boost::python::ssize_t num_fields = boost::python::len(fields); - for(boost::python::ssize_t i=0; i name(fields[i]); - if (name.check()) - { - grid.add_field(name()); - } - else - { - std::stringstream s; - s << "list of field names must be strings"; - throw mapnik::value_error(s.str()); - } - } - - // copy field names - std::set attributes = grid.get_fields(); - // todo - make this a static constant - std::string known_id_key = "__id__"; - if (attributes.find(known_id_key) != attributes.end()) - { - attributes.erase(known_id_key); - } - - std::string join_field = grid.get_key(); - if (known_id_key != join_field && - attributes.find(join_field) == attributes.end()) - { - attributes.insert(join_field); - } - - mapnik::grid_renderer ren(map,grid,scale_factor,offset_x,offset_y); - mapnik::layer const& layer = layers[layer_idx]; - ren.apply(layer,attributes); -} - -} - -#endif diff --git a/bindings/python/python_grid_utils.hpp b/bindings/python/python_grid_utils.hpp deleted file mode 100644 index 320b342a8..000000000 --- a/bindings/python/python_grid_utils.hpp +++ /dev/null @@ -1,79 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ -#ifndef MAPNIK_PYTHON_BINDING_GRID_UTILS_INCLUDED -#define MAPNIK_PYTHON_BINDING_GRID_UTILS_INCLUDED - -// boost -#include - -// mapnik -#include -#include - -namespace mapnik { - - -template -void grid2utf(T const& grid_type, - boost::python::list& l, - std::vector& key_order); - - -template -void grid2utf(T const& grid_type, - boost::python::list& l, - std::vector& key_order, - unsigned int resolution); - - -template -void grid2utf2(T const& grid_type, - boost::python::list& l, - std::vector& key_order, - unsigned int resolution); - - -template -void write_features(T const& grid_type, - boost::python::dict& feature_data, - std::vector const& key_order); - -template -void grid_encode_utf(T const& grid_type, - boost::python::dict & json, - bool add_features, - unsigned int resolution); - -template -boost::python::dict grid_encode( T const& grid, std::string const& format, bool add_features, unsigned int resolution); - -void render_layer_for_grid(const mapnik::Map& map, - mapnik::grid& grid, - unsigned layer_idx, // TODO - layer by name or index - boost::python::list const& fields, - double scale_factor, - unsigned offset_x, - unsigned offset_y); - -} - -#endif // MAPNIK_PYTHON_BINDING_GRID_UTILS_INCLUDED diff --git a/bindings/python/python_optional.hpp b/bindings/python/python_optional.hpp deleted file mode 100644 index 91585c2ae..000000000 --- a/bindings/python/python_optional.hpp +++ /dev/null @@ -1,198 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ - -#include -#include - -#include - -// boost::optional to/from converter from John Wiegley - -template -struct object_from_python -{ - object_from_python() { - boost::python::converter::registry::push_back - (&TfromPy::convertible, &TfromPy::construct, - boost::python::type_id()); - } -}; - -template -struct register_python_conversion -{ - register_python_conversion() { - boost::python::to_python_converter(); - object_from_python(); - } -}; - -template -struct python_optional : public mapnik::util::noncopyable -{ - struct optional_to_python - { - static PyObject * convert(const boost::optional& value) - { - return (value ? boost::python::to_python_value()(*value) : - boost::python::detail::none()); - } - }; - - struct optional_from_python - { - static void * convertible(PyObject * source) - { - using namespace boost::python::converter; - - if (source == Py_None) - return source; - - const registration& converters(registered::converters); - - if (implicit_rvalue_convertible_from_python(source, - converters)) { - rvalue_from_python_stage1_data data = - rvalue_from_python_stage1(source, converters); - return rvalue_from_python_stage2(source, data, converters); - } - return 0; - } - - static void construct(PyObject * source, - boost::python::converter::rvalue_from_python_stage1_data * data) - { - using namespace boost::python::converter; - - void * const storage = ((rvalue_from_python_storage *) - data)->storage.bytes; - - if (data->convertible == source) // == None - new (storage) boost::optional(); // A Boost uninitialized value - else - new (storage) boost::optional(*static_cast(data->convertible)); - - data->convertible = storage; - } - }; - - explicit python_optional() - { - register_python_conversion, - optional_to_python, optional_from_python>(); - } -}; - -// to/from boost::optional -template <> -struct python_optional : public mapnik::util::noncopyable -{ - struct optional_to_python - { - static PyObject * convert(const boost::optional& value) - { - return (value ? PyFloat_FromDouble(*value) : - boost::python::detail::none()); - } - }; - - struct optional_from_python - { - static void * convertible(PyObject * source) - { - using namespace boost::python::converter; - - if (source == Py_None || PyFloat_Check(source)) - return source; - return 0; - } - - static void construct(PyObject * source, - boost::python::converter::rvalue_from_python_stage1_data * data) - { - using namespace boost::python::converter; - void * const storage = ((rvalue_from_python_storage > *) - data)->storage.bytes; - if (source == Py_None) // == None - new (storage) boost::optional(); // A Boost uninitialized value - else - new (storage) boost::optional(PyFloat_AsDouble(source)); - data->convertible = storage; - } - }; - - explicit python_optional() - { - register_python_conversion, - optional_to_python, optional_from_python>(); - } -}; - -// to/from boost::optional -template <> -struct python_optional : public mapnik::util::noncopyable -{ - struct optional_to_python - { - static PyObject * convert(const boost::optional& value) - { - if (value) - { - if (*value) Py_RETURN_TRUE; - else Py_RETURN_FALSE; - } - else return boost::python::detail::none(); - } - }; - struct optional_from_python - { - static void * convertible(PyObject * source) - { - using namespace boost::python::converter; - - if (source == Py_None || PyBool_Check(source)) - return source; - return 0; - } - - static void construct(PyObject * source, - boost::python::converter::rvalue_from_python_stage1_data * data) - { - using namespace boost::python::converter; - void * const storage = ((rvalue_from_python_storage > *) - data)->storage.bytes; - if (source == Py_None) // == None - new (storage) boost::optional(); // A Boost uninitialized value - else - { - new (storage) boost::optional(source == Py_True ? true : false); - } - data->convertible = storage; - } - }; - - explicit python_optional() - { - register_python_conversion, - optional_to_python, optional_from_python>(); - } -}; diff --git a/bindings/python/python_to_value.hpp b/bindings/python/python_to_value.hpp deleted file mode 100644 index 198305cc1..000000000 --- a/bindings/python/python_to_value.hpp +++ /dev/null @@ -1,122 +0,0 @@ -/***************************************************************************** - * - * This file is part of Mapnik (c++ mapping toolkit) - * - * Copyright (C) 2014 Artem Pavlenko - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - *****************************************************************************/ -#ifndef MAPNIK_PYTHON_BINDING_PYTHON_TO_VALUE -#define MAPNIK_PYTHON_BINDING_PYTHON_TO_VALUE - -// boost -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#pragma GCC diagnostic ignored "-Wunused-local-typedef" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" -#include -#pragma GCC diagnostic pop - -// mapnik -#include -#include -#include - -namespace mapnik { - - static mapnik::attributes dict2attr(boost::python::dict const& d) - { - using namespace boost::python; - mapnik::attributes vars; - mapnik::transcoder tr_("utf8"); - boost::python::list keys=d.keys(); - for (int i=0; i < len(keys); ++i) - { - std::string key; - object obj_key = keys[i]; - if (PyUnicode_Check(obj_key.ptr())) - { - PyObject* temp = PyUnicode_AsUTF8String(obj_key.ptr()); - if (temp) - { - #if PY_VERSION_HEX >= 0x03000000 - char* c_str = PyBytes_AsString(temp); - #else - char* c_str = PyString_AsString(temp); - #endif - key = c_str; - Py_DecRef(temp); - } - } - else - { - key = extract(keys[i]); - } - object obj = d[key]; - if (PyUnicode_Check(obj.ptr())) - { - PyObject* temp = PyUnicode_AsUTF8String(obj.ptr()); - if (temp) - { - #if PY_VERSION_HEX >= 0x03000000 - char* c_str = PyBytes_AsString(temp); - #else - char* c_str = PyString_AsString(temp); - #endif - vars[key] = tr_.transcode(c_str); - Py_DecRef(temp); - } - continue; - } - - if (PyBool_Check(obj.ptr())) - { - extract ex(obj); - if (ex.check()) - { - vars[key] = ex(); - } - } - else if (PyFloat_Check(obj.ptr())) - { - extract ex(obj); - if (ex.check()) - { - vars[key] = ex(); - } - } - else - { - extract ex(obj); - if (ex.check()) - { - vars[key] = ex(); - } - else - { - extract ex0(obj); - if (ex0.check()) - { - vars[key] = tr_.transcode(ex0().c_str()); - } - } - } - } - return vars; - } -} - -#endif // MAPNIK_PYTHON_BINDING_PYTHON_TO_VALUE diff --git a/bootstrap.sh b/bootstrap.sh index 204107598..9d7ee7a57 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -8,7 +8,7 @@ todo - gdal shared lib / avoid dlclose atexit crash - clang debs to s3 -- docs for base setup: sudo apt-get -y install zlib1g-dev python-dev make git python-dev +- docs for base setup: sudo apt-get -y install zlib1g-dev make git - shrink icu data ' @@ -50,7 +50,6 @@ function install_mason_deps() { install boost_libfilesystem 1.57.0 install boost_libprogram_options 1.57.0 install boost_libregex 1.57.0 - install boost_libpython 1.57.0 install libpq 9.4.0 install sqlite 3.8.8.1 install gdal 1.11.1 @@ -59,14 +58,6 @@ function install_mason_deps() { install cairo 1.12.18 } -function setup_nose() { - if [[ ! -d $(pwd)/nose-1.3.4 ]]; then - curl -s -O https://pypi.python.org/packages/source/n/nose/nose-1.3.4.tar.gz - tar -xzf nose-1.3.4.tar.gz - fi - export PYTHONPATH=$(pwd)/nose-1.3.4:${PYTHONPATH} -} - MASON_LINKED_ABS=$(pwd)/mason_packages/.link MASON_LINKED_REL=./mason_packages/.link @@ -114,11 +105,9 @@ CAIRO_INCLUDES = '${MASON_LINKED_REL}/include' CAIRO_LIBS = '${MASON_LINKED_REL}/lib' SQLITE_INCLUDES = '${MASON_LINKED_REL}/include' SQLITE_LIBS = '${MASON_LINKED_REL}/lib' -FRAMEWORK_PYTHON = False BENCHMARK = True CPP_TESTS = True PGSQL2SQLITE = True -BINDINGS = 'python' XMLPARSER = 'ptree' SVG2PNG = True SAMPLE_INPUT_PLUGINS = True @@ -134,7 +123,6 @@ function setup_runtime_settings() { function main() { setup_mason install_mason_deps - setup_nose make_config setup_runtime_settings echo "Ready, now run:" diff --git a/localize.sh b/localize.sh index 1db825b48..58287eea7 100755 --- a/localize.sh +++ b/localize.sh @@ -6,7 +6,6 @@ if [ ${UNAME} = 'Darwin' ]; then else export LD_LIBRARY_PATH="${CURRENT_DIR}/src/":${LD_LIBRARY_PATH} fi -export PYTHONPATH="${CURRENT_DIR}/bindings/python/":$PYTHONPATH export MAPNIK_FONT_DIRECTORY="${CURRENT_DIR}/fonts/dejavu-fonts-ttf-2.34/ttf/" export MAPNIK_INPUT_PLUGINS_DIRECTORY="${CURRENT_DIR}/plugins/input/" export PATH="${CURRENT_DIR}/utils/mapnik-config":${PATH} diff --git a/run_tests b/run_tests index 7ae774a35..858a8bf64 100755 --- a/run_tests +++ b/run_tests @@ -3,7 +3,6 @@ failures=0 source ./localize.sh -PYTHON=${PYTHON:-python} echo "*** Running Next Gen C++ tests..." ./tests/cxx/run @@ -15,12 +14,4 @@ echo "*** Running Old C++ tests..." failures=$((failures+$?)) echo -echo "*** Running visual tests..." -$PYTHON tests/visual_tests/test.py -q -failures=$((failures+$?)) - -echo "*** Running python tests..." -$PYTHON tests/run_tests.py -q -failures=$((failures+$?)) - exit $failures diff --git a/tests/python_tests/__init__.py b/tests/python_tests/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/python_tests/agg_rasterizer_integer_overflow_test.py b/tests/python_tests/agg_rasterizer_integer_overflow_test.py deleted file mode 100644 index bfd8128d9..000000000 --- a/tests/python_tests/agg_rasterizer_integer_overflow_test.py +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from nose.tools import eq_ -from utilities import run_all -import mapnik -import json - -# geojson box of the world -geojson = { "type": "Feature", "properties": { }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -17963313.143242701888084, -6300857.11560364998877 ], [ -17963313.143242701888084, 13071343.332991421222687 ], [ 7396658.353099936619401, 13071343.332991421222687 ], [ 7396658.353099936619401, -6300857.11560364998877 ], [ -17963313.143242701888084, -6300857.11560364998877 ] ] ] } } - -def test_that_coordinates_do_not_overflow_and_polygon_is_rendered_memory(): - expected_color = mapnik.Color('white') - projection = '+init=epsg:4326' - ds = mapnik.MemoryDatasource() - context = mapnik.Context() - feat = mapnik.Feature.from_geojson(json.dumps(geojson),context) - ds.add_feature(feat) - s = mapnik.Style() - r = mapnik.Rule() - sym = mapnik.PolygonSymbolizer() - sym.fill = expected_color - r.symbols.append(sym) - s.rules.append(r) - lyr = mapnik.Layer('Layer',projection) - lyr.datasource = ds - lyr.styles.append('style') - m = mapnik.Map(256,256,projection) - m.background_color = mapnik.Color('green') - m.append_style('style',s) - m.layers.append(lyr) - # 17/20864/45265.png - m.zoom_to_box(mapnik.Box2d(-13658379.710221574,6197514.253362091,-13657768.213995293,6198125.749588372)) - # works 15/5216/11316.png - #m.zoom_to_box(mapnik.Box2d(-13658379.710221574,6195679.764683247,-13655933.72531645,6198125.749588372)) - im = mapnik.Image(256,256) - mapnik.render(m,im) - eq_(im.get_pixel(128,128),expected_color.packed()) - -def test_that_coordinates_do_not_overflow_and_polygon_is_rendered_csv(): - expected_color = mapnik.Color('white') - projection = '+init=epsg:4326' - ds = mapnik.MemoryDatasource() - context = mapnik.Context() - feat = mapnik.Feature.from_geojson(json.dumps(geojson),context) - ds.add_feature(feat) - geojson_string = "geojson\n'%s'" % json.dumps(geojson['geometry']) - ds = mapnik.Datasource(**{'type':'csv','inline':geojson_string}) - s = mapnik.Style() - r = mapnik.Rule() - sym = mapnik.PolygonSymbolizer() - sym.fill = expected_color - r.symbols.append(sym) - s.rules.append(r) - lyr = mapnik.Layer('Layer',projection) - lyr.datasource = ds - lyr.styles.append('style') - m = mapnik.Map(256,256,projection) - m.background_color = mapnik.Color('green') - m.append_style('style',s) - m.layers.append(lyr) - # 17/20864/45265.png - m.zoom_to_box(mapnik.Box2d(-13658379.710221574,6197514.253362091,-13657768.213995293,6198125.749588372)) - # works 15/5216/11316.png - #m.zoom_to_box(mapnik.Box2d(-13658379.710221574,6195679.764683247,-13655933.72531645,6198125.749588372)) - im = mapnik.Image(256,256) - mapnik.render(m,im) - eq_(im.get_pixel(128,128),expected_color.packed()) - -if __name__ == "__main__": - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/box2d_test.py b/tests/python_tests/box2d_test.py deleted file mode 100644 index c44100287..000000000 --- a/tests/python_tests/box2d_test.py +++ /dev/null @@ -1,176 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from nose.tools import eq_,assert_true,assert_almost_equal,assert_false -from utilities import run_all -import mapnik - -def test_coord_init(): - c = mapnik.Coord(100, 100) - - eq_(c.x, 100) - eq_(c.y, 100) - -def test_coord_multiplication(): - c = mapnik.Coord(100, 100) - c *= 2 - - eq_(c.x, 200) - eq_(c.y, 200) - -def test_envelope_init(): - e = mapnik.Box2d(100, 100, 200, 200) - - assert_true(e.contains(100, 100)) - assert_true(e.contains(100, 200)) - assert_true(e.contains(200, 200)) - assert_true(e.contains(200, 100)) - - assert_true(e.contains(e.center())) - - assert_false(e.contains(99.9, 99.9)) - assert_false(e.contains(99.9, 200.1)) - assert_false(e.contains(200.1, 200.1)) - assert_false(e.contains(200.1, 99.9)) - - eq_(e.width(), 100) - eq_(e.height(), 100) - - eq_(e.minx, 100) - eq_(e.miny, 100) - - eq_(e.maxx, 200) - eq_(e.maxy, 200) - - eq_(e[0],100) - eq_(e[1],100) - eq_(e[2],200) - eq_(e[3],200) - eq_(e[0],e[-4]) - eq_(e[1],e[-3]) - eq_(e[2],e[-2]) - eq_(e[3],e[-1]) - - c = e.center() - - eq_(c.x, 150) - eq_(c.y, 150) - -def test_envelope_static_init(): - e = mapnik.Box2d.from_string('100 100 200 200') - e2 = mapnik.Box2d.from_string('100,100,200,200') - e3 = mapnik.Box2d.from_string('100 , 100 , 200 , 200') - eq_(e,e2) - eq_(e,e3) - - assert_true(e.contains(100, 100)) - assert_true(e.contains(100, 200)) - assert_true(e.contains(200, 200)) - assert_true(e.contains(200, 100)) - - assert_true(e.contains(e.center())) - - assert_false(e.contains(99.9, 99.9)) - assert_false(e.contains(99.9, 200.1)) - assert_false(e.contains(200.1, 200.1)) - assert_false(e.contains(200.1, 99.9)) - - eq_(e.width(), 100) - eq_(e.height(), 100) - - eq_(e.minx, 100) - eq_(e.miny, 100) - - eq_(e.maxx, 200) - eq_(e.maxy, 200) - - eq_(e[0],100) - eq_(e[1],100) - eq_(e[2],200) - eq_(e[3],200) - eq_(e[0],e[-4]) - eq_(e[1],e[-3]) - eq_(e[2],e[-2]) - eq_(e[3],e[-1]) - - c = e.center() - - eq_(c.x, 150) - eq_(c.y, 150) - -def test_envelope_multiplication(): - # no width then no impact of multiplication - a = mapnik.Box2d(100, 100, 100, 100) - a *= 5 - eq_(a.minx,100) - eq_(a.miny,100) - eq_(a.maxx,100) - eq_(a.maxy,100) - - a = mapnik.Box2d(100.0, 100.0, 100.0, 100.0) - a *= 5 - eq_(a.minx,100) - eq_(a.miny,100) - eq_(a.maxx,100) - eq_(a.maxy,100) - - a = mapnik.Box2d(100.0, 100.0, 100.001, 100.001) - a *= 5 - assert_almost_equal(a.minx, 99.9979, places=3) - assert_almost_equal(a.miny, 99.9979, places=3) - assert_almost_equal(a.maxx, 100.0030, places=3) - assert_almost_equal(a.maxy, 100.0030, places=3) - - e = mapnik.Box2d(100, 100, 200, 200) - e *= 2 - eq_(e.minx,50) - eq_(e.miny,50) - eq_(e.maxx,250) - eq_(e.maxy,250) - - assert_true(e.contains(50, 50)) - assert_true(e.contains(50, 250)) - assert_true(e.contains(250, 250)) - assert_true(e.contains(250, 50)) - - assert_false(e.contains(49.9, 49.9)) - assert_false(e.contains(49.9, 250.1)) - assert_false(e.contains(250.1, 250.1)) - assert_false(e.contains(250.1, 49.9)) - - assert_true(e.contains(e.center())) - - eq_(e.width(), 200) - eq_(e.height(), 200) - - eq_(e.minx, 50) - eq_(e.miny, 50) - - eq_(e.maxx, 250) - eq_(e.maxy, 250) - - c = e.center() - - eq_(c.x, 150) - eq_(c.y, 150) - -def test_envelope_clipping(): - e1 = mapnik.Box2d(-180,-90,180,90) - e2 = mapnik.Box2d(-120,40,-110,48) - e1.clip(e2) - eq_(e1,e2) - - # madagascar in merc - e1 = mapnik.Box2d(4772116.5490, -2744395.0631, 5765186.4203, -1609458.0673) - e2 = mapnik.Box2d(5124338.3753, -2240522.1727, 5207501.8621, -2130452.8520) - e1.clip(e2) - eq_(e1,e2) - - # nz in lon/lat - e1 = mapnik.Box2d(163.8062, -47.1897, 179.3628, -33.9069) - e2 = mapnik.Box2d(173.7378, -39.6395, 174.4849, -38.9252) - e1.clip(e2) - eq_(e1,e2) - -if __name__ == "__main__": - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/buffer_clear_test.py b/tests/python_tests/buffer_clear_test.py deleted file mode 100644 index b4b3bda84..000000000 --- a/tests/python_tests/buffer_clear_test.py +++ /dev/null @@ -1,61 +0,0 @@ -import os, mapnik -from nose.tools import eq_ -from utilities import execution_path, run_all - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_clearing_image_data(): - im = mapnik.Image(256,256) - # make sure it equals itself - bytes = im.tostring() - eq_(im.tostring(),bytes) - # set background, then clear - im.fill(mapnik.Color('green')) - eq_(im.tostring()!=bytes,True) - # clear image, should now equal original - im.clear() - eq_(im.tostring(),bytes) - -def make_map(): - ds = mapnik.MemoryDatasource() - context = mapnik.Context() - context.push('Name') - pixel_key = 1 - f = mapnik.Feature(context,pixel_key) - f['Name'] = str(pixel_key) - f.geometry=mapnik.Geometry.from_wkt('POLYGON ((0 0, 0 256, 256 256, 256 0, 0 0))') - ds.add_feature(f) - s = mapnik.Style() - r = mapnik.Rule() - symb = mapnik.PolygonSymbolizer() - r.symbols.append(symb) - s.rules.append(r) - lyr = mapnik.Layer('Places') - lyr.datasource = ds - lyr.styles.append('places_labels') - width,height = 256,256 - m = mapnik.Map(width,height) - m.append_style('places_labels',s) - m.layers.append(lyr) - m.zoom_all() - return m - -if mapnik.has_grid_renderer(): - def test_clearing_grid_data(): - g = mapnik.Grid(256,256) - utf = g.encode() - # make sure it equals itself - eq_(g.encode(),utf) - m = make_map() - mapnik.render_layer(m,g,layer=0,fields=['__id__','Name']) - eq_(g.encode()!=utf,True) - # clear grid, should now match original - g.clear() - eq_(g.encode(),utf) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/cairo_test.py b/tests/python_tests/cairo_test.py deleted file mode 100644 index 3c626d4a6..000000000 --- a/tests/python_tests/cairo_test.py +++ /dev/null @@ -1,196 +0,0 @@ -#!/usr/bin/env python - -import os -import shutil -import mapnik -from nose.tools import eq_ -from utilities import execution_path, run_all - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def make_tmp_map(): - m = mapnik.Map(512,512) - m.background_color = mapnik.Color('steelblue') - ds = mapnik.MemoryDatasource() - context = mapnik.Context() - context.push('Name') - f = mapnik.Feature(context,1) - f['Name'] = 'Hello' - f.geometry = mapnik.Geometry.from_wkt('POINT (0 0)') - ds.add_feature(f) - s = mapnik.Style() - r = mapnik.Rule() - sym = mapnik.MarkersSymbolizer() - sym.allow_overlap = True - r.symbols.append(sym) - s.rules.append(r) - lyr = mapnik.Layer('Layer') - lyr.datasource = ds - lyr.styles.append('style') - m.append_style('style',s) - m.layers.append(lyr) - return m - -def draw_title(m,ctx,text,size=10,color=mapnik.Color('black')): - """ Draw a Map Title near the top of a page.""" - middle = m.width/2.0 - ctx.set_source_rgba(*cairo_color(color)) - ctx.select_font_face("DejaVu Sans Book", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL) - ctx.set_font_size(size) - x_bearing, y_bearing, width, height = ctx.text_extents(text)[:4] - ctx.move_to(middle - width / 2 - x_bearing, 20.0 - height / 2 - y_bearing) - ctx.show_text(text) - -def draw_neatline(m,ctx): - w,h = m.width, m.height - ctx.set_source_rgba(*cairo_color(mapnik.Color('black'))) - outline = [ - [0,0],[w,0],[w,h],[0,h] - ] - ctx.set_line_width(1) - for idx,pt in enumerate(outline): - if (idx == 0): - ctx.move_to(*pt) - else: - ctx.line_to(*pt) - ctx.close_path() - inset = 6 - inline = [ - [inset,inset],[w-inset,inset],[w-inset,h-inset],[inset,h-inset] - ] - ctx.set_line_width(inset/2) - for idx,pt in enumerate(inline): - if (idx == 0): - ctx.move_to(*pt) - else: - ctx.line_to(*pt) - ctx.close_path() - ctx.stroke() - -def cairo_color(c): - """ Return a Cairo color tuple from a Mapnik Color.""" - ctx_c = (c.r/255.0,c.g/255.0,c.b/255.0,c.a/255.0) - return ctx_c - -if mapnik.has_pycairo(): - import cairo - - def test_passing_pycairo_context_svg(): - m = make_tmp_map() - m.zoom_to_box(mapnik.Box2d(-180,-90,180,90)) - test_cairo_file = '/tmp/mapnik-cairo-context-test.svg' - surface = cairo.SVGSurface(test_cairo_file, m.width, m.height) - expected_cairo_file = './images/pycairo/cairo-cairo-expected.svg' - context = cairo.Context(surface) - mapnik.render(m,context) - draw_title(m,context,"Hello Map",size=20) - draw_neatline(m,context) - surface.finish() - if not os.path.exists(expected_cairo_file) or os.environ.get('UPDATE'): - print 'generated expected cairo surface file %s' % expected_cairo_file - shutil.copy(test_cairo_file,expected_cairo_file) - diff = abs(os.stat(expected_cairo_file).st_size-os.stat(test_cairo_file).st_size) - msg = 'diff in size (%s) between actual (%s) and expected(%s)' % (diff,test_cairo_file,'tests/python_tests/'+ expected_cairo_file) - eq_( diff < 1500, True, msg) - os.remove(test_cairo_file) - - def test_passing_pycairo_context_pdf(): - m = make_tmp_map() - m.zoom_to_box(mapnik.Box2d(-180,-90,180,90)) - test_cairo_file = '/tmp/mapnik-cairo-context-test.pdf' - surface = cairo.PDFSurface(test_cairo_file, m.width, m.height) - expected_cairo_file = './images/pycairo/cairo-cairo-expected.pdf' - context = cairo.Context(surface) - mapnik.render(m,context) - draw_title(m,context,"Hello Map",size=20) - draw_neatline(m,context) - surface.finish() - if not os.path.exists(expected_cairo_file) or os.environ.get('UPDATE'): - print 'generated expected cairo surface file %s' % expected_cairo_file - shutil.copy(test_cairo_file,expected_cairo_file) - diff = abs(os.stat(expected_cairo_file).st_size-os.stat(test_cairo_file).st_size) - msg = 'diff in size (%s) between actual (%s) and expected(%s)' % (diff,test_cairo_file,'tests/python_tests/'+ expected_cairo_file) - eq_( diff < 1500, True, msg) - os.remove(test_cairo_file) - - def test_passing_pycairo_context_png(): - m = make_tmp_map() - m.zoom_to_box(mapnik.Box2d(-180,-90,180,90)) - test_cairo_file = '/tmp/mapnik-cairo-context-test.png' - surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, m.width, m.height) - expected_cairo_file = './images/pycairo/cairo-cairo-expected.png' - expected_cairo_file2 = './images/pycairo/cairo-cairo-expected-reduced.png' - context = cairo.Context(surface) - mapnik.render(m,context) - draw_title(m,context,"Hello Map",size=20) - draw_neatline(m,context) - surface.write_to_png(test_cairo_file) - reduced_color_image = test_cairo_file.replace('png','-mapnik.png') - im = mapnik.Image.from_cairo(surface) - im.save(reduced_color_image,'png8') - surface.finish() - if not os.path.exists(expected_cairo_file) or os.environ.get('UPDATE'): - print 'generated expected cairo surface file %s' % expected_cairo_file - shutil.copy(test_cairo_file,expected_cairo_file) - diff = abs(os.stat(expected_cairo_file).st_size-os.stat(test_cairo_file).st_size) - msg = 'diff in size (%s) between actual (%s) and expected(%s)' % (diff,test_cairo_file,'tests/python_tests/'+ expected_cairo_file) - eq_( diff < 500, True, msg) - os.remove(test_cairo_file) - if not os.path.exists(expected_cairo_file2) or os.environ.get('UPDATE'): - print 'generated expected cairo surface file %s' % expected_cairo_file2 - shutil.copy(reduced_color_image,expected_cairo_file2) - diff = abs(os.stat(expected_cairo_file2).st_size-os.stat(reduced_color_image).st_size) - msg = 'diff in size (%s) between actual (%s) and expected(%s)' % (diff,reduced_color_image,'tests/python_tests/'+ expected_cairo_file2) - eq_( diff < 500, True, msg) - os.remove(reduced_color_image) - - if 'sqlite' in mapnik.DatasourceCache.plugin_names(): - def _pycairo_surface(type,sym): - test_cairo_file = '/tmp/mapnik-cairo-surface-test.%s.%s' % (sym,type) - expected_cairo_file = './images/pycairo/cairo-surface-expected.%s.%s' % (sym,type) - m = mapnik.Map(256,256) - mapnik.load_map(m,'../data/good_maps/%s_symbolizer.xml' % sym) - m.zoom_all() - if hasattr(cairo,'%sSurface' % type.upper()): - surface = getattr(cairo,'%sSurface' % type.upper())(test_cairo_file, m.width,m.height) - mapnik.render(m, surface) - surface.finish() - if not os.path.exists(expected_cairo_file) or os.environ.get('UPDATE'): - print 'generated expected cairo surface file %s' % expected_cairo_file - shutil.copy(test_cairo_file,expected_cairo_file) - diff = abs(os.stat(expected_cairo_file).st_size-os.stat(test_cairo_file).st_size) - msg = 'diff in size (%s) between actual (%s) and expected(%s)' % (diff,test_cairo_file,'tests/python_tests/'+ expected_cairo_file) - if os.uname()[0] == 'Darwin': - eq_( diff < 2100, True, msg) - else: - eq_( diff < 23000, True, msg) - os.remove(test_cairo_file) - return True - else: - print 'skipping cairo.%s test since surface is not available' % type.upper() - return True - - def test_pycairo_svg_surface1(): - eq_(_pycairo_surface('svg','point'),True) - - def test_pycairo_svg_surface2(): - eq_(_pycairo_surface('svg','building'),True) - - def test_pycairo_svg_surface3(): - eq_(_pycairo_surface('svg','polygon'),True) - - def test_pycairo_pdf_surface1(): - eq_(_pycairo_surface('pdf','point'),True) - - def test_pycairo_pdf_surface2(): - eq_(_pycairo_surface('pdf','building'),True) - - def test_pycairo_pdf_surface3(): - eq_(_pycairo_surface('pdf','polygon'),True) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/color_test.py b/tests/python_tests/color_test.py deleted file mode 100644 index 900faf11b..000000000 --- a/tests/python_tests/color_test.py +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import sys -import os, mapnik -from timeit import Timer, time -from nose.tools import * -from utilities import execution_path, run_all, get_unique_colors - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_color_init(): - c = mapnik.Color(12, 128, 255) - eq_(c.r, 12) - eq_(c.g, 128) - eq_(c.b, 255) - eq_(c.a, 255) - eq_(False, c.get_premultiplied()) - c = mapnik.Color(16, 32, 64, 128) - eq_(c.r, 16) - eq_(c.g, 32) - eq_(c.b, 64) - eq_(c.a, 128) - eq_(False, c.get_premultiplied()) - c = mapnik.Color(16, 32, 64, 128,True) - eq_(c.r, 16) - eq_(c.g, 32) - eq_(c.b, 64) - eq_(c.a, 128) - eq_(True, c.get_premultiplied()) - c = mapnik.Color('rgba(16,32,64,0.5)') - eq_(c.r, 16) - eq_(c.g, 32) - eq_(c.b, 64) - eq_(c.a, 128) - eq_(False, c.get_premultiplied()) - c = mapnik.Color('rgba(16,32,64,0.5)', True) - eq_(c.r, 16) - eq_(c.g, 32) - eq_(c.b, 64) - eq_(c.a, 128) - eq_(True, c.get_premultiplied()) - hex_str = '#10204080' - c = mapnik.Color(hex_str) - eq_(c.r, 16) - eq_(c.g, 32) - eq_(c.b, 64) - eq_(c.a, 128) - eq_(hex_str, c.to_hex_string()) - eq_(False, c.get_premultiplied()) - c = mapnik.Color(hex_str, True) - eq_(c.r, 16) - eq_(c.g, 32) - eq_(c.b, 64) - eq_(c.a, 128) - eq_(hex_str, c.to_hex_string()) - eq_(True, c.get_premultiplied()) - rgba_int = 2151686160 - c = mapnik.Color(rgba_int) - eq_(c.r, 16) - eq_(c.g, 32) - eq_(c.b, 64) - eq_(c.a, 128) - eq_(rgba_int, c.packed()) - eq_(False, c.get_premultiplied()) - c = mapnik.Color(rgba_int, True) - eq_(c.r, 16) - eq_(c.g, 32) - eq_(c.b, 64) - eq_(c.a, 128) - eq_(rgba_int, c.packed()) - eq_(True, c.get_premultiplied()) - -def test_color_properties(): - c = mapnik.Color(16, 32, 64, 128) - eq_(c.r, 16) - eq_(c.g, 32) - eq_(c.b, 64) - eq_(c.a, 128) - c.r = 17 - eq_(c.r, 17) - c.g = 33 - eq_(c.g, 33) - c.b = 65 - eq_(c.b, 65) - c.a = 128 - eq_(c.a, 128) - -def test_color_premultiply(): - c = mapnik.Color(16, 33, 255, 128) - eq_(c.premultiply(), True) - eq_(c.r, 8) - eq_(c.g, 17) - eq_(c.b, 128) - eq_(c.a, 128) - # Repeating it again should do nothing - eq_(c.premultiply(), False) - eq_(c.r, 8) - eq_(c.g, 17) - eq_(c.b, 128) - eq_(c.a, 128) - c.demultiply() - c.demultiply() - # This will not return the same values as before but we expect that - eq_(c.r,15) - eq_(c.g,33) - eq_(c.b,255) - eq_(c.a,128) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/compare_test.py b/tests/python_tests/compare_test.py deleted file mode 100644 index f4b656309..000000000 --- a/tests/python_tests/compare_test.py +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import os, mapnik -from nose.tools import * -from utilities import execution_path, run_all - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_another_compare(): - im = mapnik.Image(5,5) - im2 = mapnik.Image(5,5) - im2.fill(mapnik.Color('rgba(255,255,255,0)')) - eq_(im.compare(im2,16), im.width() * im.height()) - -def test_compare_rgba8(): - im = mapnik.Image(5,5,mapnik.ImageType.rgba8) - im.fill(mapnik.Color(0,0,0,0)) - eq_(im.compare(im), 0) - im2 = mapnik.Image(5,5,mapnik.ImageType.rgba8) - im2.fill(mapnik.Color(0,0,0,0)) - eq_(im.compare(im2), 0) - eq_(im2.compare(im), 0) - im2.fill(mapnik.Color(0,0,0,12)) - eq_(im.compare(im2), 25) - eq_(im.compare(im2, 0, False), 0) - im3 = mapnik.Image(5,5,mapnik.ImageType.rgba8) - im3.set_pixel(0,0, mapnik.Color(0,0,0,0)) - im3.set_pixel(0,1, mapnik.Color(1,1,1,1)) - im3.set_pixel(1,0, mapnik.Color(2,2,2,2)) - im3.set_pixel(1,1, mapnik.Color(3,3,3,3)) - eq_(im.compare(im3), 3) - eq_(im.compare(im3,1),2) - eq_(im.compare(im3,2),1) - eq_(im.compare(im3,3),0) - -def test_compare_2_image(): - im = mapnik.Image(5,5) - im.set_pixel(0,0, mapnik.Color(254, 254, 254, 254)) - im.set_pixel(4,4, mapnik.Color('white')) - im2 = mapnik.Image(5,5) - eq_(im2.compare(im,16), 2) - -def test_compare_dimensions(): - im = mapnik.Image(2,2) - im2 = mapnik.Image(3,3) - eq_(im.compare(im2), 4) - eq_(im2.compare(im), 9) - -def test_compare_gray8(): - im = mapnik.Image(2,2,mapnik.ImageType.gray8) - im.fill(0) - eq_(im.compare(im), 0) - im2 = mapnik.Image(2,2,mapnik.ImageType.gray8) - im2.fill(0) - eq_(im.compare(im2), 0) - eq_(im2.compare(im), 0) - eq_(im.compare(im2, 0, False), 0) - im3 = mapnik.Image(2,2,mapnik.ImageType.gray8) - im3.set_pixel(0,0,0) - im3.set_pixel(0,1,1) - im3.set_pixel(1,0,2) - im3.set_pixel(1,1,3) - eq_(im.compare(im3),3) - eq_(im.compare(im3,1),2) - eq_(im.compare(im3,2),1) - eq_(im.compare(im3,3),0) - -def test_compare_gray16(): - im = mapnik.Image(2,2,mapnik.ImageType.gray16) - im.fill(0) - eq_(im.compare(im), 0) - im2 = mapnik.Image(2,2,mapnik.ImageType.gray16) - im2.fill(0) - eq_(im.compare(im2), 0) - eq_(im2.compare(im), 0) - eq_(im.compare(im2, 0, False), 0) - im3 = mapnik.Image(2,2,mapnik.ImageType.gray16) - im3.set_pixel(0,0,0) - im3.set_pixel(0,1,1) - im3.set_pixel(1,0,2) - im3.set_pixel(1,1,3) - eq_(im.compare(im3),3) - eq_(im.compare(im3,1),2) - eq_(im.compare(im3,2),1) - eq_(im.compare(im3,3),0) - -def test_compare_gray32f(): - im = mapnik.Image(2,2,mapnik.ImageType.gray32f) - im.fill(0.5) - eq_(im.compare(im), 0) - im2 = mapnik.Image(2,2,mapnik.ImageType.gray32f) - im2.fill(0.5) - eq_(im.compare(im2), 0) - eq_(im2.compare(im), 0) - eq_(im.compare(im2, 0, False), 0) - im3 = mapnik.Image(2,2,mapnik.ImageType.gray32f) - im3.set_pixel(0,0,0.5) - im3.set_pixel(0,1,1.5) - im3.set_pixel(1,0,2.5) - im3.set_pixel(1,1,3.5) - eq_(im.compare(im3),3) - eq_(im.compare(im3,1.0),2) - eq_(im.compare(im3,2.0),1) - eq_(im.compare(im3,3.0),0) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/compositing_test.py b/tests/python_tests/compositing_test.py deleted file mode 100644 index 08bd3c708..000000000 --- a/tests/python_tests/compositing_test.py +++ /dev/null @@ -1,258 +0,0 @@ -#encoding: utf8 - -from nose.tools import eq_ -import os -from utilities import execution_path, run_all -from utilities import get_unique_colors, pixel2channels, side_by_side_image -import mapnik - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def is_pre(color,alpha): - return (color*255.0/alpha) <= 255 - -def debug_image(image,step=2): - for x in range(0,image.width(),step): - for y in range(0,image.height(),step): - pixel = image.get_pixel(x,y) - red,green,blue,alpha = pixel2channels(pixel) - print "rgba(%s,%s,%s,%s) at %s,%s" % (red,green,blue,alpha,x,y) - -def replace_style(m, name, style): - m.remove_style(name) - m.append_style(name, style) - -# note: it is impossible to know for all pixel colors -# we can only detect likely cases of non premultiplied colors -def validate_pixels_are_not_premultiplied(image): - over_alpha = False - transparent = True - fully_opaque = True - for x in range(0,image.width(),2): - for y in range(0,image.height(),2): - pixel = image.get_pixel(x,y) - red,green,blue,alpha = pixel2channels(pixel) - if alpha > 0: - transparent = False - if alpha < 255: - fully_opaque = False - color_max = max(red,green,blue) - if color_max > alpha: - over_alpha = True - return over_alpha or transparent or fully_opaque - -def validate_pixels_are_not_premultiplied2(image): - looks_not_multiplied = False - for x in range(0,image.width(),2): - for y in range(0,image.height(),2): - pixel = image.get_pixel(x,y) - red,green,blue,alpha = pixel2channels(pixel) - #each value of the color channels will never be bigger than that of the alpha channel. - if alpha > 0: - if red > 0 and red > alpha: - print 'red: %s, a: %s' % (red,alpha) - looks_not_multiplied = True - return looks_not_multiplied - -def validate_pixels_are_premultiplied(image): - bad_pixels = [] - for x in range(0,image.width(),2): - for y in range(0,image.height(),2): - pixel = image.get_pixel(x,y) - red,green,blue,alpha = pixel2channels(pixel) - if alpha > 0: - pixel = image.get_pixel(x,y) - is_valid = ((0 <= red <= alpha) and is_pre(red,alpha)) \ - and ((0 <= green <= alpha) and is_pre(green,alpha)) \ - and ((0 <= blue <= alpha) and is_pre(blue,alpha)) \ - and (alpha >= 0 and alpha <= 255) - if not is_valid: - bad_pixels.append("rgba(%s,%s,%s,%s) at %s,%s" % (red,green,blue,alpha,x,y)) - num_bad = len(bad_pixels) - return (num_bad == 0,bad_pixels) - -def test_compare_images(): - b = mapnik.Image.open('./images/support/b.png') - b.premultiply() - num_ops = len(mapnik.CompositeOp.names) - successes = [] - fails = [] - for name in mapnik.CompositeOp.names: - a = mapnik.Image.open('./images/support/a.png') - a.premultiply() - a.composite(b,getattr(mapnik.CompositeOp,name)) - actual = '/tmp/mapnik-comp-op-test-' + name + '.png' - expected = 'images/composited/' + name + '.png' - valid = validate_pixels_are_premultiplied(a) - if not valid[0]: - fails.append('%s not validly premultiplied!:\n\t %s pixels (%s)' % (name,len(valid[1]),valid[1][0])) - a.demultiply() - if not validate_pixels_are_not_premultiplied(a): - fails.append('%s not validly demultiplied' % (name)) - a.save(actual,'png32') - if not os.path.exists(expected) or os.environ.get('UPDATE'): - print 'generating expected test image: %s' % expected - a.save(expected,'png32') - expected_im = mapnik.Image.open(expected) - # compare them - if a.tostring('png32') == expected_im.tostring('png32'): - successes.append(name) - else: - fails.append('failed comparing actual (%s) and expected(%s)' % (actual,'tests/python_tests/'+ expected)) - fail_im = side_by_side_image(expected_im, a) - fail_im.save('/tmp/mapnik-comp-op-test-' + name + '.fail.png','png32') - eq_(len(successes),num_ops,'\n'+'\n'.join(fails)) - b.demultiply() - # b will be slightly modified by pre and then de multiplication rounding errors - # TODO - write test to ensure the image is 99% the same. - #expected_b = mapnik.Image.open('./images/support/b.png') - #b.save('/tmp/mapnik-comp-op-test-original-mask.png') - #eq_(b.tostring('png32'),expected_b.tostring('png32'), '/tmp/mapnik-comp-op-test-original-mask.png is no longer equivalent to original mask: ./images/support/b.png') - -def test_pre_multiply_status(): - b = mapnik.Image.open('./images/support/b.png') - # not premultiplied yet, should appear that way - result = validate_pixels_are_not_premultiplied(b) - eq_(result,True) - # not yet premultiplied therefore should return false - result = validate_pixels_are_premultiplied(b) - eq_(result[0],False) - # now actually premultiply the pixels - b.premultiply() - # now checking if premultiplied should succeed - result = validate_pixels_are_premultiplied(b) - eq_(result[0],True) - # should now not appear to look not premultiplied - result = validate_pixels_are_not_premultiplied(b) - eq_(result,False) - # now actually demultiply the pixels - b.demultiply() - # should now appear demultiplied - result = validate_pixels_are_not_premultiplied(b) - eq_(result,True) - -def test_pre_multiply_status_of_map1(): - m = mapnik.Map(256,256) - im = mapnik.Image(m.width,m.height) - eq_(validate_pixels_are_not_premultiplied(im),True) - mapnik.render(m,im) - eq_(validate_pixels_are_not_premultiplied(im),True) - -def test_pre_multiply_status_of_map2(): - m = mapnik.Map(256,256) - m.background = mapnik.Color(1,1,1,255) - im = mapnik.Image(m.width,m.height) - eq_(validate_pixels_are_not_premultiplied(im),True) - mapnik.render(m,im) - eq_(validate_pixels_are_not_premultiplied(im),True) - -if 'shape' in mapnik.DatasourceCache.plugin_names(): - def test_style_level_comp_op(): - m = mapnik.Map(256, 256) - mapnik.load_map(m, '../data/good_maps/style_level_comp_op.xml') - m.zoom_all() - successes = [] - fails = [] - for name in mapnik.CompositeOp.names: - # find_style returns a copy of the style object - style_markers = m.find_style("markers") - style_markers.comp_op = getattr(mapnik.CompositeOp, name) - # replace the original style with the modified one - replace_style(m, "markers", style_markers) - im = mapnik.Image(m.width, m.height) - mapnik.render(m, im) - actual = '/tmp/mapnik-style-comp-op-' + name + '.png' - expected = 'images/style-comp-op/' + name + '.png' - im.save(actual,'png32') - if not os.path.exists(expected) or os.environ.get('UPDATE'): - print 'generating expected test image: %s' % expected - im.save(expected,'png32') - expected_im = mapnik.Image.open(expected) - # compare them - if im.tostring('png32') == expected_im.tostring('png32'): - successes.append(name) - else: - fails.append('failed comparing actual (%s) and expected(%s)' % (actual,'tests/python_tests/'+ expected)) - fail_im = side_by_side_image(expected_im, im) - fail_im.save('/tmp/mapnik-style-comp-op-' + name + '.fail.png','png32') - eq_(len(fails), 0, '\n'+'\n'.join(fails)) - - def test_style_level_opacity(): - m = mapnik.Map(512,512) - mapnik.load_map(m,'../data/good_maps/style_level_opacity_and_blur.xml') - m.zoom_all() - im = mapnik.Image(512,512) - mapnik.render(m,im) - actual = '/tmp/mapnik-style-level-opacity.png' - expected = 'images/support/mapnik-style-level-opacity.png' - im.save(actual,'png32') - expected_im = mapnik.Image.open(expected) - eq_(im.tostring('png32'),expected_im.tostring('png32'), 'failed comparing actual (%s) and expected (%s)' % (actual,'tests/python_tests/'+ expected)) - -def test_rounding_and_color_expectations(): - m = mapnik.Map(1,1) - m.background = mapnik.Color('rgba(255,255,255,.4999999)') - im = mapnik.Image(m.width,m.height) - mapnik.render(m,im) - eq_(get_unique_colors(im),['rgba(255,255,255,127)']) - m = mapnik.Map(1,1) - m.background = mapnik.Color('rgba(255,255,255,.5)') - im = mapnik.Image(m.width,m.height) - mapnik.render(m,im) - eq_(get_unique_colors(im),['rgba(255,255,255,128)']) - im_file = mapnik.Image.open('../data/images/stripes_pattern.png') - eq_(get_unique_colors(im_file),['rgba(0,0,0,0)', 'rgba(74,74,74,255)']) - # should have no effect - im_file.premultiply() - eq_(get_unique_colors(im_file),['rgba(0,0,0,0)', 'rgba(74,74,74,255)']) - im_file.set_alpha(.5) - # should have effect now that image has transparency - im_file.premultiply() - eq_(get_unique_colors(im_file),['rgba(0,0,0,0)', 'rgba(37,37,37,127)']) - # should restore to original nonpremultiplied colors - im_file.demultiply() - eq_(get_unique_colors(im_file),['rgba(0,0,0,0)', 'rgba(74,74,74,127)']) - - -def test_background_image_and_background_color(): - m = mapnik.Map(8,8) - m.background = mapnik.Color('rgba(255,255,255,.5)') - m.background_image = '../data/images/stripes_pattern.png' - im = mapnik.Image(m.width,m.height) - mapnik.render(m,im) - eq_(get_unique_colors(im),['rgba(255,255,255,128)', 'rgba(74,74,74,255)']) - -def test_background_image_with_alpha_and_background_color(): - m = mapnik.Map(10,10) - m.background = mapnik.Color('rgba(255,255,255,.5)') - m.background_image = '../data/images/yellow_half_trans.png' - im = mapnik.Image(m.width,m.height) - mapnik.render(m,im) - eq_(get_unique_colors(im),['rgba(255,255,85,191)']) - -def test_background_image_with_alpha_and_background_color_against_composited_control(): - m = mapnik.Map(10,10) - m.background = mapnik.Color('rgba(255,255,255,.5)') - m.background_image = '../data/images/yellow_half_trans.png' - im = mapnik.Image(m.width,m.height) - mapnik.render(m,im) - # create and composite the expected result - im1 = mapnik.Image(10,10) - im1.fill(mapnik.Color('rgba(255,255,255,.5)')) - im1.premultiply() - im2 = mapnik.Image(10,10) - im2.fill(mapnik.Color('rgba(255,255,0,.5)')) - im2.premultiply() - im1.composite(im2) - im1.demultiply() - # compare image rendered (compositing in `agg_renderer::setup`) - # vs image composited via python bindings - #raise Todo("looks like we need to investigate PNG color rounding when saving") - #eq_(get_unique_colors(im),get_unique_colors(im1)) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/copy_test.py b/tests/python_tests/copy_test.py deleted file mode 100644 index d3cf9b15c..000000000 --- a/tests/python_tests/copy_test.py +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import os, mapnik -from nose.tools import * -from utilities import execution_path, run_all - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_image_16_8_simple(): - im = mapnik.Image(2,2,mapnik.ImageType.gray16) - im.set_pixel(0,0, 256) - im.set_pixel(0,1, 999) - im.set_pixel(1,0, 5) - im.set_pixel(1,1, 2) - im2 = im.copy(mapnik.ImageType.gray8) - eq_(im2.get_pixel(0,0), 255) - eq_(im2.get_pixel(0,1), 255) - eq_(im2.get_pixel(1,0), 5) - eq_(im2.get_pixel(1,1), 2) - # Cast back! - im = im2.copy(mapnik.ImageType.gray16) - eq_(im.get_pixel(0,0), 255) - eq_(im.get_pixel(0,1), 255) - eq_(im.get_pixel(1,0), 5) - eq_(im.get_pixel(1,1), 2) - -def test_image_32f_8_simple(): - im = mapnik.Image(2,2,mapnik.ImageType.gray32f) - im.set_pixel(0,0, 120.1234) - im.set_pixel(0,1, -23.4) - im.set_pixel(1,0, 120.6) - im.set_pixel(1,1, 360.2) - im2 = im.copy(mapnik.ImageType.gray8) - eq_(im2.get_pixel(0,0), 120) - eq_(im2.get_pixel(0,1), 0) - eq_(im2.get_pixel(1,0), 120) # Notice this is truncated! - eq_(im2.get_pixel(1,1), 255) - -def test_image_offset_and_scale(): - im = mapnik.Image(2,2,mapnik.ImageType.gray16) - eq_(im.offset, 0.0) - eq_(im.scaling, 1.0) - im.offset = 1.0 - im.scaling = 2.0 - eq_(im.offset, 1.0) - eq_(im.scaling, 2.0) - -def test_image_16_8_scale_and_offset(): - im = mapnik.Image(2,2,mapnik.ImageType.gray16) - im.set_pixel(0,0, 256) - im.set_pixel(0,1, 258) - im.set_pixel(1,0, 99999) - im.set_pixel(1,1, 615) - offset = 255 - scaling = 3 - im2 = im.copy(mapnik.ImageType.gray8, offset, scaling) - eq_(im2.get_pixel(0,0), 0) - eq_(im2.get_pixel(0,1), 1) - eq_(im2.get_pixel(1,0), 255) - eq_(im2.get_pixel(1,1), 120) - # pixels will be a little off due to offsets in reverting! - im3 = im2.copy(mapnik.ImageType.gray16) - eq_(im3.get_pixel(0,0), 255) # Rounding error with ints - eq_(im3.get_pixel(0,1), 258) # same - eq_(im3.get_pixel(1,0), 1020) # The other one was way out of range for our scale/offset - eq_(im3.get_pixel(1,1), 615) # same - -def test_image_16_32f_scale_and_offset(): - im = mapnik.Image(2,2,mapnik.ImageType.gray16) - im.set_pixel(0,0, 256) - im.set_pixel(0,1, 258) - im.set_pixel(1,0, 0) - im.set_pixel(1,1, 615) - offset = 255 - scaling = 3.2 - im2 = im.copy(mapnik.ImageType.gray32f, offset, scaling) - eq_(im2.get_pixel(0,0), 0.3125) - eq_(im2.get_pixel(0,1), 0.9375) - eq_(im2.get_pixel(1,0), -79.6875) - eq_(im2.get_pixel(1,1), 112.5) - im3 = im2.copy(mapnik.ImageType.gray16) - eq_(im3.get_pixel(0,0), 256) - eq_(im3.get_pixel(0,1), 258) - eq_(im3.get_pixel(1,0), 0) - eq_(im3.get_pixel(1,1), 615) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/csv_test.py b/tests/python_tests/csv_test.py deleted file mode 100644 index f706a2294..000000000 --- a/tests/python_tests/csv_test.py +++ /dev/null @@ -1,605 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import glob -from nose.tools import eq_,raises -from utilities import execution_path - -import os, mapnik - -default_logging_severity = mapnik.logger.get_severity() - -def setup(): - # make the tests silent since we intentially test error conditions that are noisy - mapnik.logger.set_severity(mapnik.severity_type.None) - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def teardown(): - mapnik.logger.set_severity(default_logging_severity) - -if 'csv' in mapnik.DatasourceCache.plugin_names(): - - def get_csv_ds(filename): - return mapnik.Datasource(type='csv',file=os.path.join('../data/csv/',filename)) - - def test_broken_files(visual=False): - broken = glob.glob("../data/csv/fails/*.*") - broken.extend(glob.glob("../data/csv/warns/*.*")) - - # Add a filename that doesn't exist - broken.append("../data/csv/fails/does_not_exist.csv") - - for csv in broken: - if visual: - try: - mapnik.Datasource(type='csv',file=csv,strict=True) - print '\x1b[33mfailed: should have thrown\x1b[0m',csv - except Exception: - print '\x1b[1;32m✓ \x1b[0m', csv - - def test_good_files(visual=False): - good_files = glob.glob("../data/csv/*.*") - good_files.extend(glob.glob("../data/csv/warns/*.*")) - ignorable = os.path.join('..','data','csv','long_lat.vrt') - good_files.remove(ignorable) - - for csv in good_files: - if visual: - try: - mapnik.Datasource(type='csv',file=csv) - print '\x1b[1;32m✓ \x1b[0m', csv - except Exception, e: - print '\x1b[33mfailed: should not have thrown\x1b[0m',csv,str(e) - - def test_lon_lat_detection(**kwargs): - ds = get_csv_ds('lon_lat.csv') - eq_(len(ds.fields()),2) - eq_(ds.fields(),['lon','lat']) - eq_(ds.field_types(),['int','int']) - query = mapnik.Query(ds.envelope()) - for fld in ds.fields(): - query.add_property_name(fld) - fs = ds.features(query) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - feat = fs.next() - attr = {'lon': 0, 'lat': 0} - eq_(feat.attributes,attr) - - def test_lng_lat_detection(**kwargs): - ds = get_csv_ds('lng_lat.csv') - eq_(len(ds.fields()),2) - eq_(ds.fields(),['lng','lat']) - eq_(ds.field_types(),['int','int']) - query = mapnik.Query(ds.envelope()) - for fld in ds.fields(): - query.add_property_name(fld) - fs = ds.features(query) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - feat = fs.next() - attr = {'lng': 0, 'lat': 0} - eq_(feat.attributes,attr) - - def test_type_detection(**kwargs): - ds = get_csv_ds('nypd.csv') - eq_(ds.fields(),['Precinct','Phone','Address','City','geo_longitude','geo_latitude','geo_accuracy']) - eq_(ds.field_types(),['str','str','str','str','float','float','str']) - feat = ds.featureset().next() - attr = {'City': u'New York, NY', 'geo_accuracy': u'house', 'Phone': u'(212) 334-0711', 'Address': u'19 Elizabeth Street', 'Precinct': u'5th Precinct', 'geo_longitude': -70, 'geo_latitude': 40} - eq_(feat.attributes,attr) - eq_(len(ds.all_features()),2) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(desc['name'],'csv') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - - def test_skipping_blank_rows(**kwargs): - ds = get_csv_ds('blank_rows.csv') - eq_(ds.fields(),['x','y','name']) - eq_(ds.field_types(),['int','int','str']) - eq_(len(ds.all_features()),2) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(desc['name'],'csv') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - - def test_empty_rows(**kwargs): - ds = get_csv_ds('empty_rows.csv') - eq_(len(ds.fields()),10) - eq_(len(ds.field_types()),10) - eq_(ds.fields(),['x', 'y', 'text', 'date', 'integer', 'boolean', 'float', 'time', 'datetime', 'empty_column']) - eq_(ds.field_types(),['int', 'int', 'str', 'str', 'int', 'bool', 'float', 'str', 'str', 'str']) - fs = ds.featureset() - attr = {'x': 0, 'empty_column': u'', 'text': u'a b', 'float': 1.0, 'datetime': u'1971-01-01T04:14:00', 'y': 0, 'boolean': True, 'time': u'04:14:00', 'date': u'1971-01-01', 'integer': 40} - first = True - for feat in fs: - if first: - first=False - eq_(feat.attributes,attr) - eq_(len(feat),10) - eq_(feat['empty_column'],u'') - - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(desc['name'],'csv') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - - def test_slashes(**kwargs): - ds = get_csv_ds('has_attributes_with_slashes.csv') - eq_(len(ds.fields()),3) - fs = ds.all_features() - eq_(fs[0].attributes,{'x':0,'y':0,'name':u'a/a'}) - eq_(fs[1].attributes,{'x':1,'y':4,'name':u'b/b'}) - eq_(fs[2].attributes,{'x':10,'y':2.5,'name':u'c/c'}) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(desc['name'],'csv') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - - def test_wkt_field(**kwargs): - ds = get_csv_ds('wkt.csv') - eq_(len(ds.fields()),1) - eq_(ds.fields(),['type']) - eq_(ds.field_types(),['str']) - fs = ds.all_features() - #eq_(len(fs[0].geometries()),1) - eq_(fs[0].geometry.type(),mapnik.GeometryType.Point) - #eq_(len(fs[1].geometries()),1) - eq_(fs[1].geometry.type(),mapnik.GeometryType.LineString) - #eq_(len(fs[2].geometries()),1) - eq_(fs[2].geometry.type(),mapnik.GeometryType.Polygon) - #eq_(len(fs[3].geometries()),1) # one geometry, two parts - eq_(fs[3].geometry.type(),mapnik.GeometryType.Polygon) - #eq_(len(fs[4].geometries()),4) - eq_(fs[4].geometry.type(),mapnik.GeometryType.MultiPoint) - #eq_(len(fs[5].geometries()),2) - eq_(fs[5].geometry.type(),mapnik.GeometryType.MultiLineString) - #eq_(len(fs[6].geometries()),2) - eq_(fs[6].geometry.type(),mapnik.GeometryType.MultiPolygon) - #eq_(len(fs[7].geometries()),2) - eq_(fs[7].geometry.type(),mapnik.GeometryType.MultiPolygon) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Collection) - eq_(desc['name'],'csv') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - - def test_handling_of_missing_header(**kwargs): - ds = get_csv_ds('missing_header.csv') - eq_(len(ds.fields()),6) - eq_(ds.fields(),['one','two','x','y','_4','aftermissing']) - fs = ds.featureset() - feat = fs.next() - eq_(feat['_4'],'missing') - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(desc['name'],'csv') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - - def test_handling_of_headers_that_are_numbers(**kwargs): - ds = get_csv_ds('numbers_for_headers.csv') - eq_(len(ds.fields()),5) - eq_(ds.fields(),['x','y','1990','1991','1992']) - fs = ds.featureset() - feat = fs.next() - eq_(feat['x'],0) - eq_(feat['y'],0) - eq_(feat['1990'],1) - eq_(feat['1991'],2) - eq_(feat['1992'],3) - - eq_(mapnik.Expression("[1991]=2").evaluate(feat),True) - - def test_quoted_numbers(**kwargs): - ds = get_csv_ds('points.csv') - eq_(len(ds.fields()),3) - eq_(ds.fields(),['x','y','label']) - fs = ds.all_features() - eq_(fs[0]['label'],"0,0") - eq_(fs[1]['label'],"5,5") - eq_(fs[2]['label'],"0,5") - eq_(fs[3]['label'],"5,0") - eq_(fs[4]['label'],"2.5,2.5") - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(desc['name'],'csv') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - - def test_reading_windows_newlines(**kwargs): - ds = get_csv_ds('windows_newlines.csv') - eq_(len(ds.fields()),3) - feats = ds.all_features() - eq_(len(feats),1) - fs = ds.featureset() - feat = fs.next() - eq_(feat['x'],1) - eq_(feat['y'],10) - eq_(feat['z'],9999.9999) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(desc['name'],'csv') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - - def test_reading_mac_newlines(**kwargs): - ds = get_csv_ds('mac_newlines.csv') - eq_(len(ds.fields()),3) - feats = ds.all_features() - eq_(len(feats),1) - fs = ds.featureset() - feat = fs.next() - eq_(feat['x'],1) - eq_(feat['y'],10) - eq_(feat['z'],9999.9999) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(desc['name'],'csv') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - - def check_newlines(filename): - ds = get_csv_ds(filename) - eq_(len(ds.fields()),3) - feats = ds.all_features() - eq_(len(feats),1) - fs = ds.featureset() - feat = fs.next() - eq_(feat['x'],0) - eq_(feat['y'],0) - eq_(feat['line'],'many\n lines\n of text\n with unix newlines') - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(desc['name'],'csv') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - - def test_mixed_mac_unix_newlines(**kwargs): - check_newlines('mac_newlines_with_unix_inline.csv') - - def test_mixed_mac_unix_newlines_escaped(**kwargs): - check_newlines('mac_newlines_with_unix_inline_escaped.csv') - - # To hard to support this case - #def test_mixed_unix_windows_newlines(**kwargs): - # check_newlines('unix_newlines_with_windows_inline.csv') - - # To hard to support this case - #def test_mixed_unix_windows_newlines_escaped(**kwargs): - # check_newlines('unix_newlines_with_windows_inline_escaped.csv') - - def test_mixed_windows_unix_newlines(**kwargs): - check_newlines('windows_newlines_with_unix_inline.csv') - - def test_mixed_windows_unix_newlines_escaped(**kwargs): - check_newlines('windows_newlines_with_unix_inline_escaped.csv') - - def test_tabs(**kwargs): - ds = get_csv_ds('tabs_in_csv.csv') - eq_(len(ds.fields()),3) - eq_(ds.fields(),['x','y','z']) - fs = ds.featureset() - feat = fs.next() - eq_(feat['x'],-122) - eq_(feat['y'],48) - eq_(feat['z'],0) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(desc['name'],'csv') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - - def test_separator_pipes(**kwargs): - ds = get_csv_ds('pipe_delimiters.csv') - eq_(len(ds.fields()),3) - eq_(ds.fields(),['x','y','z']) - fs = ds.featureset() - feat = fs.next() - eq_(feat['x'],0) - eq_(feat['y'],0) - eq_(feat['z'],'hello') - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(desc['name'],'csv') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - - def test_separator_semicolon(**kwargs): - ds = get_csv_ds('semicolon_delimiters.csv') - eq_(len(ds.fields()),3) - eq_(ds.fields(),['x','y','z']) - fs = ds.featureset() - feat = fs.next() - eq_(feat['x'],0) - eq_(feat['y'],0) - eq_(feat['z'],'hello') - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(desc['name'],'csv') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - - def test_that_null_and_bool_keywords_are_empty_strings(**kwargs): - ds = get_csv_ds('nulls_and_booleans_as_strings.csv') - eq_(len(ds.fields()),4) - eq_(ds.fields(),['x','y','null','boolean']) - eq_(ds.field_types(),['int', 'int', 'str', 'bool']) - fs = ds.featureset() - feat = fs.next() - eq_(feat['x'],0) - eq_(feat['y'],0) - eq_(feat['null'],'null') - eq_(feat['boolean'],True) - feat = fs.next() - eq_(feat['x'],0) - eq_(feat['y'],0) - eq_(feat['null'],'') - eq_(feat['boolean'],False) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - - @raises(RuntimeError) - def test_that_nonexistant_query_field_throws(**kwargs): - ds = get_csv_ds('lon_lat.csv') - eq_(len(ds.fields()),2) - eq_(ds.fields(),['lon','lat']) - eq_(ds.field_types(),['int','int']) - query = mapnik.Query(ds.envelope()) - for fld in ds.fields(): - query.add_property_name(fld) - # also add an invalid one, triggering throw - query.add_property_name('bogus') - ds.features(query) - - def test_that_leading_zeros_mean_strings(**kwargs): - ds = get_csv_ds('leading_zeros.csv') - eq_(len(ds.fields()),3) - eq_(ds.fields(),['x','y','fips']) - eq_(ds.field_types(),['int','int','str']) - fs = ds.featureset() - feat = fs.next() - eq_(feat['x'],0) - eq_(feat['y'],0) - eq_(feat['fips'],'001') - feat = fs.next() - eq_(feat['x'],0) - eq_(feat['y'],0) - eq_(feat['fips'],'003') - feat = fs.next() - eq_(feat['x'],0) - eq_(feat['y'],0) - eq_(feat['fips'],'005') - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - - def test_advanced_geometry_detection(**kwargs): - ds = get_csv_ds('point_wkt.csv') - eq_(ds.describe()['geometry_type'],mapnik.DataGeometryType.Point) - ds = get_csv_ds('poly_wkt.csv') - eq_(ds.describe()['geometry_type'],mapnik.DataGeometryType.Polygon) - ds = get_csv_ds('multi_poly_wkt.csv') - eq_(ds.describe()['geometry_type'],mapnik.DataGeometryType.Polygon) - ds = get_csv_ds('line_wkt.csv') - eq_(ds.describe()['geometry_type'],mapnik.DataGeometryType.LineString) - - def test_creation_of_csv_from_in_memory_string(**kwargs): - csv_string = ''' - wkt,Name - "POINT (120.15 48.47)","Winthrop, WA" - ''' # csv plugin will test lines <= 10 chars for being fully blank - ds = mapnik.Datasource(**{"type":"csv","inline":csv_string}) - eq_(ds.describe()['geometry_type'],mapnik.DataGeometryType.Point) - fs = ds.featureset() - feat = fs.next() - eq_(feat['Name'],u"Winthrop, WA") - - def test_creation_of_csv_from_in_memory_string_with_uft8(**kwargs): - csv_string = ''' - wkt,Name - "POINT (120.15 48.47)","Québec" - ''' # csv plugin will test lines <= 10 chars for being fully blank - ds = mapnik.Datasource(**{"type":"csv","inline":csv_string}) - eq_(ds.describe()['geometry_type'],mapnik.DataGeometryType.Point) - fs = ds.featureset() - feat = fs.next() - eq_(feat['Name'],u"Québec") - - def validate_geojson_datasource(ds): - eq_(len(ds.fields()),1) - eq_(ds.fields(),['type']) - eq_(ds.field_types(),['str']) - fs = ds.all_features() - #eq_(len(fs[0].geometries()),1) - eq_(fs[0].geometry.type(),mapnik.GeometryType.Point) - #eq_(len(fs[1].geometries()),1) - eq_(fs[1].geometry.type(),mapnik.GeometryType.LineString) - #eq_(len(fs[2].geometries()),1) - eq_(fs[2].geometry.type(), mapnik.GeometryType.Polygon) - #eq_(len(fs[3].geometries()),1) # one geometry, two parts - eq_(fs[3].geometry.type(),mapnik.GeometryType.Polygon) - #eq_(len(fs[4].geometries()),4) - eq_(fs[4].geometry.type(),mapnik.GeometryType.MultiPoint) - #eq_(len(fs[5].geometries()),2) - eq_(fs[5].geometry.type(),mapnik.GeometryType.MultiLineString) - #eq_(len(fs[6].geometries()),2) - eq_(fs[6].geometry.type(),mapnik.GeometryType.MultiPolygon) - #eq_(len(fs[7].geometries()),2) - eq_(fs[7].geometry.type(),mapnik.GeometryType.MultiPolygon) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Collection) - eq_(desc['name'],'csv') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - - def test_json_field1(**kwargs): - ds = get_csv_ds('geojson_double_quote_escape.csv') - validate_geojson_datasource(ds) - - def test_json_field2(**kwargs): - ds = get_csv_ds('geojson_single_quote.csv') - validate_geojson_datasource(ds) - - def test_json_field3(**kwargs): - ds = get_csv_ds('geojson_2x_double_quote_filebakery_style.csv') - validate_geojson_datasource(ds) - - def test_that_blank_undelimited_rows_are_still_parsed(**kwargs): - ds = get_csv_ds('more_headers_than_column_values.csv') - eq_(len(ds.fields()),5) - eq_(ds.fields(),['x','y','one', 'two','three']) - eq_(ds.field_types(),['int','int','str','str','str']) - fs = ds.featureset() - feat = fs.next() - eq_(feat['x'],0) - eq_(feat['y'],0) - eq_(feat['one'],'') - eq_(feat['two'],'') - eq_(feat['three'],'') - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - - @raises(RuntimeError) - def test_that_fewer_headers_than_rows_throws(**kwargs): - # this has invalid header # so throw - get_csv_ds('more_column_values_than_headers.csv') - - def test_that_feature_id_only_incremented_for_valid_rows(**kwargs): - ds = mapnik.Datasource(type='csv', - file=os.path.join('../data/csv/warns','feature_id_counting.csv')) - eq_(len(ds.fields()),3) - eq_(ds.fields(),['x','y','id']) - eq_(ds.field_types(),['int','int','int']) - fs = ds.featureset() - # first - feat = fs.next() - eq_(feat['x'],0) - eq_(feat['y'],0) - eq_(feat['id'],1) - # second, should have skipped bogus one - feat = fs.next() - eq_(feat['x'],0) - eq_(feat['y'],0) - eq_(feat['id'],2) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(len(ds.all_features()),2) - - def test_dynamically_defining_headers1(**kwargs): - ds = mapnik.Datasource(type='csv', - file=os.path.join('../data/csv/fails','needs_headers_two_lines.csv'), - headers='x,y,name') - eq_(len(ds.fields()),3) - eq_(ds.fields(),['x','y','name']) - eq_(ds.field_types(),['int','int','str']) - fs = ds.featureset() - feat = fs.next() - eq_(feat['x'],0) - eq_(feat['y'],0) - eq_(feat['name'],'data_name') - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(len(ds.all_features()),2) - - def test_dynamically_defining_headers2(**kwargs): - ds = mapnik.Datasource(type='csv', - file=os.path.join('../data/csv/fails','needs_headers_one_line.csv'), - headers='x,y,name') - eq_(len(ds.fields()),3) - eq_(ds.fields(),['x','y','name']) - eq_(ds.field_types(),['int','int','str']) - fs = ds.featureset() - feat = fs.next() - eq_(feat['x'],0) - eq_(feat['y'],0) - eq_(feat['name'],'data_name') - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(len(ds.all_features()),1) - - def test_dynamically_defining_headers3(**kwargs): - ds = mapnik.Datasource(type='csv', - file=os.path.join('../data/csv/fails','needs_headers_one_line_no_newline.csv'), - headers='x,y,name') - eq_(len(ds.fields()),3) - eq_(ds.fields(),['x','y','name']) - eq_(ds.field_types(),['int','int','str']) - fs = ds.featureset() - feat = fs.next() - eq_(feat['x'],0) - eq_(feat['y'],0) - eq_(feat['name'],'data_name') - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(len(ds.all_features()),1) - - def test_that_64bit_int_fields_work(**kwargs): - ds = get_csv_ds('64bit_int.csv') - eq_(len(ds.fields()),3) - eq_(ds.fields(),['x','y','bigint']) - eq_(ds.field_types(),['int','int','int']) - fs = ds.featureset() - feat = fs.next() - eq_(feat['bigint'],2147483648) - feat = fs.next() - eq_(feat['bigint'],9223372036854775807) - eq_(feat['bigint'],0x7FFFFFFFFFFFFFFF) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(len(ds.all_features()),2) - - def test_various_number_types(**kwargs): - ds = get_csv_ds('number_types.csv') - eq_(len(ds.fields()),3) - eq_(ds.fields(),['x','y','floats']) - eq_(ds.field_types(),['int','int','float']) - fs = ds.featureset() - feat = fs.next() - eq_(feat['floats'],.0) - feat = fs.next() - eq_(feat['floats'],+.0) - feat = fs.next() - eq_(feat['floats'],1e-06) - feat = fs.next() - eq_(feat['floats'],-1e-06) - feat = fs.next() - eq_(feat['floats'],0.000001) - feat = fs.next() - eq_(feat['floats'],1.234e+16) - feat = fs.next() - eq_(feat['floats'],1.234e+16) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(len(ds.all_features()),8) - - def test_manually_supplied_extent(**kwargs): - csv_string = ''' - wkt,Name - ''' - ds = mapnik.Datasource(**{"type":"csv","extent":"-180,-90,180,90","inline":csv_string}) - b = ds.envelope() - eq_(b.minx,-180) - eq_(b.miny,-90) - eq_(b.maxx,180) - eq_(b.maxy,90) - - def test_inline_geojson(**kwargs): - csv_string = "geojson\n'{\"coordinates\":[-92.22568,38.59553],\"type\":\"Point\"}'" - ds = mapnik.Datasource(**{"type":"csv","inline":csv_string}) - eq_(len(ds.fields()),0) - eq_(ds.fields(),[]) - # FIXME - re-enable after https://github.com/mapnik/mapnik/issues/2319 is fixed - #fs = ds.featureset() - #feat = fs.next() - #eq_(feat.num_geometries(),1) - -if __name__ == "__main__": - setup() - [eval(run)(visual=True) for run in dir() if 'test_' in run] diff --git a/tests/python_tests/datasource_test.py b/tests/python_tests/datasource_test.py deleted file mode 100644 index 4ada3dc3c..000000000 --- a/tests/python_tests/datasource_test.py +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_, raises -from utilities import execution_path, run_all -import os, mapnik -from itertools import groupby - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_that_datasources_exist(): - if len(mapnik.DatasourceCache.plugin_names()) == 0: - print '***NOTICE*** - no datasource plugins have been loaded' - -# adapted from raster_symboliser_test#test_dataraster_query_point -@raises(RuntimeError) -def test_vrt_referring_to_missing_files(): - srs = '+init=epsg:32630' - if 'gdal' in mapnik.DatasourceCache.plugin_names(): - lyr = mapnik.Layer('dataraster') - lyr.datasource = mapnik.Gdal( - file = '../data/raster/missing_raster.vrt', - band = 1, - ) - lyr.srs = srs - _map = mapnik.Map(256, 256, srs) - _map.layers.append(lyr) - - # center of extent of raster - x, y = 556113.0,4381428.0 # center of extent of raster - - _map.zoom_all() - - # Fancy stuff to supress output of error - # open 2 fds - null_fds = [os.open(os.devnull, os.O_RDWR) for x in xrange(2)] - # save the current file descriptors to a tuple - save = os.dup(1), os.dup(2) - # put /dev/null fds on 1 and 2 - os.dup2(null_fds[0], 1) - os.dup2(null_fds[1], 2) - - # *** run the function *** - try: - # Should RuntimeError here - _map.query_point(0, x, y).features - finally: - # restore file descriptors so I can print the results - os.dup2(save[0], 1) - os.dup2(save[1], 2) - # close the temporary fds - os.close(null_fds[0]) - os.close(null_fds[1]) - - -def test_field_listing(): - if 'shape' in mapnik.DatasourceCache.plugin_names(): - ds = mapnik.Shapefile(file='../data/shp/poly.shp') - fields = ds.fields() - eq_(fields, ['AREA', 'EAS_ID', 'PRFEDEA']) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Polygon) - eq_(desc['name'],'shape') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - -def test_total_feature_count_shp(): - if 'shape' in mapnik.DatasourceCache.plugin_names(): - ds = mapnik.Shapefile(file='../data/shp/poly.shp') - features = ds.all_features() - num_feats = len(features) - eq_(num_feats, 10) - -def test_total_feature_count_json(): - if 'ogr' in mapnik.DatasourceCache.plugin_names(): - ds = mapnik.Ogr(file='../data/json/points.geojson',layer_by_index=0) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(desc['name'],'ogr') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - features = ds.all_features() - num_feats = len(features) - eq_(num_feats, 5) - -def test_sqlite_reading(): - if 'sqlite' in mapnik.DatasourceCache.plugin_names(): - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite',table_by_index=0) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Polygon) - eq_(desc['name'],'sqlite') - eq_(desc['type'],mapnik.DataType.Vector) - eq_(desc['encoding'],'utf-8') - features = ds.all_features() - num_feats = len(features) - eq_(num_feats, 245) - -def test_reading_json_from_string(): - json = open('../data/json/points.geojson','r').read() - if 'ogr' in mapnik.DatasourceCache.plugin_names(): - ds = mapnik.Ogr(file=json,layer_by_index=0) - features = ds.all_features() - num_feats = len(features) - eq_(num_feats, 5) - -def test_feature_envelope(): - if 'shape' in mapnik.DatasourceCache.plugin_names(): - ds = mapnik.Shapefile(file='../data/shp/poly.shp') - features = ds.all_features() - for feat in features: - env = feat.envelope() - contains = ds.envelope().contains(env) - eq_(contains, True) - intersects = ds.envelope().contains(env) - eq_(intersects, True) - -def test_feature_attributes(): - if 'shape' in mapnik.DatasourceCache.plugin_names(): - ds = mapnik.Shapefile(file='../data/shp/poly.shp') - features = ds.all_features() - feat = features[0] - attrs = {'PRFEDEA': u'35043411', 'EAS_ID': 168, 'AREA': 215229.266} - eq_(feat.attributes, attrs) - eq_(ds.fields(),['AREA', 'EAS_ID', 'PRFEDEA']) - eq_(ds.field_types(),['float','int','str']) - -def test_ogr_layer_by_sql(): - if 'ogr' in mapnik.DatasourceCache.plugin_names(): - ds = mapnik.Ogr(file='../data/shp/poly.shp', layer_by_sql='SELECT * FROM poly WHERE EAS_ID = 168') - features = ds.all_features() - num_feats = len(features) - eq_(num_feats, 1) - -def test_hit_grid(): - - def rle_encode(l): - """ encode a list of strings with run-length compression """ - return ["%d:%s" % (len(list(group)), name) for name, group in groupby(l)] - - m = mapnik.Map(256,256); - try: - mapnik.load_map(m,'../data/good_maps/agg_poly_gamma_map.xml'); - m.zoom_all() - join_field = 'NAME' - fg = [] # feature grid - for y in range(0, 256, 4): - for x in range(0, 256, 4): - featureset = m.query_map_point(0,x,y) - added = False - for feature in featureset.features: - fg.append(feature[join_field]) - added = True - if not added: - fg.append('') - hit_list = '|'.join(rle_encode(fg)) - eq_(hit_list[:16],'730:|2:Greenland') - eq_(hit_list[-12:],'1:Chile|812:') - except RuntimeError, e: - # only test datasources that we have installed - if not 'Could not create datasource' in str(e): - raise RuntimeError(str(e)) - - -if __name__ == '__main__': - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/datasource_xml_template_test.py b/tests/python_tests/datasource_xml_template_test.py deleted file mode 100644 index 38a73a3e2..000000000 --- a/tests/python_tests/datasource_xml_template_test.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import os -from utilities import execution_path, run_all -import mapnik - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_datasource_template_is_working(): - m = mapnik.Map(256,256) - try: - mapnik.load_map(m,'../data/good_maps/datasource.xml') - except RuntimeError, e: - if "Required parameter 'type'" in str(e): - raise RuntimeError(e) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/extra_map_props_test.py b/tests/python_tests/extra_map_props_test.py deleted file mode 100644 index 045cddbdb..000000000 --- a/tests/python_tests/extra_map_props_test.py +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from nose.tools import eq_ -from utilities import execution_path, run_all -import os, mapnik - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_arbitrary_parameters_attached_to_map(): - m = mapnik.Map(256,256) - mapnik.load_map(m,'../data/good_maps/extra_arbitary_map_parameters.xml') - eq_(len(m.parameters),5) - eq_(m.parameters['key'],'value2') - eq_(m.parameters['key3'],'value3') - eq_(m.parameters['unicode'],u'iván') - eq_(m.parameters['integer'],10) - eq_(m.parameters['decimal'],.999) - m2 = mapnik.Map(256,256) - for k,v in m.parameters: - m2.parameters.append(mapnik.Parameter(k,v)) - eq_(len(m2.parameters),5) - eq_(m2.parameters['key'],'value2') - eq_(m2.parameters['key3'],'value3') - eq_(m2.parameters['unicode'],u'iván') - eq_(m2.parameters['integer'],10) - eq_(m2.parameters['decimal'],.999) - map_string = mapnik.save_map_to_string(m) - m3 = mapnik.Map(256,256) - mapnik.load_map_from_string(m3,map_string) - eq_(len(m3.parameters),5) - eq_(m3.parameters['key'],'value2') - eq_(m3.parameters['key3'],'value3') - eq_(m3.parameters['unicode'],u'iván') - eq_(m3.parameters['integer'],10) - eq_(m3.parameters['decimal'],.999) - - -def test_serializing_arbitrary_parameters(): - m = mapnik.Map(256,256) - m.parameters.append(mapnik.Parameter('width',m.width)) - m.parameters.append(mapnik.Parameter('height',m.height)) - - m2 = mapnik.Map(1,1) - mapnik.load_map_from_string(m2,mapnik.save_map_to_string(m)) - eq_(m2.parameters['width'],m.width) - eq_(m2.parameters['height'],m.height) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/feature_id_test.py b/tests/python_tests/feature_id_test.py deleted file mode 100644 index 66c20ccf4..000000000 --- a/tests/python_tests/feature_id_test.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_ -from utilities import execution_path, run_all -import os, mapnik -import itertools - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def compare_shape_between_mapnik_and_ogr(shapefile,query=None): - plugins = mapnik.DatasourceCache.plugin_names() - if 'shape' in plugins and 'ogr' in plugins: - ds1 = mapnik.Ogr(file=shapefile,layer_by_index=0) - ds2 = mapnik.Shapefile(file=shapefile) - if query: - fs1 = ds1.features(query) - fs2 = ds2.features(query) - else: - fs1 = ds1.featureset() - fs2 = ds2.featureset() - count = 0; - for feat1,feat2 in itertools.izip(fs1,fs2): - count += 1 - eq_(feat1.id(),feat2.id(), - '%s : ogr feature id %s "%s" does not equal shapefile feature id %s "%s"' - % (count,feat1.id(),str(feat1.attributes), feat2.id(),str(feat2.attributes))) - return True - - -def test_shapefile_line_featureset_id(): - compare_shape_between_mapnik_and_ogr('../data/shp/polylines.shp') - -def test_shapefile_polygon_featureset_id(): - compare_shape_between_mapnik_and_ogr('../data/shp/poly.shp') - -def test_shapefile_polygon_feature_query_id(): - bbox = (15523428.2632, 4110477.6323, -11218494.8310, 7495720.7404) - query = mapnik.Query(mapnik.Box2d(*bbox)) - if 'ogr' in mapnik.DatasourceCache.plugin_names(): - ds = mapnik.Ogr(file='../data/shp/world_merc.shp',layer_by_index=0) - for fld in ds.fields(): - query.add_property_name(fld) - compare_shape_between_mapnik_and_ogr('../data/shp/world_merc.shp',query) - -def test_feature_hit_count(): - pass - #raise Todo("need to optimize multigeom bbox handling in shapeindex: https://github.com/mapnik/mapnik/issues/783") - # results in different results between shp and ogr! - #bbox = (-14284551.8434, 2074195.1992, -7474929.8687, 8140237.7628) - #bbox = (1113194.91,4512803.085,2226389.82,6739192.905) - #query = mapnik.Query(mapnik.Box2d(*bbox)) - #if 'ogr' in mapnik.DatasourceCache.plugin_names(): - # ds1 = mapnik.Ogr(file='../data/shp/world_merc.shp',layer_by_index=0) - # for fld in ds1.fields(): - # query.add_property_name(fld) - # ds2 = mapnik.Shapefile(file='../data/shp/world_merc.shp') - # count1 = len(ds1.features(query).features) - # count2 = len(ds2.features(query).features) - # eq_(count1,count2,"Feature count differs between OGR driver (%s features) and Shapefile Driver (%s features) when querying the same bbox" % (count1,count2)) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/feature_test.py b/tests/python_tests/feature_test.py deleted file mode 100644 index cfd0f5eee..000000000 --- a/tests/python_tests/feature_test.py +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from nose.tools import eq_,raises -from utilities import run_all - -import mapnik -from binascii import unhexlify - -def test_default_constructor(): - f = mapnik.Feature(mapnik.Context(),1) - eq_(f is not None,True) - -def test_feature_geo_interface(): - ctx = mapnik.Context() - feat = mapnik.Feature(ctx,1) - feat.geometry = mapnik.Geometry.from_wkt('Point (0 0)') - eq_(feat.__geo_interface__['geometry'],{u'type': u'Point', u'coordinates': [0, 0]}) - -def test_python_extended_constructor(): - context = mapnik.Context() - context.push('foo') - context.push('foo') - f = mapnik.Feature(context,1) - wkt = 'POLYGON ((35 10, 10 20, 15 40, 45 45, 35 10),(20 30, 35 35, 30 20, 20 30))' - f.geometry = mapnik.Geometry.from_wkt(wkt) - f['foo'] = 'bar' - eq_(f['foo'], 'bar') - eq_(f.envelope(),mapnik.Box2d(10.0,10.0,45.0,45.0)) - # reset - f['foo'] = u"avión" - eq_(f['foo'], u"avión") - f['foo'] = 1.4 - eq_(f['foo'], 1.4) - f['foo'] = True - eq_(f['foo'], True) - -def test_add_geom_wkb(): -# POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10)) - wkb = '010300000001000000050000000000000000003e4000000000000024400000000000002440000000000000344000000000000034400000000000004440000000000000444000000000000044400000000000003e400000000000002440' - geometry = mapnik.Geometry.from_wkb(unhexlify(wkb)) - eq_(geometry.is_valid(), False) # False because winding order is wrong according to OGC or because end point != first point - eq_(geometry.is_simple(), True) - eq_(geometry.envelope(), mapnik.Box2d(10.0,10.0,40.0,40.0)) - geometry.correct() - # valid after calling correct - eq_(geometry.is_valid(), True) - -def test_feature_expression_evaluation(): - context = mapnik.Context() - context.push('name') - f = mapnik.Feature(context,1) - f['name'] = 'a' - eq_(f['name'],u'a') - expr = mapnik.Expression("[name]='a'") - evaluated = expr.evaluate(f) - eq_(evaluated,True) - num_attributes = len(f) - eq_(num_attributes,1) - eq_(f.id(),1) - -# https://github.com/mapnik/mapnik/issues/933 -def test_feature_expression_evaluation_missing_attr(): - context = mapnik.Context() - context.push('name') - f = mapnik.Feature(context,1) - f['name'] = u'a' - eq_(f['name'],u'a') - expr = mapnik.Expression("[fielddoesnotexist]='a'") - eq_(f.has_key('fielddoesnotexist'),False) - try: - expr.evaluate(f) - except Exception, e: - eq_("Key does not exist" in str(e),True) - num_attributes = len(f) - eq_(num_attributes,1) - eq_(f.id(),1) - -# https://github.com/mapnik/mapnik/issues/934 -def test_feature_expression_evaluation_attr_with_spaces(): - context = mapnik.Context() - context.push('name with space') - f = mapnik.Feature(context,1) - f['name with space'] = u'a' - eq_(f['name with space'],u'a') - expr = mapnik.Expression("[name with space]='a'") - eq_(str(expr),"([name with space]='a')") - eq_(expr.evaluate(f),True) - -# https://github.com/mapnik/mapnik/issues/2390 -@raises(RuntimeError) -def test_feature_from_geojson(): - ctx = mapnik.Context() - inline_string = """ - { - "geometry" : { - "coordinates" : [ 0,0 ] - "type" : "Point" - }, - "type" : "Feature", - "properties" : { - "this":"that" - "known":"nope because missing comma" - } - } - """ - mapnik.Feature.from_geojson(inline_string,ctx) - -if __name__ == "__main__": - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/filter_test.py b/tests/python_tests/filter_test.py deleted file mode 100644 index 34845cea1..000000000 --- a/tests/python_tests/filter_test.py +++ /dev/null @@ -1,451 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from nose.tools import eq_,raises -from utilities import run_all -import mapnik - -if hasattr(mapnik,'Expression'): - mapnik.Filter = mapnik.Expression - -map_ = ''' - - -''' - -def test_filter_init(): - m = mapnik.Map(1,1) - mapnik.load_map_from_string(m,map_) - filters = [] - filters.append(mapnik.Filter("([region]>=0) and ([region]<=50)")) - filters.append(mapnik.Filter("(([region]>=0) and ([region]<=50))")) - filters.append(mapnik.Filter("((([region]>=0) and ([region]<=50)))")) - filters.append(mapnik.Filter('((([region]>=0) and ([region]<=50)))')) - filters.append(mapnik.Filter('''((([region]>=0) and ([region]<=50)))''')) - filters.append(mapnik.Filter(''' - ((([region]>=0) - and - ([region]<=50))) - ''')) - filters.append(mapnik.Filter(''' - ([region]>=0) - and - ([region]<=50) - ''')) - filters.append(mapnik.Filter(''' - ([region] - >= - 0) - and - ([region] - <= - 50) - ''')) - - s = m.find_style('s') - - for r in s.rules: - filters.append(r.filter) - - first = filters[0] - for f in filters: - eq_(str(first),str(f)) - - s = m.find_style('s2') - - eq_(s.filter_mode,mapnik.filter_mode.FIRST) - - -def test_geometry_type_eval(): - # clashing field called 'mapnik::geometry' - context2 = mapnik.Context() - context2.push('mapnik::geometry_type') - f = mapnik.Feature(context2,0) - f["mapnik::geometry_type"] = 'sneaky' - expr = mapnik.Expression("[mapnik::geometry_type]") - eq_(expr.evaluate(f),0) - - expr = mapnik.Expression("[mapnik::geometry_type]") - context = mapnik.Context() - - # no geometry - f = mapnik.Feature(context,0) - eq_(expr.evaluate(f),0) - eq_(mapnik.Expression("[mapnik::geometry_type]=0").evaluate(f),True) - - # POINT = 1 - f = mapnik.Feature(context,0) - f.geometry = mapnik.Geometry.from_wkt('POINT(10 40)') - eq_(expr.evaluate(f),1) - eq_(mapnik.Expression("[mapnik::geometry_type]=point").evaluate(f),True) - - # LINESTRING = 2 - f = mapnik.Feature(context,0) - f.geometry = mapnik.Geometry.from_wkt('LINESTRING (30 10, 10 30, 40 40)') - eq_(expr.evaluate(f),2) - eq_(mapnik.Expression("[mapnik::geometry_type] = linestring").evaluate(f),True) - - # POLYGON = 3 - f = mapnik.Feature(context,0) - f.geometry = mapnik.Geometry.from_wkt('POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))') - eq_(expr.evaluate(f),3) - eq_(mapnik.Expression("[mapnik::geometry_type] = polygon").evaluate(f),True) - - # COLLECTION = 4 - f = mapnik.Feature(context,0) - geom = mapnik.Geometry.from_wkt('GEOMETRYCOLLECTION(POLYGON((1 1,2 1,2 2,1 2,1 1)),POINT(2 3),LINESTRING(2 3,3 4))') - f.geometry = geom; - eq_(expr.evaluate(f),4) - eq_(mapnik.Expression("[mapnik::geometry_type] = collection").evaluate(f),True) - -def test_regex_match(): - context = mapnik.Context() - context.push('name') - f = mapnik.Feature(context,0) - f["name"] = 'test' - expr = mapnik.Expression("[name].match('test')") - eq_(expr.evaluate(f),True) # 1 == True - -def test_unicode_regex_match(): - context = mapnik.Context() - context.push('name') - f = mapnik.Feature(context,0) - f["name"] = 'Québec' - expr = mapnik.Expression("[name].match('Québec')") - eq_(expr.evaluate(f),True) # 1 == True - -def test_regex_replace(): - context = mapnik.Context() - context.push('name') - f = mapnik.Feature(context,0) - f["name"] = 'test' - expr = mapnik.Expression("[name].replace('(\B)|( )','$1 ')") - eq_(expr.evaluate(f),'t e s t') - -def test_unicode_regex_replace_to_str(): - expr = mapnik.Expression("[name].replace('(\B)|( )','$1 ')") - eq_(str(expr),"[name].replace('(\B)|( )','$1 ')") - -def test_unicode_regex_replace(): - context = mapnik.Context() - context.push('name') - f = mapnik.Feature(context,0) - f["name"] = 'Québec' - expr = mapnik.Expression("[name].replace('(\B)|( )','$1 ')") - # will fail if -DBOOST_REGEX_HAS_ICU is not defined - eq_(expr.evaluate(f), u'Q u é b e c') - -def test_float_precision(): - context = mapnik.Context() - context.push('num') - f = mapnik.Feature(context,0) - f["num1"] = 1.0000 - f["num2"] = 1.0001 - eq_(f["num1"],1.0000) - eq_(f["num2"],1.0001) - expr = mapnik.Expression("[num1] = 1.0000") - eq_(expr.evaluate(f),True) - expr = mapnik.Expression("[num1].match('1')") - eq_(expr.evaluate(f),True) - expr = mapnik.Expression("[num2] = 1.0001") - eq_(expr.evaluate(f),True) - expr = mapnik.Expression("[num2].match('1.0001')") - eq_(expr.evaluate(f),True) - -def test_string_matching_on_precision(): - context = mapnik.Context() - context.push('num') - f = mapnik.Feature(context,0) - f["num"] = "1.0000" - eq_(f["num"],"1.0000") - expr = mapnik.Expression("[num].match('.*(^0|00)$')") - eq_(expr.evaluate(f),True) - -def test_creation_of_null_value(): - context = mapnik.Context() - context.push('nv') - f = mapnik.Feature(context,0) - f["nv"] = None - eq_(f["nv"],None) - eq_(f["nv"] is None,True) - # test boolean - f["nv"] = 0 - eq_(f["nv"],0) - eq_(f["nv"] is not None,True) - -def test_creation_of_bool(): - context = mapnik.Context() - context.push('bool') - f = mapnik.Feature(context,0) - f["bool"] = True - eq_(f["bool"],True) - # TODO - will become int of 1 do to built in boost python conversion - # https://github.com/mapnik/mapnik/issues/1873 - eq_(isinstance(f["bool"],bool) or isinstance(f["bool"],long),True) - f["bool"] = False - eq_(f["bool"],False) - eq_(isinstance(f["bool"],bool) or isinstance(f["bool"],long),True) - # test NoneType - f["bool"] = None - eq_(f["bool"],None) - eq_(isinstance(f["bool"],bool) or isinstance(f["bool"],long),False) - # test integer - f["bool"] = 0 - eq_(f["bool"],0) - # https://github.com/mapnik/mapnik/issues/1873 - # ugh, boost_python's built into converter does not work right - #eq_(isinstance(f["bool"],bool),False) - -null_equality = [ - ['hello',False,unicode], - [u'',False,unicode], - [0,False,long], - [123,False,long], - [0.0,False,float], - [123.123,False,float], - [.1,False,float], - [False,False,long], # TODO - should become bool: https://github.com/mapnik/mapnik/issues/1873 - [True,False,long], # TODO - should become bool: https://github.com/mapnik/mapnik/issues/1873 - [None,True,None], - [2147483648,False,long], - [922337203685477580,False,long] -] - -def test_expressions_with_null_equality(): - for eq in null_equality: - context = mapnik.Context() - f = mapnik.Feature(context,0) - f["prop"] = eq[0] - eq_(f["prop"],eq[0]) - if eq[0] is None: - eq_(f["prop"] is None, True) - else: - eq_(isinstance(f['prop'],eq[2]),True,'%s is not an instance of %s' % (f['prop'],eq[2])) - expr = mapnik.Expression("[prop] = null") - eq_(expr.evaluate(f),eq[1]) - expr = mapnik.Expression("[prop] is null") - eq_(expr.evaluate(f),eq[1]) - -def test_expressions_with_null_equality2(): - for eq in null_equality: - context = mapnik.Context() - f = mapnik.Feature(context,0) - f["prop"] = eq[0] - eq_(f["prop"],eq[0]) - if eq[0] is None: - eq_(f["prop"] is None, True) - else: - eq_(isinstance(f['prop'],eq[2]),True,'%s is not an instance of %s' % (f['prop'],eq[2])) - # TODO - support `is not` syntax: - # https://github.com/mapnik/mapnik/issues/796 - expr = mapnik.Expression("not [prop] is null") - eq_(expr.evaluate(f),not eq[1]) - # https://github.com/mapnik/mapnik/issues/1642 - expr = mapnik.Expression("[prop] != null") - eq_(expr.evaluate(f),not eq[1]) - -truthyness = [ - [u'hello',True,unicode], - [u'',False,unicode], - [0,False,long], - [123,True,long], - [0.0,False,float], - [123.123,True,float], - [.1,True,float], - [False,False,long], # TODO - should become bool: https://github.com/mapnik/mapnik/issues/1873 - [True,True,long], # TODO - should become bool: https://github.com/mapnik/mapnik/issues/1873 - [None,False,None], - [2147483648,True,long], - [922337203685477580,True,long] -] - -def test_expressions_for_thruthyness(): - context = mapnik.Context() - for eq in truthyness: - f = mapnik.Feature(context,0) - f["prop"] = eq[0] - eq_(f["prop"],eq[0]) - if eq[0] is None: - eq_(f["prop"] is None, True) - else: - eq_(isinstance(f['prop'],eq[2]),True,'%s is not an instance of %s' % (f['prop'],eq[2])) - expr = mapnik.Expression("[prop]") - eq_(expr.to_bool(f),eq[1]) - expr = mapnik.Expression("not [prop]") - eq_(expr.to_bool(f),not eq[1]) - expr = mapnik.Expression("! [prop]") - eq_(expr.to_bool(f),not eq[1]) - # also test if feature does not have property at all - f2 = mapnik.Feature(context,1) - # no property existing will return value_null since - # https://github.com/mapnik/mapnik/commit/562fada9d0f680f59b2d9f396c95320a0d753479#include/mapnik/feature.hpp - eq_(f2["prop"] is None,True) - expr = mapnik.Expression("[prop]") - eq_(expr.evaluate(f2),None) - eq_(expr.to_bool(f2),False) - -# https://github.com/mapnik/mapnik/issues/1859 -def test_if_null_and_empty_string_are_equal(): - context = mapnik.Context() - f = mapnik.Feature(context,0) - f["empty"] = u"" - f["null"] = None - # ensure base assumptions are good - eq_(mapnik.Expression("[empty] = ''").to_bool(f),True) - eq_(mapnik.Expression("[null] = null").to_bool(f),True) - eq_(mapnik.Expression("[empty] != ''").to_bool(f),False) - eq_(mapnik.Expression("[null] != null").to_bool(f),False) - # now test expected behavior - eq_(mapnik.Expression("[null] = ''").to_bool(f),False) - eq_(mapnik.Expression("[empty] = null").to_bool(f),False) - eq_(mapnik.Expression("[empty] != null").to_bool(f),True) - # this one is the back compatibility shim - eq_(mapnik.Expression("[null] != ''").to_bool(f),False) - -def test_filtering_nulls_and_empty_strings(): - context = mapnik.Context() - f = mapnik.Feature(context,0) - f["prop"] = u"hello" - eq_(f["prop"],u"hello") - eq_(mapnik.Expression("[prop]").to_bool(f),True) - eq_(mapnik.Expression("! [prop]").to_bool(f),False) - eq_(mapnik.Expression("[prop] != null").to_bool(f),True) - eq_(mapnik.Expression("[prop] != ''").to_bool(f),True) - eq_(mapnik.Expression("[prop] != null and [prop] != ''").to_bool(f),True) - eq_(mapnik.Expression("[prop] != null or [prop] != ''").to_bool(f),True) - f["prop2"] = u"" - eq_(f["prop2"],u"") - eq_(mapnik.Expression("[prop2]").to_bool(f),False) - eq_(mapnik.Expression("! [prop2]").to_bool(f),True) - eq_(mapnik.Expression("[prop2] != null").to_bool(f),True) - eq_(mapnik.Expression("[prop2] != ''").to_bool(f),False) - eq_(mapnik.Expression("[prop2] = ''").to_bool(f),True) - eq_(mapnik.Expression("[prop2] != null or [prop2] != ''").to_bool(f),True) - eq_(mapnik.Expression("[prop2] != null and [prop2] != ''").to_bool(f),False) - f["prop3"] = None - eq_(f["prop3"],None) - eq_(mapnik.Expression("[prop3]").to_bool(f),False) - eq_(mapnik.Expression("! [prop3]").to_bool(f),True) - eq_(mapnik.Expression("[prop3] != null").to_bool(f),False) - eq_(mapnik.Expression("[prop3] = null").to_bool(f),True) - - # https://github.com/mapnik/mapnik/issues/1859 - #eq_(mapnik.Expression("[prop3] != ''").to_bool(f),True) - eq_(mapnik.Expression("[prop3] != ''").to_bool(f),False) - - eq_(mapnik.Expression("[prop3] = ''").to_bool(f),False) - - # https://github.com/mapnik/mapnik/issues/1859 - #eq_(mapnik.Expression("[prop3] != null or [prop3] != ''").to_bool(f),True) - eq_(mapnik.Expression("[prop3] != null or [prop3] != ''").to_bool(f),False) - - eq_(mapnik.Expression("[prop3] != null and [prop3] != ''").to_bool(f),False) - # attr not existing should behave the same as prop3 - eq_(mapnik.Expression("[prop4]").to_bool(f),False) - eq_(mapnik.Expression("! [prop4]").to_bool(f),True) - eq_(mapnik.Expression("[prop4] != null").to_bool(f),False) - eq_(mapnik.Expression("[prop4] = null").to_bool(f),True) - - # https://github.com/mapnik/mapnik/issues/1859 - ##eq_(mapnik.Expression("[prop4] != ''").to_bool(f),True) - eq_(mapnik.Expression("[prop4] != ''").to_bool(f),False) - - eq_(mapnik.Expression("[prop4] = ''").to_bool(f),False) - - # https://github.com/mapnik/mapnik/issues/1859 - ##eq_(mapnik.Expression("[prop4] != null or [prop4] != ''").to_bool(f),True) - eq_(mapnik.Expression("[prop4] != null or [prop4] != ''").to_bool(f),False) - - eq_(mapnik.Expression("[prop4] != null and [prop4] != ''").to_bool(f),False) - f["prop5"] = False - eq_(f["prop5"],False) - eq_(mapnik.Expression("[prop5]").to_bool(f),False) - eq_(mapnik.Expression("! [prop5]").to_bool(f),True) - eq_(mapnik.Expression("[prop5] != null").to_bool(f),True) - eq_(mapnik.Expression("[prop5] = null").to_bool(f),False) - eq_(mapnik.Expression("[prop5] != ''").to_bool(f),True) - eq_(mapnik.Expression("[prop5] = ''").to_bool(f),False) - eq_(mapnik.Expression("[prop5] != null or [prop5] != ''").to_bool(f),True) - eq_(mapnik.Expression("[prop5] != null and [prop5] != ''").to_bool(f),True) - # note, we need to do [prop5] != 0 here instead of false due to this bug: - # https://github.com/mapnik/mapnik/issues/1873 - eq_(mapnik.Expression("[prop5] != null and [prop5] != '' and [prop5] != 0").to_bool(f),False) - -# https://github.com/mapnik/mapnik/issues/1872 -def test_falseyness_comparision(): - context = mapnik.Context() - f = mapnik.Feature(context,0) - f["prop"] = 0 - eq_(mapnik.Expression("[prop]").to_bool(f),False) - eq_(mapnik.Expression("[prop] = false").to_bool(f),True) - eq_(mapnik.Expression("not [prop] != false").to_bool(f),True) - eq_(mapnik.Expression("not [prop] = true").to_bool(f),True) - eq_(mapnik.Expression("[prop] = true").to_bool(f),False) - eq_(mapnik.Expression("[prop] != true").to_bool(f),True) - -# https://github.com/mapnik/mapnik/issues/1806, fixed by https://github.com/mapnik/mapnik/issues/1872 -def test_truthyness_comparision(): - context = mapnik.Context() - f = mapnik.Feature(context,0) - f["prop"] = 1 - eq_(mapnik.Expression("[prop]").to_bool(f),True) - eq_(mapnik.Expression("[prop] = false").to_bool(f),False) - eq_(mapnik.Expression("not [prop] != false").to_bool(f),False) - eq_(mapnik.Expression("not [prop] = true").to_bool(f),False) - eq_(mapnik.Expression("[prop] = true").to_bool(f),True) - eq_(mapnik.Expression("[prop] != true").to_bool(f),False) - -def test_division_by_zero(): - expr = mapnik.Expression('[a]/[b]') - c = mapnik.Context() - c.push('a') - c.push('b') - f = mapnik.Feature(c,0); - f['a'] = 1 - f['b'] = 0 - eq_(expr.evaluate(f),None) - -@raises(RuntimeError) -def test_invalid_syntax1(): - mapnik.Expression('abs()') - - -if __name__ == "__main__": - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/fontset_test.py b/tests/python_tests/fontset_test.py deleted file mode 100644 index ee8fd7d77..000000000 --- a/tests/python_tests/fontset_test.py +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_ -from utilities import execution_path, run_all -import os, mapnik - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_loading_fontset_from_map(): - m = mapnik.Map(256,256) - mapnik.load_map(m,'../data/good_maps/fontset.xml',True) - fs = m.find_fontset('book-fonts') - eq_(len(fs.names),2) - eq_(list(fs.names),['DejaVu Sans Book','DejaVu Sans Oblique']) - -# def test_loading_fontset_from_python(): -# m = mapnik.Map(256,256) -# fset = mapnik.FontSet('foo') -# fset.add_face_name('Comic Sans') -# fset.add_face_name('Papyrus') -# eq_(fset.name,'foo') -# fset.name = 'my-set' -# eq_(fset.name,'my-set') -# m.append_fontset('my-set', fset) -# sty = mapnik.Style() -# rule = mapnik.Rule() -# tsym = mapnik.TextSymbolizer() -# eq_(tsym.fontset,None) -# tsym.fontset = fset -# rule.symbols.append(tsym) -# sty.rules.append(rule) -# m.append_style('Style',sty) -# serialized_map = mapnik.save_map_to_string(m) -# eq_('fontset-name="my-set"' in serialized_map,True) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/geojson_plugin_test.py b/tests/python_tests/geojson_plugin_test.py deleted file mode 100644 index 2732e3429..000000000 --- a/tests/python_tests/geojson_plugin_test.py +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from nose.tools import eq_,assert_almost_equal -from utilities import execution_path, run_all -import os, mapnik -try: - import json -except ImportError: - import simplejson as json - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -if 'geojson' in mapnik.DatasourceCache.plugin_names(): - - def test_geojson_init(): - ds = mapnik.Datasource(type='geojson',file='../data/json/escaped.geojson') - e = ds.envelope() - assert_almost_equal(e.minx, -81.705583, places=7) - assert_almost_equal(e.miny, 41.480573, places=6) - assert_almost_equal(e.maxx, -81.705583, places=5) - assert_almost_equal(e.maxy, 41.480573, places=3) - - def test_geojson_properties(): - ds = mapnik.Datasource(type='geojson',file='../data/json/escaped.geojson') - f = ds.features_at_point(ds.envelope().center()).features[0] - eq_(len(ds.fields()),9) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - - eq_(f['name'], u'Test') - eq_(f['int'], 1) - eq_(f['description'], u'Test: \u005C') - eq_(f['spaces'], u'this has spaces') - eq_(f['double'], 1.1) - eq_(f['boolean'], True) - eq_(f['NOM_FR'], u'Qu\xe9bec') - eq_(f['NOM_FR'], u'Québec') - eq_(f['array'], u'[[[1],["deux"]],[["\\u0442\\u0440\\u0438","four","\\u4e94"]]]') - array = json.loads(f['array']) - eq_(array,[[[1], [u'deux']], [[u'\u0442\u0440\u0438', u'four', u'\u4e94']]]) - eq_(f['object'], u'{"value":{"type":"\\u041c\\u0430pni\\u043a","array":[3,0,"x"]}}') - object = json.loads(f['object']) - eq_(object,{u'value': {u'array': [3, 0, u'x'], u'type': u'\u041c\u0430pni\u043a'}}) - - ds = mapnik.Datasource(type='geojson',file='../data/json/escaped.geojson') - f = ds.all_features()[0] - eq_(len(ds.fields()),9) - - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - - eq_(f['name'], u'Test') - eq_(f['int'], 1) - eq_(f['description'], u'Test: \u005C') - eq_(f['spaces'], u'this has spaces') - eq_(f['double'], 1.1) - eq_(f['boolean'], True) - eq_(f['NOM_FR'], u'Qu\xe9bec') - eq_(f['NOM_FR'], u'Québec') - eq_(f['array'], u'[[[1],["deux"]],[["\\u0442\\u0440\\u0438","four","\\u4e94"]]]') - array = json.loads(f['array']) - eq_(array,[[[1], [u'deux']], [[u'\u0442\u0440\u0438', u'four', u'\u4e94']]]) - eq_(f['object'], u'{"value":{"type":"\\u041c\\u0430pni\\u043a","array":[3,0,"x"]}}') - object = json.loads(f['object']) - eq_(object,{u'value': {u'array': [3, 0, u'x'], u'type': u'\u041c\u0430pni\u043a'}}) - - def test_large_geojson_properties(): - ds = mapnik.Datasource(type='geojson',file='../data/json/escaped.geojson',cache_features = False) - f = ds.features_at_point(ds.envelope().center()).features[0] - eq_(len(ds.fields()),9) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - - eq_(f['name'], u'Test') - eq_(f['int'], 1) - eq_(f['description'], u'Test: \u005C') - eq_(f['spaces'], u'this has spaces') - eq_(f['double'], 1.1) - eq_(f['boolean'], True) - eq_(f['NOM_FR'], u'Qu\xe9bec') - eq_(f['NOM_FR'], u'Québec') - eq_(f['array'], u'[[[1],["deux"]],[["\\u0442\\u0440\\u0438","four","\\u4e94"]]]') - array = json.loads(f['array']) - eq_(array,[[[1], [u'deux']], [[u'\u0442\u0440\u0438', u'four', u'\u4e94']]]) - eq_(f['object'], u'{"value":{"type":"\\u041c\\u0430pni\\u043a","array":[3,0,"x"]}}') - object = json.loads(f['object']) - eq_(object,{u'value': {u'array': [3, 0, u'x'], u'type': u'\u041c\u0430pni\u043a'}}) - - ds = mapnik.Datasource(type='geojson',file='../data/json/escaped.geojson') - f = ds.all_features()[0] - eq_(len(ds.fields()),9) - - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - - eq_(f['name'], u'Test') - eq_(f['int'], 1) - eq_(f['description'], u'Test: \u005C') - eq_(f['spaces'], u'this has spaces') - eq_(f['double'], 1.1) - eq_(f['boolean'], True) - eq_(f['NOM_FR'], u'Qu\xe9bec') - eq_(f['NOM_FR'], u'Québec') - eq_(f['array'], u'[[[1],["deux"]],[["\\u0442\\u0440\\u0438","four","\\u4e94"]]]') - array = json.loads(f['array']) - eq_(array,[[[1], [u'deux']], [[u'\u0442\u0440\u0438', u'four', u'\u4e94']]]) - eq_(f['object'], u'{"value":{"type":"\\u041c\\u0430pni\\u043a","array":[3,0,"x"]}}') - object = json.loads(f['object']) - eq_(object,{u'value': {u'array': [3, 0, u'x'], u'type': u'\u041c\u0430pni\u043a'}}) - - def test_geojson_from_in_memory_string(): - # will silently fail since it is a geometry and needs to be a featurecollection. - #ds = mapnik.Datasource(type='geojson',inline='{"type":"LineString","coordinates":[[0,0],[10,10]]}') - # works since it is a featurecollection - ds = mapnik.Datasource(type='geojson',inline='{ "type":"FeatureCollection", "features": [ { "type":"Feature", "properties":{"name":"test"}, "geometry": { "type":"LineString","coordinates":[[0,0],[10,10]] } } ]}') - eq_(len(ds.fields()),1) - f = ds.all_features()[0] - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.LineString) - eq_(f['name'], u'test') - -# @raises(RuntimeError) - def test_that_nonexistant_query_field_throws(**kwargs): - ds = mapnik.Datasource(type='geojson',file='../data/json/escaped.geojson') - eq_(len(ds.fields()),9) - # TODO - this sorting is messed up - #eq_(ds.fields(),['name', 'int', 'double', 'description', 'boolean', 'NOM_FR']) - #eq_(ds.field_types(),['str', 'int', 'float', 'str', 'bool', 'str']) -# TODO - should geojson plugin throw like others? -# query = mapnik.Query(ds.envelope()) -# for fld in ds.fields(): -# query.add_property_name(fld) -# # also add an invalid one, triggering throw -# query.add_property_name('bogus') -# fs = ds.features(query) - - def test_parsing_feature_collection_with_top_level_properties(): - ds = mapnik.Datasource(type='geojson',file='../data/json/feature_collection_level_properties.json') - f = ds.all_features()[0] - - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - eq_(f['feat_name'], u'feat_value') - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/geometry_io_test.py b/tests/python_tests/geometry_io_test.py deleted file mode 100644 index 58e4f3659..000000000 --- a/tests/python_tests/geometry_io_test.py +++ /dev/null @@ -1,273 +0,0 @@ -#encoding: utf8 - -from nose.tools import eq_,raises -import os -from utilities import execution_path, run_all -import mapnik -from binascii import unhexlify - -try: - import json -except ImportError: - import simplejson as json - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -wkts = [ - [mapnik.GeometryType.Point,"POINT(30 10)", "01010000000000000000003e400000000000002440"], - [mapnik.GeometryType.Point,"POINT(30.0 10.0)", "01010000000000000000003e400000000000002440"], - [mapnik.GeometryType.Point,"POINT(30.1 10.1)", "01010000009a99999999193e403333333333332440"], - [mapnik.GeometryType.LineString,"LINESTRING(30 10,10 30,40 40)", "0102000000030000000000000000003e40000000000000244000000000000024400000000000003e4000000000000044400000000000004440"], - [mapnik.GeometryType.Polygon,"POLYGON((30 10,10 20,20 40,40 40,30 10))", "010300000001000000050000000000000000003e4000000000000024400000000000002440000000000000344000000000000034400000000000004440000000000000444000000000000044400000000000003e400000000000002440"], - [mapnik.GeometryType.Polygon,"POLYGON((35 10,10 20,15 40,45 45,35 10),(20 30,35 35,30 20,20 30))","0103000000020000000500000000000000008041400000000000002440000000000000244000000000000034400000000000002e40000000000000444000000000008046400000000000804640000000000080414000000000000024400400000000000000000034400000000000003e40000000000080414000000000008041400000000000003e40000000000000344000000000000034400000000000003e40"], - [mapnik.GeometryType.MultiPoint,"MULTIPOINT((10 40),(40 30),(20 20),(30 10))","010400000004000000010100000000000000000024400000000000004440010100000000000000000044400000000000003e4001010000000000000000003440000000000000344001010000000000000000003e400000000000002440"], - [mapnik.GeometryType.MultiLineString,"MULTILINESTRING((10 10,20 20,10 40),(40 40,30 30,40 20,30 10))","010500000002000000010200000003000000000000000000244000000000000024400000000000003440000000000000344000000000000024400000000000004440010200000004000000000000000000444000000000000044400000000000003e400000000000003e40000000000000444000000000000034400000000000003e400000000000002440"], - [mapnik.GeometryType.MultiPolygon,"MULTIPOLYGON(((30 20,10 40,45 40,30 20)),((15 5,40 10,10 20,5 10,15 5)))","010600000002000000010300000001000000040000000000000000003e40000000000000344000000000000024400000000000004440000000000080464000000000000044400000000000003e400000000000003440010300000001000000050000000000000000002e4000000000000014400000000000004440000000000000244000000000000024400000000000003440000000000000144000000000000024400000000000002e400000000000001440"], - [mapnik.GeometryType.MultiPolygon,"MULTIPOLYGON(((40 40,20 45,45 30,40 40)),((20 35,45 20,30 5,10 10,10 30,20 35),(30 20,20 25,20 15,30 20)))","01060000000200000001030000000100000004000000000000000000444000000000000044400000000000003440000000000080464000000000008046400000000000003e40000000000000444000000000000044400103000000020000000600000000000000000034400000000000804140000000000080464000000000000034400000000000003e4000000000000014400000000000002440000000000000244000000000000024400000000000003e4000000000000034400000000000804140040000000000000000003e4000000000000034400000000000003440000000000000394000000000000034400000000000002e400000000000003e400000000000003440"], - [mapnik.GeometryType.GeometryCollection,"GEOMETRYCOLLECTION(POLYGON((1 1,2 1,2 2,1 2,1 1)),POINT(2 3),LINESTRING(2 3,3 4))","01070000000300000001030000000100000005000000000000000000f03f000000000000f03f0000000000000040000000000000f03f00000000000000400000000000000040000000000000f03f0000000000000040000000000000f03f000000000000f03f0101000000000000000000004000000000000008400102000000020000000000000000000040000000000000084000000000000008400000000000001040"], - [mapnik.GeometryType.Polygon,"POLYGON((-178.32319 71.518365,-178.321586 71.518439,-178.259635 71.510688,-178.304862 71.513129,-178.32319 71.518365),(-178.32319 71.518365,-178.341544 71.517524,-178.32244 71.505439,-178.215323 71.478034,-178.193473 71.47663,-178.147757 71.485175,-178.124442 71.481879,-178.005729 71.448615,-178.017203 71.441413,-178.054191 71.428778,-178.047049 71.425727,-178.033439 71.417792,-178.026236 71.415107,-178.030082 71.413459,-178.039908 71.40766,-177.970878 71.39643,-177.779837 71.333197,-177.718375 71.305243,-177.706412 71.3039,-177.68212 71.304877,-177.670279 71.301825,-177.655387 71.293158,-177.587577 71.285956,-177.548575 71.294867,-177.531119 71.296332,-177.51409 71.293402,-177.498649 71.284735,-177.506217 71.268622,-177.486991 71.258734,-177.459708 71.249884,-177.443412 71.237006,-177.445914 71.222663,-177.457755 71.209357,-177.507804 71.173774,-177.581168 71.147589,-177.637626 71.117011,-177.684134 71.110968,-177.751883 71.092963,-177.819266 71.084662,-177.877677 71.052558,-177.930472 71.041449,-178.206595 71.038398,-178.310111 71.013617,-178.875907 70.981024,-178.980277 70.95069,-179.342093 70.908026,-179.336234 70.911078,-179.322257 70.921698,-179.364493 70.930243,-179.457511 70.915534,-179.501212 70.919684,-179.666007 70.965461,-179.853385 70.979438,-179.888785 70.993598,-179.907523 70.996772,-179.999989 70.992011,-179.999989 71.024848,-179.999989 71.058661,-179.999989 71.126166,-179.999989 71.187018,-179.999989 71.224189,-179.999989 71.27497,-179.999989 71.312079,-179.999989 71.356024,-179.999989 71.410041,-179.999989 71.487799,-179.999989 71.536689,-179.862845 71.538642,-179.912223 71.555854,-179.900748 71.558478,-179.798819 71.569098,-179.757438 71.583197,-179.735953 71.586432,-179.715445 71.583258,-179.697501 71.577338,-179.678702 71.573676,-179.610831 71.585211,-179.372062 71.569098,-179.326774 71.555487,-179.306815 71.557563,-179.287162 71.562934,-179.24285 71.569098,-179.204642 71.583197,-179.074576 71.600043,-178.395438 71.539008,-178.32319 71.518365))","010300000002000000050000009e0c8e92574a66c0079964e42ce151403f1bb96e4a4a66c0247ec51a2ee15140b43c0fee4e4866c06b9db81cafe0514062f9f36dc14966c04568041bd7e051409e0c8e92574a66c0079964e42ce15140560000009e0c8e92574a66c0079964e42ce15140a4c4aeeded4a66c049b9fb1c1fe1514083ddb06d514a66c0dec7d11c59e0514074620fede34666c01118eb1b98de514017f549ee304666c0b8921d1b81de51402a58e36cba4466c08e75711b0ddf5140f607ca6dfb4366c04568041bd7de5140717495ee2e4066c0af5fb01bb6dc5140944c4eed8c4066c0dfc14f1c40dc51409a97c3eebb4166c0a2cf471971db5140e789e76c814166c08c81751c3fdb5140266daaee114166c0f321a81abdda51404b3fe1ecd64066c0ce55f31c91da514058c6866ef64066c029cfbc1c76da5140295b24ed464166c0cbf8f71917da5140fd4cbd6e113f66c0cf49ef1b5fd95140be66b96cf43866c00588821953d55140736891edfc3666c04f95ef1989d3514010b056ed9a3666c04850fc1873d35140527e52edd33566c05e13d21a83d351404206f2ec723566c05f07ce1951d35140276728eef83466c0e4a3c519c3d2514038dc476ecd3266c01406651a4dd25140e78c28ed8d3166c0db6ad619dfd2514018e945edfe3066c088307e1af7d251406c26df6c733066c02fa52e19c7d25140dc65bfeef42f66c0b341261939d25140bc75feed323066c01c3f541a31d15140484e266e952f66c040170d198fd05140b5368dedb52e66c0cbf27519fecf5140edd45c6e302e66c02bbd361b2bcf514083da6fed442e66c0dfc14f1c40ce51409352d0eda52e66c0130ce71a66cd5140e5982cee3f3066c049b9fb1c1fcb51406a2fa2ed983266c0f50f221972c951408a22a46e673466c06d91b41b7dc751409d82fc6ce43566c0c3b986191ac7514063edef6c0f3866c03c2f151bf3c551403197546d373a66c0b14d2a1a6bc55140726e13ee153c66c02ac93a1c5dc35140003b376dc63d66c0ecdcb419a7c251408c101e6d9c4666c0d68ee21c75c251402864e76dec4966c0db6ad619dfc05140cdea1d6e075c66c0d525e318c9be5140ac00df6d5e5f66c097a8de1ad8bc514019e6046df26a66c0bc7a15191dba5140b439ce6dc26a66c0ba86191a4fba5140077de9ed4f6a66c079b29b19fdba5140df5339eda96b66c04f95ef1989bb5140eed11beea36e66c01118eb1b98ba51409c8bbfed097066c0e3a9471adcba5140077de9ed4f7566c01024ef1ccabd5140b43c0fee4e7b66c06b9db81cafbe51409d853ded707c66c0bfd7101c97bf5140c5abac6d0a7d66c06364c91ccbbf5140836beee8ff7f66c06d91b41b7dbf5140836beee8ff7f66c0bfd7101c97c15140836beee8ff7f66c03e23111ac1c35140836beee8ff7f66c07ff78e1a13c85140836beee8ff7f66c0da70581af8cb5140836beee8ff7f66c0dec7d11c59ce5140836beee8ff7f66c06458c51b99d15140836beee8ff7f66c02db1321af9d35140836beee8ff7f66c0d525e318c9d65140836beee8ff7f66c03a419b1c3eda5140836beee8ff7f66c060014c1938df5140836beee8ff7f66c0dec7d11c59e251408c101e6d9c7b66c021904b1c79e2514017f549ee307d66c073d6a71c93e35140ff3d78edd27c66c04562821abee351408d0dddec8f7966c0048e041a6ce45140edd79dee3c7866c00588821953e55140944c4eed8c7766c0fc54151a88e55140c6a2e9ece47666c058c85c1954e55140acfd9ded517666c03c2f151bf3e451405ab741edb77566c002a08a1bb7e45140410c74ed8b7366c09b90d61874e55140b34291eee76b66c0048e041a6ce45140dc65bfee746a66c09a9658198de3514083ddb06dd16966c06b9db81cafe35140edd45c6e306966c09df3531c07e45140adfa5c6dc56766c0048e041a6ce451406b2c616d8c6666c00588821953e55140212235ed626266c0664cc11a67e6514010b3976da74c66c01212691b7fe251409e0c8e92574a66c0079964e42ce15140"], - [mapnik.GeometryType.MultiPolygon,"MULTIPOLYGON(((-178.32319 71.518365,-178.321586 71.518439,-178.259635 71.510688,-178.304862 71.513129,-178.32319 71.518365)),((-178.32319 71.518365,-178.341544 71.517524,-178.32244 71.505439,-178.215323 71.478034,-178.193473 71.47663,-178.147757 71.485175,-178.124442 71.481879,-178.005729 71.448615,-178.017203 71.441413,-178.054191 71.428778,-178.047049 71.425727,-178.033439 71.417792,-178.026236 71.415107,-178.030082 71.413459,-178.039908 71.40766,-177.970878 71.39643,-177.779837 71.333197,-177.718375 71.305243,-177.706412 71.3039,-177.68212 71.304877,-177.670279 71.301825,-177.655387 71.293158,-177.587577 71.285956,-177.548575 71.294867,-177.531119 71.296332,-177.51409 71.293402,-177.498649 71.284735,-177.506217 71.268622,-177.486991 71.258734,-177.459708 71.249884,-177.443412 71.237006,-177.445914 71.222663,-177.457755 71.209357,-177.507804 71.173774,-177.581168 71.147589,-177.637626 71.117011,-177.684134 71.110968,-177.751883 71.092963,-177.819266 71.084662,-177.877677 71.052558,-177.930472 71.041449,-178.206595 71.038398,-178.310111 71.013617,-178.875907 70.981024,-178.980277 70.95069,-179.342093 70.908026,-179.336234 70.911078,-179.322257 70.921698,-179.364493 70.930243,-179.457511 70.915534,-179.501212 70.919684,-179.666007 70.965461,-179.853385 70.979438,-179.888785 70.993598,-179.907523 70.996772,-179.999989 70.992011,-179.999989 71.024848,-179.999989 71.058661,-179.999989 71.126166,-179.999989 71.187018,-179.999989 71.224189,-179.999989 71.27497,-179.999989 71.312079,-179.999989 71.356024,-179.999989 71.410041,-179.999989 71.487799,-179.999989 71.536689,-179.862845 71.538642,-179.912223 71.555854,-179.900748 71.558478,-179.798819 71.569098,-179.757438 71.583197,-179.735953 71.586432,-179.715445 71.583258,-179.697501 71.577338,-179.678702 71.573676,-179.610831 71.585211,-179.372062 71.569098,-179.326774 71.555487,-179.306815 71.557563,-179.287162 71.562934,-179.24285 71.569098,-179.204642 71.583197,-179.074576 71.600043,-178.395438 71.539008,-178.32319 71.518365)))","010600000002000000010300000001000000050000009e0c8e92574a66c0079964e42ce151403f1bb96e4a4a66c0247ec51a2ee15140b43c0fee4e4866c06b9db81cafe0514062f9f36dc14966c04568041bd7e051409e0c8e92574a66c0079964e42ce15140010300000001000000560000009e0c8e92574a66c0079964e42ce15140a4c4aeeded4a66c049b9fb1c1fe1514083ddb06d514a66c0dec7d11c59e0514074620fede34666c01118eb1b98de514017f549ee304666c0b8921d1b81de51402a58e36cba4466c08e75711b0ddf5140f607ca6dfb4366c04568041bd7de5140717495ee2e4066c0af5fb01bb6dc5140944c4eed8c4066c0dfc14f1c40dc51409a97c3eebb4166c0a2cf471971db5140e789e76c814166c08c81751c3fdb5140266daaee114166c0f321a81abdda51404b3fe1ecd64066c0ce55f31c91da514058c6866ef64066c029cfbc1c76da5140295b24ed464166c0cbf8f71917da5140fd4cbd6e113f66c0cf49ef1b5fd95140be66b96cf43866c00588821953d55140736891edfc3666c04f95ef1989d3514010b056ed9a3666c04850fc1873d35140527e52edd33566c05e13d21a83d351404206f2ec723566c05f07ce1951d35140276728eef83466c0e4a3c519c3d2514038dc476ecd3266c01406651a4dd25140e78c28ed8d3166c0db6ad619dfd2514018e945edfe3066c088307e1af7d251406c26df6c733066c02fa52e19c7d25140dc65bfeef42f66c0b341261939d25140bc75feed323066c01c3f541a31d15140484e266e952f66c040170d198fd05140b5368dedb52e66c0cbf27519fecf5140edd45c6e302e66c02bbd361b2bcf514083da6fed442e66c0dfc14f1c40ce51409352d0eda52e66c0130ce71a66cd5140e5982cee3f3066c049b9fb1c1fcb51406a2fa2ed983266c0f50f221972c951408a22a46e673466c06d91b41b7dc751409d82fc6ce43566c0c3b986191ac7514063edef6c0f3866c03c2f151bf3c551403197546d373a66c0b14d2a1a6bc55140726e13ee153c66c02ac93a1c5dc35140003b376dc63d66c0ecdcb419a7c251408c101e6d9c4666c0d68ee21c75c251402864e76dec4966c0db6ad619dfc05140cdea1d6e075c66c0d525e318c9be5140ac00df6d5e5f66c097a8de1ad8bc514019e6046df26a66c0bc7a15191dba5140b439ce6dc26a66c0ba86191a4fba5140077de9ed4f6a66c079b29b19fdba5140df5339eda96b66c04f95ef1989bb5140eed11beea36e66c01118eb1b98ba51409c8bbfed097066c0e3a9471adcba5140077de9ed4f7566c01024ef1ccabd5140b43c0fee4e7b66c06b9db81cafbe51409d853ded707c66c0bfd7101c97bf5140c5abac6d0a7d66c06364c91ccbbf5140836beee8ff7f66c06d91b41b7dbf5140836beee8ff7f66c0bfd7101c97c15140836beee8ff7f66c03e23111ac1c35140836beee8ff7f66c07ff78e1a13c85140836beee8ff7f66c0da70581af8cb5140836beee8ff7f66c0dec7d11c59ce5140836beee8ff7f66c06458c51b99d15140836beee8ff7f66c02db1321af9d35140836beee8ff7f66c0d525e318c9d65140836beee8ff7f66c03a419b1c3eda5140836beee8ff7f66c060014c1938df5140836beee8ff7f66c0dec7d11c59e251408c101e6d9c7b66c021904b1c79e2514017f549ee307d66c073d6a71c93e35140ff3d78edd27c66c04562821abee351408d0dddec8f7966c0048e041a6ce45140edd79dee3c7866c00588821953e55140944c4eed8c7766c0fc54151a88e55140c6a2e9ece47666c058c85c1954e55140acfd9ded517666c03c2f151bf3e451405ab741edb77566c002a08a1bb7e45140410c74ed8b7366c09b90d61874e55140b34291eee76b66c0048e041a6ce45140dc65bfee746a66c09a9658198de3514083ddb06dd16966c06b9db81cafe35140edd45c6e306966c09df3531c07e45140adfa5c6dc56766c0048e041a6ce451406b2c616d8c6666c00588821953e55140212235ed626266c0664cc11a67e6514010b3976da74c66c01212691b7fe251409e0c8e92574a66c0079964e42ce15140"] -] - - -geojson = [ - [mapnik.GeometryType.Point,'{"type":"Point","coordinates":[30,10]}'], - [mapnik.GeometryType.Point,'{"type":"Point","coordinates":[30.0,10.0]}'], - [mapnik.GeometryType.Point,'{"type":"Point","coordinates":[30.1,10.1]}'], - [mapnik.GeometryType.LineString,'{"type":"LineString","coordinates":[[30.0,10.0],[10.0,30.0],[40.0,40.0]]}'], - [mapnik.GeometryType.Polygon,'{"type":"Polygon","coordinates":[[[30.0,10.0],[10.0,20.0],[20.0,40.0],[40.0,40.0],[30.0,10.0]]]}'], - [mapnik.GeometryType.Polygon,'{"type":"Polygon","coordinates":[[[35.0,10.0],[10.0,20.0],[15.0,40.0],[45.0,45.0],[35.0,10.0]],[[20.0,30.0],[35.0,35.0],[30.0,20.0],[20.0,30.0]]]}'], - [mapnik.GeometryType.MultiPoint,'{"type":"MultiPoint","coordinates":[[10.0,40.0],[40.0,30.0],[20.0,20.0],[30.0,10.0]]}'], - [mapnik.GeometryType.MultiLineString,'{"type":"MultiLineString","coordinates":[[[10.0,10.0],[20.0,20.0],[10.0,40.0]],[[40.0,40.0],[30.0,30.0],[40.0,20.0],[30.0,10.0]]]}'], - [mapnik.GeometryType.MultiPolygon,'{"type":"MultiPolygon","coordinates":[[[[30.0,20.0],[10.0,40.0],[45.0,40.0],[30.0,20.0]]],[[[15.0,5.0],[40.0,10.0],[10.0,20.0],[5.0,10.0],[15.0,5.0]]]]}'], - [mapnik.GeometryType.MultiPolygon,'{"type":"MultiPolygon","coordinates":[[[[40.0,40.0],[20.0,45.0],[45.0,30.0],[40.0,40.0]]],[[[20.0,35.0],[45.0,20.0],[30.0,5.0],[10.0,10.0],[10.0,30.0],[20.0,35.0]],[[30.0,20.0],[20.0,25.0],[20.0,15.0],[30.0,20.0]]]]}'], - [mapnik.GeometryType.GeometryCollection,'{"type":"GeometryCollection","geometries":[{"type":"Polygon","coordinates":[[[1.0,1.0],[2.0,1.0],[2.0,2.0],[1.0,2.0],[1.0,1.0]]]},{"type":"Point","coordinates":[2.0,3.0]},{"type":"LineString","coordinates":[[2.0,3.0],[3.0,4.0]]}]}'], - [mapnik.GeometryType.Polygon,'{"type":"Polygon","coordinates":[[[-178.32319,71.518365],[-178.321586,71.518439],[-178.259635,71.510688],[-178.304862,71.513129],[-178.32319,71.518365]],[[-178.32319,71.518365],[-178.341544,71.517524],[-178.32244,71.505439],[-178.215323,71.478034],[-178.193473,71.47663],[-178.147757,71.485175],[-178.124442,71.481879],[-178.005729,71.448615],[-178.017203,71.441413],[-178.054191,71.428778],[-178.047049,71.425727],[-178.033439,71.417792],[-178.026236,71.415107],[-178.030082,71.413459],[-178.039908,71.40766],[-177.970878,71.39643],[-177.779837,71.333197],[-177.718375,71.305243],[-177.706412,71.3039],[-177.68212,71.304877],[-177.670279,71.301825],[-177.655387,71.293158],[-177.587577,71.285956],[-177.548575,71.294867],[-177.531119,71.296332],[-177.51409,71.293402],[-177.498649,71.284735],[-177.506217,71.268622],[-177.486991,71.258734],[-177.459708,71.249884],[-177.443412,71.237006],[-177.445914,71.222663],[-177.457755,71.209357],[-177.507804,71.173774],[-177.581168,71.147589],[-177.637626,71.117011],[-177.684134,71.110968],[-177.751883,71.092963],[-177.819266,71.084662],[-177.877677,71.052558],[-177.930472,71.041449],[-178.206595,71.038398],[-178.310111,71.013617],[-178.875907,70.981024],[-178.980277,70.95069],[-179.342093,70.908026],[-179.336234,70.911078],[-179.322257,70.921698],[-179.364493,70.930243],[-179.457511,70.915534],[-179.501212,70.919684],[-179.666007,70.965461],[-179.853385,70.979438],[-179.888785,70.993598],[-179.907523,70.996772],[-179.999989,70.992011],[-179.999989,71.024848],[-179.999989,71.058661],[-179.999989,71.126166],[-179.999989,71.187018],[-179.999989,71.224189],[-179.999989,71.27497],[-179.999989,71.312079],[-179.999989,71.356024],[-179.999989,71.410041],[-179.999989,71.487799],[-179.999989,71.536689],[-179.862845,71.538642],[-179.912223,71.555854],[-179.900748,71.558478],[-179.798819,71.569098],[-179.757438,71.583197],[-179.735953,71.586432],[-179.715445,71.583258],[-179.697501,71.577338],[-179.678702,71.573676],[-179.610831,71.585211],[-179.372062,71.569098],[-179.326774,71.555487],[-179.306815,71.557563],[-179.287162,71.562934],[-179.24285,71.569098],[-179.204642,71.583197],[-179.074576,71.600043],[-178.395438,71.539008],[-178.32319,71.518365]]]}'], - [mapnik.GeometryType.MultiPolygon,'{"type":"MultiPolygon","coordinates":[[[[-178.32319,71.518365],[-178.321586,71.518439],[-178.259635,71.510688],[-178.304862,71.513129],[-178.32319,71.518365]]],[[[-178.32319,71.518365],[-178.341544,71.517524],[-178.32244,71.505439],[-178.215323,71.478034],[-178.193473,71.47663],[-178.147757,71.485175],[-178.124442,71.481879],[-178.005729,71.448615],[-178.017203,71.441413],[-178.054191,71.428778],[-178.047049,71.425727],[-178.033439,71.417792],[-178.026236,71.415107],[-178.030082,71.413459],[-178.039908,71.40766],[-177.970878,71.39643],[-177.779837,71.333197],[-177.718375,71.305243],[-177.706412,71.3039],[-177.68212,71.304877],[-177.670279,71.301825],[-177.655387,71.293158],[-177.587577,71.285956],[-177.548575,71.294867],[-177.531119,71.296332],[-177.51409,71.293402],[-177.498649,71.284735],[-177.506217,71.268622],[-177.486991,71.258734],[-177.459708,71.249884],[-177.443412,71.237006],[-177.445914,71.222663],[-177.457755,71.209357],[-177.507804,71.173774],[-177.581168,71.147589],[-177.637626,71.117011],[-177.684134,71.110968],[-177.751883,71.092963],[-177.819266,71.084662],[-177.877677,71.052558],[-177.930472,71.041449],[-178.206595,71.038398],[-178.310111,71.013617],[-178.875907,70.981024],[-178.980277,70.95069],[-179.342093,70.908026],[-179.336234,70.911078],[-179.322257,70.921698],[-179.364493,70.930243],[-179.457511,70.915534],[-179.501212,70.919684],[-179.666007,70.965461],[-179.853385,70.979438],[-179.888785,70.993598],[-179.907523,70.996772],[-179.999989,70.992011],[-179.999989,71.024848],[-179.999989,71.058661],[-179.999989,71.126166],[-179.999989,71.187018],[-179.999989,71.224189],[-179.999989,71.27497],[-179.999989,71.312079],[-179.999989,71.356024],[-179.999989,71.410041],[-179.999989,71.487799],[-179.999989,71.536689],[-179.862845,71.538642],[-179.912223,71.555854],[-179.900748,71.558478],[-179.798819,71.569098],[-179.757438,71.583197],[-179.735953,71.586432],[-179.715445,71.583258],[-179.697501,71.577338],[-179.678702,71.573676],[-179.610831,71.585211],[-179.372062,71.569098],[-179.326774,71.555487],[-179.306815,71.557563],[-179.287162,71.562934],[-179.24285,71.569098],[-179.204642,71.583197],[-179.074576,71.600043],[-178.395438,71.539008],[-178.32319,71.518365]]]]}'] -] - -geojson_reversed = [ - '{"coordinates":[30,10],"type":"Point"}', - '{"coordinates":[30.0,10.0],"type":"Point"}', - '{"coordinates":[30.1,10.1],"type":"Point"}', - '{"coordinates":[[30.0,10.0],[10.0,30.0],[40.0,40.0]],"type":"LineString"}', - '{"coordinates":[[[30.0,10.0],[10.0,20.0],[20.0,40.0],[40.0,40.0],[30.0,10.0]]],"type":"Polygon"}', - '{"coordinates":[[[35.0,10.0],[10.0,20.0],[15.0,40.0],[45.0,45.0],[35.0,10.0]],[[20.0,30.0],[35.0,35.0],[30.0,20.0],[20.0,30.0]]],"type":"Polygon"}', - '{"coordinates":[[10.0,40.0],[40.0,30.0],[20.0,20.0],[30.0,10.0]],"type":"MultiPoint"}', - '{"coordinates":[[[10.0,10.0],[20.0,20.0],[10.0,40.0]],[[40.0,40.0],[30.0,30.0],[40.0,20.0],[30.0,10.0]]],"type":"MultiLineString"}', - '{"coordinates":[[[[30.0,20.0],[10.0,40.0],[45.0,40.0],[30.0,20.0]]],[[[15.0,5.0],[40.0,10.0],[10.0,20.0],[5.0,10.0],[15.0,5.0]]]],"type":"MultiPolygon"}', - '{"coordinates":[[[[40.0,40.0],[20.0,45.0],[45.0,30.0],[40.0,40.0]]],[[[20.0,35.0],[45.0,20.0],[30.0,5.0],[10.0,10.0],[10.0,30.0],[20.0,35.0]],[[30.0,20.0],[20.0,25.0],[20.0,15.0],[30.0,20.0]]]],"type":"MultiPolygon"}', - '{"geometries":[{"coordinates":[[[1.0,1.0],[2.0,1.0],[2.0,2.0],[1.0,2.0],[1.0,1.0]]],"type":"Polygon"},{"coordinates":[2.0,3.0],"type":"Point"},{"coordinates":[[2.0,3.0],[3.0,4.0]],"type":"LineString"}],"type":"GeometryCollection"}', - '{"coordinates":[[[-178.32319,71.518365],[-178.321586,71.518439],[-178.259635,71.510688],[-178.304862,71.513129],[-178.32319,71.518365]],[[-178.32319,71.518365],[-178.341544,71.517524],[-178.32244,71.505439],[-178.215323,71.478034],[-178.193473,71.47663],[-178.147757,71.485175],[-178.124442,71.481879],[-178.005729,71.448615],[-178.017203,71.441413],[-178.054191,71.428778],[-178.047049,71.425727],[-178.033439,71.417792],[-178.026236,71.415107],[-178.030082,71.413459],[-178.039908,71.40766],[-177.970878,71.39643],[-177.779837,71.333197],[-177.718375,71.305243],[-177.706412,71.3039],[-177.68212,71.304877],[-177.670279,71.301825],[-177.655387,71.293158],[-177.587577,71.285956],[-177.548575,71.294867],[-177.531119,71.296332],[-177.51409,71.293402],[-177.498649,71.284735],[-177.506217,71.268622],[-177.486991,71.258734],[-177.459708,71.249884],[-177.443412,71.237006],[-177.445914,71.222663],[-177.457755,71.209357],[-177.507804,71.173774],[-177.581168,71.147589],[-177.637626,71.117011],[-177.684134,71.110968],[-177.751883,71.092963],[-177.819266,71.084662],[-177.877677,71.052558],[-177.930472,71.041449],[-178.206595,71.038398],[-178.310111,71.013617],[-178.875907,70.981024],[-178.980277,70.95069],[-179.342093,70.908026],[-179.336234,70.911078],[-179.322257,70.921698],[-179.364493,70.930243],[-179.457511,70.915534],[-179.501212,70.919684],[-179.666007,70.965461],[-179.853385,70.979438],[-179.888785,70.993598],[-179.907523,70.996772],[-179.999989,70.992011],[-179.999989,71.024848],[-179.999989,71.058661],[-179.999989,71.126166],[-179.999989,71.187018],[-179.999989,71.224189],[-179.999989,71.27497],[-179.999989,71.312079],[-179.999989,71.356024],[-179.999989,71.410041],[-179.999989,71.487799],[-179.999989,71.536689],[-179.862845,71.538642],[-179.912223,71.555854],[-179.900748,71.558478],[-179.798819,71.569098],[-179.757438,71.583197],[-179.735953,71.586432],[-179.715445,71.583258],[-179.697501,71.577338],[-179.678702,71.573676],[-179.610831,71.585211],[-179.372062,71.569098],[-179.326774,71.555487],[-179.306815,71.557563],[-179.287162,71.562934],[-179.24285,71.569098],[-179.204642,71.583197],[-179.074576,71.600043],[-178.395438,71.539008],[-178.32319,71.518365]]],"type":"Polygon"}', - '{"coordinates":[[[[-178.32319,71.518365],[-178.321586,71.518439],[-178.259635,71.510688],[-178.304862,71.513129],[-178.32319,71.518365]]],[[[-178.32319,71.518365],[-178.341544,71.517524],[-178.32244,71.505439],[-178.215323,71.478034],[-178.193473,71.47663],[-178.147757,71.485175],[-178.124442,71.481879],[-178.005729,71.448615],[-178.017203,71.441413],[-178.054191,71.428778],[-178.047049,71.425727],[-178.033439,71.417792],[-178.026236,71.415107],[-178.030082,71.413459],[-178.039908,71.40766],[-177.970878,71.39643],[-177.779837,71.333197],[-177.718375,71.305243],[-177.706412,71.3039],[-177.68212,71.304877],[-177.670279,71.301825],[-177.655387,71.293158],[-177.587577,71.285956],[-177.548575,71.294867],[-177.531119,71.296332],[-177.51409,71.293402],[-177.498649,71.284735],[-177.506217,71.268622],[-177.486991,71.258734],[-177.459708,71.249884],[-177.443412,71.237006],[-177.445914,71.222663],[-177.457755,71.209357],[-177.507804,71.173774],[-177.581168,71.147589],[-177.637626,71.117011],[-177.684134,71.110968],[-177.751883,71.092963],[-177.819266,71.084662],[-177.877677,71.052558],[-177.930472,71.041449],[-178.206595,71.038398],[-178.310111,71.013617],[-178.875907,70.981024],[-178.980277,70.95069],[-179.342093,70.908026],[-179.336234,70.911078],[-179.322257,70.921698],[-179.364493,70.930243],[-179.457511,70.915534],[-179.501212,70.919684],[-179.666007,70.965461],[-179.853385,70.979438],[-179.888785,70.993598],[-179.907523,70.996772],[-179.999989,70.992011],[-179.999989,71.024848],[-179.999989,71.058661],[-179.999989,71.126166],[-179.999989,71.187018],[-179.999989,71.224189],[-179.999989,71.27497],[-179.999989,71.312079],[-179.999989,71.356024],[-179.999989,71.410041],[-179.999989,71.487799],[-179.999989,71.536689],[-179.862845,71.538642],[-179.912223,71.555854],[-179.900748,71.558478],[-179.798819,71.569098],[-179.757438,71.583197],[-179.735953,71.586432],[-179.715445,71.583258],[-179.697501,71.577338],[-179.678702,71.573676],[-179.610831,71.585211],[-179.372062,71.569098],[-179.326774,71.555487],[-179.306815,71.557563],[-179.287162,71.562934],[-179.24285,71.569098],[-179.204642,71.583197],[-179.074576,71.600043],[-178.395438,71.539008],[-178.32319,71.518365]]]],"type":"MultiPolygon"}' -] - -geojson_nulls = [ - '{ "type": "Feature", "properties": { }, "geometry": null }', - '{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [] }}', - '{ "type": "Feature", "properties": { }, "geometry": { "type": "LineString", "coordinates": [ [] ] }}', - '{ "type": "Feature", "properties": { }, "geometry": { "type": "Polygon", "coordinates": [ [ [] ] ] } }', - '{ "type": "Feature", "properties": { }, "geometry": { "coordinates": [], "type": "Point" }}', - '{ "type": "Feature", "properties": { }, "geometry": { "coordinates": [ [] ], "type": "LineString" }}', - '{ "type": "Feature", "properties": { }, "geometry": { "coordinates": [ [ [] ] ], "type": "Polygon" } }', - '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPoint", "coordinates": [ [] ] }}', - '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPoint", "coordinates": [ [],[] ] }}', - '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiLineString", "coordinates": [ [] ] }}', - '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [] ] ] }}', - '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPolygon", "coordinates": [ [] ] }}', - '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [] ] ] }}', - '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [] ] ] ] }}', -] - -# valid, but empty wkb's (http://trac.osgeo.org/postgis/wiki/DevWikiEmptyGeometry) -empty_wkbs = [ - # TODO - this is messed up: round trips as MULTIPOINT EMPTY - # template_postgis=# select ST_AsText(ST_GeomFromEWKB(decode(encode(ST_GeomFromText('POINT EMPTY'),'hex'),'hex'))); - # st_astext - #------------------ - # MULTIPOINT EMPTY - #(1 row) - #[ mapnik.GeometryType.Point, "Point EMPTY", '010400000000000000'], - [ mapnik.GeometryType.MultiPoint, "MULTIPOINT EMPTY", '010400000000000000'], - [ mapnik.GeometryType.LineString, "LINESTRING EMPTY", '010200000000000000'], - [ mapnik.GeometryType.LineString, "LINESTRING EMPTY", '010200000000000000' ], - [ mapnik.GeometryType.MultiLineString, "MULTILINESTRING EMPTY", '010500000000000000'], - [ mapnik.GeometryType.Polygon, "Polygon EMPTY", '010300000000000000'], - [ mapnik.GeometryType.GeometryCollection, "GEOMETRYCOLLECTION EMPTY", '010700000000000000'], - [ mapnik.GeometryType.GeometryCollection, "GEOMETRYCOLLECTION(LINESTRING EMPTY,LINESTRING EMPTY)", '010700000000000000'], - [ mapnik.GeometryType.GeometryCollection, "GEOMETRYCOLLECTION(POINT EMPTY,POINT EMPTY)", '010700000000000000'], -] - -partially_empty_wkb = [ - # TODO - currently this is not considered empty - # even though one part is - [ mapnik.GeometryType.GeometryCollection, "GEOMETRYCOLLECTION(MULTILINESTRING((10 10,20 20,10 40),(40 40,30 30,40 20,30 10)),LINESTRING EMPTY)", '010700000002000000010500000002000000010200000003000000000000000000244000000000000024400000000000003440000000000000344000000000000024400000000000004440010200000004000000000000000000444000000000000044400000000000003e400000000000003e40000000000000444000000000000034400000000000003e400000000000002440010200000000000000'], - [ mapnik.GeometryType.GeometryCollection, "GEOMETRYCOLLECTION(POINT EMPTY,POINT(0 0))", '010700000002000000010400000000000000010100000000000000000000000000000000000000'], - [ mapnik.GeometryType.GeometryCollection, "GEOMETRYCOLLECTION(POINT EMPTY,MULTIPOINT(0 0))", '010700000002000000010400000000000000010400000001000000010100000000000000000000000000000000000000'], -] - -# unsupported types -unsupported_wkb = [ - [ "MULTIPOLYGON EMPTY", '010600000000000000'], - [ "TRIANGLE EMPTY", '011100000000000000'], - [ "CircularString EMPTY", '010800000000000000'], - [ "CurvePolygon EMPTY", '010A00000000000000'], - [ "CompoundCurve EMPTY", '010900000000000000'], - [ "MultiCurve EMPTY", '010B00000000000000'], - [ "MultiSurface EMPTY", '010C00000000000000'], - [ "PolyhedralSurface EMPTY", '010F00000000000000'], - [ "TIN EMPTY", '011000000000000000'], - # TODO - a few bogus inputs - # enable if we start range checking to avoid crashing on invalid input? - # https://github.com/mapnik/mapnik/issues/2236 - #[ "", '' ], - #[ "00", '01' ], - #[ "0000", '0104' ], -] - -def test_path_geo_interface(): - geom = mapnik.Geometry.from_wkt('POINT(0 0)') - eq_(geom.__geo_interface__,{u'type': u'Point', u'coordinates': [0, 0]}) - -def test_valid_wkb_parsing(): - count = 0 - for wkb in empty_wkbs: - geom = mapnik.Geometry.from_wkb(unhexlify(wkb[2])) - eq_(geom.is_empty(),True) - eq_(geom.type(),wkb[0]) - - for wkb in wkts: - geom = mapnik.Geometry.from_wkb(unhexlify(wkb[2])) - eq_(geom.is_empty(),False) - eq_(geom.type(),wkb[0]) - -def test_wkb_parsing_error(): - count = 0 - for wkb in unsupported_wkb: - try: - geom = mapnik.Geometry.from_wkb(unhexlify(wkb)) - # should not get here - eq_(True,False) - except: - pass - assert True - -# for partially empty wkbs don't currently look empty right now -# since the enclosing container has objects -def test_empty_wkb_parsing(): - count = 0 - for wkb in partially_empty_wkb: - geom = mapnik.Geometry.from_wkb(unhexlify(wkb[2])) - eq_(geom.type(),wkb[0]) - eq_(geom.is_empty(),False) - -def test_geojson_parsing(): - geometries = [] - count = 0 - for j in geojson: - count += 1 - geometries.append(mapnik.Geometry.from_geojson(j[1])) - eq_(count,len(geometries)) - -def test_geojson_parsing_reversed(): - for idx,j in enumerate(geojson_reversed): - g1 = mapnik.Geometry.from_geojson(j) - g2 = mapnik.Geometry.from_geojson(geojson[idx][1]) - eq_(g1.to_geojson(), g2.to_geojson()) - -# http://geojson.org/geojson-spec.html#positions -def test_geojson_point_positions(): - input_json = '{"type":"Point","coordinates":[30,10]}' - geom = mapnik.Geometry.from_geojson(input_json) - eq_(geom.to_geojson(),input_json) - # should ignore all but the first two - geom = mapnik.Geometry.from_geojson('{"type":"Point","coordinates":[30,10,50,50,50,50]}') - eq_(geom.to_geojson(),input_json) - -def test_geojson_point_positions2(): - input_json = '{"type":"LineString","coordinates":[[30,10],[10,30],[40,40]]}' - geom = mapnik.Geometry.from_geojson(input_json) - eq_(geom.to_geojson(),input_json) - - # should ignore all but the first two - geom = mapnik.Geometry.from_geojson('{"type":"LineString","coordinates":[[30.0,10.0,0,0,0],[10.0,30.0,0,0,0],[40.0,40.0,0,0,0]]}') - eq_(geom.to_geojson(),input_json) - -def compare_wkb_from_wkt(wkt,type): - geom = mapnik.Geometry.from_wkt(wkt) - eq_(geom.type(),type) - -def compare_wkt_to_geojson(idx,wkt,num=None): - geom = mapnik.Geometry.from_wkt(wkt) - # ensure both have same result - gj = geom.to_geojson() - eq_(len(gj) > 1,True) - a = json.loads(gj) - e = json.loads(geojson[idx][1]) - eq_(a,e) - -def test_wkt_simple(): - for wkt in wkts: - try: - geom = mapnik.Geometry.from_wkt(wkt[1]) - eq_(geom.type(),wkt[0]) - except RuntimeError, e: - raise RuntimeError('%s %s' % (e, wkt)) - -def test_wkb_simple(): - for wkt in wkts: - try: - compare_wkb_from_wkt(wkt[1],wkt[0]) - except RuntimeError, e: - raise RuntimeError('%s %s' % (e, wkt)) - -def test_wkt_to_geojson(): - idx = -1 - for wkt in wkts: - try: - idx += 1 - compare_wkt_to_geojson(idx,wkt[1],wkt[0]) - except RuntimeError, e: - raise RuntimeError('%s %s' % (e, wkt)) - -def test_wkt_rounding(): - # currently fails because we use output precision of 6 - should we make configurable? https://github.com/mapnik/mapnik/issues/1009 - # if precision is set to 15 still fails due to very subtle rounding issues - wkt = "POLYGON((7.904185 54.180426,7.89918 54.178168,7.897715 54.182318,7.893565 54.183111,7.890391 54.187567,7.885874 54.19068,7.879893 54.193915,7.894541 54.194647,7.900645 54.19068,7.904185 54.180426))" - geom = mapnik.Geometry.from_wkt(wkt) - eq_(geom.type(),mapnik.GeometryType.Polygon) - -def test_wkt_collection_flattening(): - wkt = 'GEOMETRYCOLLECTION(POLYGON((1 1,2 1,2 2,1 2,1 1)),POLYGON((40 40,20 45,45 30,40 40)),POLYGON((20 35,45 20,30 5,10 10,10 30,20 35),(30 20,20 25,20 15,30 20)),LINESTRING(2 3,3 4))' - # currently fails as the MULTIPOLYGON inside will be returned as multiple polygons - not a huge deal - should we worry? - #wkt = "GEOMETRYCOLLECTION(POLYGON((1 1,2 1,2 2,1 2,1 1)),MULTIPOLYGON(((40 40,20 45,45 30,40 40)),((20 35,45 20,30 5,10 10,10 30,20 35),(30 20,20 25,20 15,30 20))),LINESTRING(2 3,3 4))" - geom = mapnik.Geometry.from_wkt(wkt) - eq_(geom.type(),mapnik.GeometryType.GeometryCollection) - -def test_creating_feature_from_geojson(): - json_feat = { - "type": "Feature", - "geometry": {"type": "Point", "coordinates": [-122,48]}, - "properties": {"name": "value"} - } - ctx = mapnik.Context() - feat = mapnik.Feature.from_geojson(json.dumps(json_feat),ctx) - eq_(feat.id(),1) - eq_(feat['name'],u'value') - -def test_handling_geojson_null_geoms(): - for j in geojson_nulls: - ctx = mapnik.Context() - out_json = mapnik.Feature.from_geojson(j,ctx).to_geojson() - expected = '{"type":"Feature","id":1,"geometry":null,"properties":{}}' - eq_(out_json,expected) - # ensure it round trips - eq_(mapnik.Feature.from_geojson(out_json,ctx).to_geojson(),expected) - - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/grayscale_test.py b/tests/python_tests/grayscale_test.py deleted file mode 100644 index 2bcf8361b..000000000 --- a/tests/python_tests/grayscale_test.py +++ /dev/null @@ -1,13 +0,0 @@ -import mapnik -from nose.tools import eq_ -from utilities import run_all - -def test_grayscale_conversion(): - im = mapnik.Image(2,2) - im.fill(mapnik.Color('white')) - im.set_grayscale_to_alpha() - pixel = im.get_pixel(0,0) - eq_((pixel >> 24) & 0xff,255); - -if __name__ == "__main__": - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/image_encoding_speed_test.py b/tests/python_tests/image_encoding_speed_test.py deleted file mode 100644 index 75bbc85af..000000000 --- a/tests/python_tests/image_encoding_speed_test.py +++ /dev/null @@ -1,124 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import os, mapnik -from timeit import Timer, time -from utilities import execution_path, run_all - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -combinations = ['png', - 'png8', - 'png8:m=o', - 'png8:m=h', - 'png8:m=o:t=0', - 'png8:m=o:t=1', - 'png8:m=o:t=2', - 'png8:m=h:t=0', - 'png8:m=h:t=1', - 'png8:m=h:t=2', - 'png:z=1', - 'png:z=1:t=0', # forces rbg, no a - 'png8:z=1', - 'png8:z=1:m=o', - 'png8:z=1:m=h', - 'png8:z=1:c=1', - 'png8:z=1:c=24', - 'png8:z=1:c=64', - 'png8:z=1:c=128', - 'png8:z=1:c=200', - 'png8:z=1:c=255', - 'png8:z=9:c=64', - 'png8:z=9:c=128', - 'png8:z=9:c=200', - 'png8:z=1:c=50:m=h', - 'png8:z=1:c=1:m=o', - 'png8:z=1:c=1:m=o:s=filtered', - 'png:z=1:s=filtered', - 'png:z=1:s=huff', - 'png:z=1:s=rle', - 'png8:m=h:g=2.0', - 'png8:m=h:g=1.0', - 'png:e=miniz', - 'png8:e=miniz' - ] - -tiles = [ -'blank', -'solid', -'many_colors', -'aerial_24' -] - -iterations = 10 - -def do_encoding(): - - global image - - results = {} - sortable = {} - - def run(func, im, format, t): - global image - image = im - start = time.time() - set = t.repeat(iterations,1) - elapsed = (time.time() - start) - min_ = min(set)*1000 - avg = (sum(set)/len(set))*1000 - name = func.__name__ + ' ' + format - results[name] = [min_,avg,elapsed*1000,name,len(func())] - sortable[name] = [min_] - - if 'blank' in tiles: - def blank(): - return eval('image.tostring("%s")' % c) - blank_im = mapnik.Image(512,512) - for c in combinations: - t = Timer(blank) - run(blank,blank_im,c,t) - - if 'solid' in tiles: - def solid(): - return eval('image.tostring("%s")' % c) - solid_im = mapnik.Image(512,512) - solid_im.fill(mapnik.Color("#f2efe9")) - for c in combinations: - t = Timer(solid) - run(solid,solid_im,c,t) - - if 'many_colors' in tiles: - def many_colors(): - return eval('image.tostring("%s")' % c) - # lots of colors: http://tile.osm.org/13/4194/2747.png - many_colors_im = mapnik.Image.open('../data/images/13_4194_2747.png') - for c in combinations: - t = Timer(many_colors) - run(many_colors,many_colors_im,c,t) - - if 'aerial_24' in tiles: - def aerial_24(): - return eval('image.tostring("%s")' % c) - aerial_24_im = mapnik.Image.open('../data/images/12_654_1580.png') - for c in combinations: - t = Timer(aerial_24) - run(aerial_24,aerial_24_im,c,t) - - for key, value in sorted(sortable.iteritems(), key=lambda (k,v): (v,k)): - s = results[key] - min_ = str(s[0])[:6] - avg = str(s[1])[:6] - elapsed = str(s[2])[:6] - name = s[3] - size = s[4] - print 'min: %sms | avg: %sms | total: %sms | len: %s <-- %s' % (min_,avg,elapsed,size,name) - - -if __name__ == "__main__": - setup() - do_encoding() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/image_filters_test.py b/tests/python_tests/image_filters_test.py deleted file mode 100644 index 269d64ca2..000000000 --- a/tests/python_tests/image_filters_test.py +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_ -from utilities import execution_path, run_all -from utilities import side_by_side_image -import os, mapnik -import re - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def replace_style(m, name, style): - m.remove_style(name) - m.append_style(name, style) - -def test_append(): - s = mapnik.Style() - eq_(s.image_filters,'') - s.image_filters = 'gray' - eq_(s.image_filters,'gray') - s.image_filters = 'sharpen' - eq_(s.image_filters,'sharpen') - -if 'shape' in mapnik.DatasourceCache.plugin_names(): - def test_style_level_image_filter(): - m = mapnik.Map(256, 256) - mapnik.load_map(m, '../data/good_maps/style_level_image_filter.xml') - m.zoom_all() - successes = [] - fails = [] - for name in ("", "agg-stack-blur(2,2)", "blur", - "edge-detect", "emboss", "gray", "invert", - "sharpen", "sobel", "x-gradient", "y-gradient"): - if name == "": - filename = "none" - else: - filename = re.sub(r"[^-_a-z.0-9]", "", name) - # find_style returns a copy of the style object - style_markers = m.find_style("markers") - style_markers.image_filters = name - style_labels = m.find_style("labels") - style_labels.image_filters = name - # replace the original style with the modified one - replace_style(m, "markers", style_markers) - replace_style(m, "labels", style_labels) - im = mapnik.Image(m.width, m.height) - mapnik.render(m, im) - actual = '/tmp/mapnik-style-image-filter-' + filename + '.png' - expected = 'images/style-image-filter/' + filename + '.png' - im.save(actual,"png32") - if not os.path.exists(expected) or os.environ.get('UPDATE'): - print 'generating expected test image: %s' % expected - im.save(expected,'png32') - expected_im = mapnik.Image.open(expected) - # compare them - if im.tostring('png32') == expected_im.tostring('png32'): - successes.append(name) - else: - fails.append('failed comparing actual (%s) and expected(%s)' % (actual,'tests/python_tests/'+ expected)) - fail_im = side_by_side_image(expected_im, im) - fail_im.save('/tmp/mapnik-style-image-filter-' + filename + '.fail.png','png32') - eq_(len(fails), 0, '\n'+'\n'.join(fails)) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/image_test.py b/tests/python_tests/image_test.py deleted file mode 100644 index 3a1dd9a81..000000000 --- a/tests/python_tests/image_test.py +++ /dev/null @@ -1,336 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import os, mapnik -from nose.tools import eq_,raises, assert_almost_equal -from utilities import execution_path, run_all, get_unique_colors - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_type(): - im = mapnik.Image(256, 256) - eq_(im.get_type(), mapnik.ImageType.rgba8) - im = mapnik.Image(256, 256, mapnik.ImageType.gray8) - eq_(im.get_type(), mapnik.ImageType.gray8) - -def test_image_premultiply(): - im = mapnik.Image(256,256) - eq_(im.premultiplied(),False) - # Premultiply should return true that it worked - eq_(im.premultiply(), True) - eq_(im.premultiplied(),True) - # Premultipling again should return false as nothing should happen - eq_(im.premultiply(), False) - eq_(im.premultiplied(),True) - # Demultiply should return true that it worked - eq_(im.demultiply(), True) - eq_(im.premultiplied(),False) - # Demultiply again should not work and return false as it did nothing - eq_(im.demultiply(), False) - eq_(im.premultiplied(),False) - -def test_image_premultiply_values(): - im = mapnik.Image(256,256) - im.fill(mapnik.Color(16, 33, 255, 128)) - im.premultiply() - c = im.get_pixel(0,0, True) - eq_(c.r, 8) - eq_(c.g, 17) - eq_(c.b, 128) - eq_(c.a, 128) - im.demultiply() - # Do to the nature of this operation the result will not be exactly the same - c = im.get_pixel(0,0,True) - eq_(c.r,15) - eq_(c.g,33) - eq_(c.b,255) - eq_(c.a,128) - -def test_background(): - im = mapnik.Image(256,256) - eq_(im.premultiplied(), False) - im.fill(mapnik.Color(32,64,125,128)) - eq_(im.premultiplied(), False) - c = im.get_pixel(0,0,True) - eq_(c.get_premultiplied(), False) - eq_(c.r,32) - eq_(c.g,64) - eq_(c.b,125) - eq_(c.a,128) - # Now again with a premultiplied alpha - im.fill(mapnik.Color(32,64,125,128,True)) - eq_(im.premultiplied(), True) - c = im.get_pixel(0,0,True) - eq_(c.get_premultiplied(), True) - eq_(c.r,32) - eq_(c.g,64) - eq_(c.b,125) - eq_(c.a,128) - -def test_set_and_get_pixel(): - # Create an image that is not premultiplied - im = mapnik.Image(256,256) - c0 = mapnik.Color(16,33,255,128) - c0_pre = mapnik.Color(16,33,255,128, True) - im.set_pixel(0,0,c0) - im.set_pixel(1,1,c0_pre) - # No differences for non premultiplied pixels - c1_int = mapnik.Color(im.get_pixel(0,0)) - eq_(c0.r, c1_int.r) - eq_(c0.g, c1_int.g) - eq_(c0.b, c1_int.b) - eq_(c0.a, c1_int.a) - c1 = im.get_pixel(0,0,True) - eq_(c0.r, c1.r) - eq_(c0.g, c1.g) - eq_(c0.b, c1.b) - eq_(c0.a, c1.a) - # The premultiplied Color should be demultiplied before being applied. - c0_pre.demultiply() - c1_int = mapnik.Color(im.get_pixel(1,1)) - eq_(c0_pre.r, c1_int.r) - eq_(c0_pre.g, c1_int.g) - eq_(c0_pre.b, c1_int.b) - eq_(c0_pre.a, c1_int.a) - c1 = im.get_pixel(1,1,True) - eq_(c0_pre.r, c1.r) - eq_(c0_pre.g, c1.g) - eq_(c0_pre.b, c1.b) - eq_(c0_pre.a, c1.a) - - # Now create a new image that is premultiplied - im = mapnik.Image(256,256, mapnik.ImageType.rgba8, True, True) - c0 = mapnik.Color(16,33,255,128) - c0_pre = mapnik.Color(16,33,255,128, True) - im.set_pixel(0,0,c0) - im.set_pixel(1,1,c0_pre) - # It should have put pixels that are the same as premultiplied so premultiply c0 - c0.premultiply() - c1_int = mapnik.Color(im.get_pixel(0,0)) - eq_(c0.r, c1_int.r) - eq_(c0.g, c1_int.g) - eq_(c0.b, c1_int.b) - eq_(c0.a, c1_int.a) - c1 = im.get_pixel(0,0,True) - eq_(c0.r, c1.r) - eq_(c0.g, c1.g) - eq_(c0.b, c1.b) - eq_(c0.a, c1.a) - # The premultiplied Color should be the same though - c1_int = mapnik.Color(im.get_pixel(1,1)) - eq_(c0_pre.r, c1_int.r) - eq_(c0_pre.g, c1_int.g) - eq_(c0_pre.b, c1_int.b) - eq_(c0_pre.a, c1_int.a) - c1 = im.get_pixel(1,1,True) - eq_(c0_pre.r, c1.r) - eq_(c0_pre.g, c1.g) - eq_(c0_pre.b, c1.b) - eq_(c0_pre.a, c1.a) - -def test_pixel_gray8(): - im = mapnik.Image(4,4,mapnik.ImageType.gray8) - val_list = range(20) - for v in val_list: - im.set_pixel(0,0, v) - eq_(im.get_pixel(0,0), v) - im.set_pixel(0,0, -v) - eq_(im.get_pixel(0,0), 0) - -def test_pixel_gray8s(): - im = mapnik.Image(4,4,mapnik.ImageType.gray8s) - val_list = range(20) - for v in val_list: - im.set_pixel(0,0, v) - eq_(im.get_pixel(0,0), v) - im.set_pixel(0,0, -v) - eq_(im.get_pixel(0,0), -v) - -def test_pixel_gray16(): - im = mapnik.Image(4,4,mapnik.ImageType.gray16) - val_list = range(20) - for v in val_list: - im.set_pixel(0,0, v) - eq_(im.get_pixel(0,0), v) - im.set_pixel(0,0, -v) - eq_(im.get_pixel(0,0), 0) - -def test_pixel_gray16s(): - im = mapnik.Image(4,4,mapnik.ImageType.gray16s) - val_list = range(20) - for v in val_list: - im.set_pixel(0,0, v) - eq_(im.get_pixel(0,0), v) - im.set_pixel(0,0, -v) - eq_(im.get_pixel(0,0), -v) - -def test_pixel_gray32(): - im = mapnik.Image(4,4,mapnik.ImageType.gray32) - val_list = range(20) - for v in val_list: - im.set_pixel(0,0, v) - eq_(im.get_pixel(0,0), v) - im.set_pixel(0,0, -v) - eq_(im.get_pixel(0,0), 0) - -def test_pixel_gray32s(): - im = mapnik.Image(4,4,mapnik.ImageType.gray32s) - val_list = range(20) - for v in val_list: - im.set_pixel(0,0, v) - eq_(im.get_pixel(0,0), v) - im.set_pixel(0,0, -v) - eq_(im.get_pixel(0,0), -v) - -def test_pixel_gray64(): - im = mapnik.Image(4,4,mapnik.ImageType.gray64) - val_list = range(20) - for v in val_list: - im.set_pixel(0,0, v) - eq_(im.get_pixel(0,0), v) - im.set_pixel(0,0, -v) - eq_(im.get_pixel(0,0), 0) - -def test_pixel_gray64s(): - im = mapnik.Image(4,4,mapnik.ImageType.gray64s) - val_list = range(20) - for v in val_list: - im.set_pixel(0,0, v) - eq_(im.get_pixel(0,0), v) - im.set_pixel(0,0, -v) - eq_(im.get_pixel(0,0), -v) - -def test_pixel_floats(): - im = mapnik.Image(4,4,mapnik.ImageType.gray32f) - val_list = [0.9, 0.99, 0.999, 0.9999, 0.99999, 1, 1.0001, 1.001, 1.01, 1.1] - for v in val_list: - im.set_pixel(0,0, v) - assert_almost_equal(im.get_pixel(0,0), v) - im.set_pixel(0,0, -v) - assert_almost_equal(im.get_pixel(0,0), -v) - -def test_pixel_doubles(): - im = mapnik.Image(4,4,mapnik.ImageType.gray64f) - val_list = [0.9, 0.99, 0.999, 0.9999, 0.99999, 1, 1.0001, 1.001, 1.01, 1.1] - for v in val_list: - im.set_pixel(0,0, v) - assert_almost_equal(im.get_pixel(0,0), v) - im.set_pixel(0,0, -v) - assert_almost_equal(im.get_pixel(0,0), -v) - -def test_pixel_overflow(): - im = mapnik.Image(4,4,mapnik.ImageType.gray8) - im.set_pixel(0,0,256) - eq_(im.get_pixel(0,0),255) - -def test_pixel_underflow(): - im = mapnik.Image(4,4,mapnik.ImageType.gray8) - im.set_pixel(0,0,-1) - eq_(im.get_pixel(0,0),0) - im = mapnik.Image(4,4,mapnik.ImageType.gray16) - im.set_pixel(0,0,-1) - eq_(im.get_pixel(0,0),0) - -@raises(IndexError) -def test_set_pixel_out_of_range_1(): - im = mapnik.Image(4,4) - c = mapnik.Color('blue') - im.set_pixel(5,5,c) - -@raises(OverflowError) -def test_set_pixel_out_of_range_2(): - im = mapnik.Image(4,4) - c = mapnik.Color('blue') - im.set_pixel(-1,1,c) - -@raises(IndexError) -def test_get_pixel_out_of_range_1(): - im = mapnik.Image(4,4) - c = im.get_pixel(5,5) - -@raises(OverflowError) -def test_get_pixel_out_of_range_2(): - im = mapnik.Image(4,4) - c = im.get_pixel(-1,1) - -@raises(IndexError) -def test_get_pixel_color_out_of_range_1(): - im = mapnik.Image(4,4) - c = im.get_pixel(5,5,True) - -@raises(OverflowError) -def test_get_pixel_color_out_of_range_2(): - im = mapnik.Image(4,4) - c = im.get_pixel(-1,1,True) - -def test_set_color_to_alpha(): - im = mapnik.Image(256,256) - im.fill(mapnik.Color('rgba(12,12,12,255)')) - eq_(get_unique_colors(im), ['rgba(12,12,12,255)']) - im.set_color_to_alpha(mapnik.Color('rgba(12,12,12,0)')) - eq_(get_unique_colors(im), ['rgba(0,0,0,0)']) - -@raises(RuntimeError) -def test_negative_image_dimensions(): - # TODO - this may have regressed in https://github.com/mapnik/mapnik/commit/4f3521ac24b61fc8ae8fd344a16dc3a5fdf15af7 - im = mapnik.Image(-40,40) - # should not get here - eq_(im.width(),0) - eq_(im.height(),0) - -def test_jpeg_round_trip(): - filepath = '/tmp/mapnik-jpeg-io.jpeg' - im = mapnik.Image(255,267) - im.fill(mapnik.Color('rgba(1,2,3,.5)')) - im.save(filepath,'jpeg') - im2 = mapnik.Image.open(filepath) - im3 = mapnik.Image.fromstring(open(filepath,'r').read()) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(im.width(),im3.width()) - eq_(im.height(),im3.height()) - eq_(len(im.tostring()),len(im2.tostring())) - eq_(len(im.tostring('jpeg')),len(im2.tostring('jpeg'))) - eq_(len(im.tostring()),len(im3.tostring())) - eq_(len(im.tostring('jpeg')),len(im3.tostring('jpeg'))) - -def test_png_round_trip(): - filepath = '/tmp/mapnik-png-io.png' - im = mapnik.Image(255,267) - im.fill(mapnik.Color('rgba(1,2,3,.5)')) - im.save(filepath,'png') - im2 = mapnik.Image.open(filepath) - im3 = mapnik.Image.fromstring(open(filepath,'r').read()) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(im.width(),im3.width()) - eq_(im.height(),im3.height()) - eq_(len(im.tostring()),len(im2.tostring())) - eq_(len(im.tostring('png')),len(im2.tostring('png'))) - eq_(len(im.tostring('png8')),len(im2.tostring('png8'))) - eq_(len(im.tostring()),len(im3.tostring())) - eq_(len(im.tostring('png')),len(im3.tostring('png'))) - eq_(len(im.tostring('png8')),len(im3.tostring('png8'))) - -def test_image_open_from_string(): - filepath = '../data/images/dummy.png' - im1 = mapnik.Image.open(filepath) - im2 = mapnik.Image.fromstring(open(filepath,'rb').read()) - eq_(im1.width(),im2.width()) - length = len(im1.tostring()) - eq_(length,len(im2.tostring())) - eq_(len(mapnik.Image.fromstring(im1.tostring('png')).tostring()),length) - eq_(len(mapnik.Image.fromstring(im1.tostring('jpeg')).tostring()),length) - eq_(len(mapnik.Image.frombuffer(buffer(im1.tostring('png'))).tostring()),length) - eq_(len(mapnik.Image.frombuffer(buffer(im1.tostring('jpeg'))).tostring()),length) - - # TODO - https://github.com/mapnik/mapnik/issues/1831 - eq_(len(mapnik.Image.fromstring(im1.tostring('tiff')).tostring()),length) - eq_(len(mapnik.Image.frombuffer(buffer(im1.tostring('tiff'))).tostring()),length) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/image_tiff_test.py b/tests/python_tests/image_tiff_test.py deleted file mode 100644 index e0535d0ae..000000000 --- a/tests/python_tests/image_tiff_test.py +++ /dev/null @@ -1,335 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import os, mapnik -import hashlib -from nose.tools import eq_, assert_not_equal -from utilities import execution_path, run_all - -def hashstr(var): - return hashlib.md5(var).hexdigest() - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_tiff_round_trip_scanline(): - filepath = '/tmp/mapnik-tiff-io-scanline.tiff' - im = mapnik.Image(255,267) - im.fill(mapnik.Color('rgba(12,255,128,.5)')) - org_str = hashstr(im.tostring()) - im.save(filepath,'tiff:method=scanline') - im2 = mapnik.Image.open(filepath) - im3 = mapnik.Image.fromstring(open(filepath,'r').read()) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(im.width(),im3.width()) - eq_(im.height(),im3.height()) - eq_(hashstr(im.tostring()), org_str) - # This won't be the same the first time around because the im is not premultiplied and im2 is - assert_not_equal(hashstr(im.tostring()),hashstr(im2.tostring())) - assert_not_equal(hashstr(im.tostring('tiff:method=scanline')),hashstr(im2.tostring('tiff:method=scanline'))) - # Now premultiply - im.premultiply() - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=scanline')),hashstr(im2.tostring('tiff:method=scanline'))) - eq_(hashstr(im2.tostring()),hashstr(im3.tostring())) - eq_(hashstr(im2.tostring('tiff:method=scanline')),hashstr(im3.tostring('tiff:method=scanline'))) - -def test_tiff_round_trip_stripped(): - filepath = '/tmp/mapnik-tiff-io-stripped.tiff' - im = mapnik.Image(255,267) - im.fill(mapnik.Color('rgba(12,255,128,.5)')) - org_str = hashstr(im.tostring()) - im.save(filepath,'tiff:method=stripped') - im2 = mapnik.Image.open(filepath) - im2.save('/tmp/mapnik-tiff-io-stripped2.tiff','tiff:method=stripped') - im3 = mapnik.Image.fromstring(open(filepath,'r').read()) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(im.width(),im3.width()) - eq_(im.height(),im3.height()) - # Because one will end up with UNASSOC alpha tag which internally the TIFF reader will premultiply, the first to string will not be the same due to the - # difference in tags. - assert_not_equal(hashstr(im.tostring()),hashstr(im2.tostring())) - assert_not_equal(hashstr(im.tostring('tiff:method=stripped')),hashstr(im2.tostring('tiff:method=stripped'))) - # Now if we premultiply they will be exactly the same - im.premultiply() - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=stripped')),hashstr(im2.tostring('tiff:method=stripped'))) - eq_(hashstr(im2.tostring()),hashstr(im3.tostring())) - # Both of these started out premultiplied, so this round trip should be exactly the same! - eq_(hashstr(im2.tostring('tiff:method=stripped')),hashstr(im3.tostring('tiff:method=stripped'))) - -def test_tiff_round_trip_rows_stripped(): - filepath = '/tmp/mapnik-tiff-io-rows_stripped.tiff' - filepath2 = '/tmp/mapnik-tiff-io-rows_stripped2.tiff' - im = mapnik.Image(255,267) - im.fill(mapnik.Color('rgba(12,255,128,.5)')) - c = im.get_pixel(0,0,True) - eq_(c.r, 12) - eq_(c.g, 255) - eq_(c.b, 128) - eq_(c.a, 128) - eq_(c.get_premultiplied(), False) - im.save(filepath,'tiff:method=stripped:rows_per_strip=8') - im2 = mapnik.Image.open(filepath) - c2 = im2.get_pixel(0,0,True) - eq_(c2.r, 6) - eq_(c2.g, 128) - eq_(c2.b, 64) - eq_(c2.a, 128) - eq_(c2.get_premultiplied(), True) - im2.save(filepath2,'tiff:method=stripped:rows_per_strip=8') - im3 = mapnik.Image.fromstring(open(filepath,'r').read()) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(im.width(),im3.width()) - eq_(im.height(),im3.height()) - # Because one will end up with UNASSOC alpha tag which internally the TIFF reader will premultiply, the first to string will not be the same due to the - # difference in tags. - assert_not_equal(hashstr(im.tostring()),hashstr(im2.tostring())) - assert_not_equal(hashstr(im.tostring('tiff:method=stripped:rows_per_strip=8')),hashstr(im2.tostring('tiff:method=stripped:rows_per_strip=8'))) - # Now premultiply the first image and they will be the same! - im.premultiply() - eq_(hashstr(im.tostring('tiff:method=stripped:rows_per_strip=8')),hashstr(im2.tostring('tiff:method=stripped:rows_per_strip=8'))) - eq_(hashstr(im2.tostring()),hashstr(im3.tostring())) - # Both of these started out premultiplied, so this round trip should be exactly the same! - eq_(hashstr(im2.tostring('tiff:method=stripped:rows_per_strip=8')),hashstr(im3.tostring('tiff:method=stripped:rows_per_strip=8'))) - -def test_tiff_round_trip_buffered_tiled(): - filepath = '/tmp/mapnik-tiff-io-buffered-tiled.tiff' - filepath2 = '/tmp/mapnik-tiff-io-buffered-tiled2.tiff' - filepath3 = '/tmp/mapnik-tiff-io-buffered-tiled3.tiff' - im = mapnik.Image(255,267) - im.fill(mapnik.Color('rgba(33,255,128,.5)')) - c = im.get_pixel(0,0,True) - eq_(c.r, 33) - eq_(c.g, 255) - eq_(c.b, 128) - eq_(c.a, 128) - eq_(c.get_premultiplied(), False) - im.save(filepath,'tiff:method=tiled:tile_width=32:tile_height=32') - im2 = mapnik.Image.open(filepath) - c2 = im2.get_pixel(0,0,True) - eq_(c2.r, 17) - eq_(c2.g, 128) - eq_(c2.b, 64) - eq_(c2.a, 128) - eq_(c2.get_premultiplied(), True) - im3 = mapnik.Image.fromstring(open(filepath,'r').read()) - im2.save(filepath2, 'tiff:method=tiled:tile_width=32:tile_height=32') - im3.save(filepath3, 'tiff:method=tiled:tile_width=32:tile_height=32') - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(im.width(),im3.width()) - eq_(im.height(),im3.height()) - # Because one will end up with UNASSOC alpha tag which internally the TIFF reader will premultiply, the first to string will not be the same due to the - # difference in tags. - assert_not_equal(hashstr(im.tostring()),hashstr(im2.tostring())) - assert_not_equal(hashstr(im.tostring('tiff:method=tiled:tile_width=32:tile_height=32')),hashstr(im2.tostring('tiff:method=tiled:tile_width=32:tile_height=32'))) - # Now premultiply the first image and they should be the same - im.premultiply() - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=tiled:tile_width=32:tile_height=32')),hashstr(im2.tostring('tiff:method=tiled:tile_width=32:tile_height=32'))) - eq_(hashstr(im2.tostring()),hashstr(im3.tostring())) - # Both of these started out premultiplied, so this round trip should be exactly the same! - eq_(hashstr(im2.tostring('tiff:method=tiled:tile_width=32:tile_height=32')),hashstr(im3.tostring('tiff:method=tiled:tile_width=32:tile_height=32'))) - -def test_tiff_round_trip_tiled(): - filepath = '/tmp/mapnik-tiff-io-tiled.tiff' - im = mapnik.Image(256,256) - im.fill(mapnik.Color('rgba(1,255,128,.5)')) - im.save(filepath,'tiff:method=tiled') - im2 = mapnik.Image.open(filepath) - im3 = mapnik.Image.fromstring(open(filepath,'r').read()) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(im.width(),im3.width()) - eq_(im.height(),im3.height()) - # Because one will end up with UNASSOC alpha tag which internally the TIFF reader will premultiply, the first to string will not be the same due to the - # difference in tags. - assert_not_equal(hashstr(im.tostring()),hashstr(im2.tostring())) - assert_not_equal(hashstr(im.tostring('tiff:method=tiled')),hashstr(im2.tostring('tiff:method=tiled'))) - # Now premultiply the first image and they will be exactly the same. - im.premultiply() - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=tiled')),hashstr(im2.tostring('tiff:method=tiled'))) - eq_(hashstr(im2.tostring()),hashstr(im3.tostring())) - # Both of these started out premultiplied, so this round trip should be exactly the same! - eq_(hashstr(im2.tostring('tiff:method=tiled')),hashstr(im3.tostring('tiff:method=tiled'))) - - -def test_tiff_rgb8_compare(): - filepath1 = '../data/tiff/ndvi_256x256_rgb8_striped.tif' - filepath2 = '/tmp/mapnik-tiff-rgb8.tiff' - im = mapnik.Image.open(filepath1) - im.save(filepath2,'tiff') - im2 = mapnik.Image.open(filepath2) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff')),hashstr(im2.tostring('tiff'))) - # should not be a blank image - eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(),im.height(),mapnik.ImageType.rgba8).tostring("tiff")),True) - -def test_tiff_rgba8_compare_scanline(): - filepath1 = '../data/tiff/ndvi_256x256_rgba8_striped.tif' - filepath2 = '/tmp/mapnik-tiff-rgba8-scanline.tiff' - im = mapnik.Image.open(filepath1) - im.save(filepath2,'tiff:method=scanline') - im2 = mapnik.Image.open(filepath2) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=scanline')),hashstr(im2.tostring('tiff:method=scanline'))) - # should not be a blank image - eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(),im.height(),mapnik.ImageType.rgba8).tostring("tiff")),True) - -def test_tiff_rgba8_compare_stripped(): - filepath1 = '../data/tiff/ndvi_256x256_rgba8_striped.tif' - filepath2 = '/tmp/mapnik-tiff-rgba8-stripped.tiff' - im = mapnik.Image.open(filepath1) - im.save(filepath2,'tiff:method=stripped') - im2 = mapnik.Image.open(filepath2) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=stripped')),hashstr(im2.tostring('tiff:method=stripped'))) - # should not be a blank image - eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(),im.height(),mapnik.ImageType.rgba8).tostring("tiff")),True) - -def test_tiff_rgba8_compare_tiled(): - filepath1 = '../data/tiff/ndvi_256x256_rgba8_striped.tif' - filepath2 = '/tmp/mapnik-tiff-rgba8-stripped.tiff' - im = mapnik.Image.open(filepath1) - im.save(filepath2,'tiff:method=tiled') - im2 = mapnik.Image.open(filepath2) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=tiled')),hashstr(im2.tostring('tiff:method=tiled'))) - # should not be a blank image - eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(),im.height(),mapnik.ImageType.rgba8).tostring("tiff")),True) - -def test_tiff_gray8_compare_scanline(): - filepath1 = '../data/tiff/ndvi_256x256_gray8_striped.tif' - filepath2 = '/tmp/mapnik-tiff-gray8-scanline.tiff' - im = mapnik.Image.open(filepath1) - im.save(filepath2,'tiff:method=scanline') - im2 = mapnik.Image.open(filepath2) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=scanline')),hashstr(im2.tostring('tiff:method=scanline'))) - # should not be a blank image - eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(),im.height(),mapnik.ImageType.gray8).tostring("tiff")),True) - -def test_tiff_gray8_compare_stripped(): - filepath1 = '../data/tiff/ndvi_256x256_gray8_striped.tif' - filepath2 = '/tmp/mapnik-tiff-gray8-stripped.tiff' - im = mapnik.Image.open(filepath1) - im.save(filepath2,'tiff:method=stripped') - im2 = mapnik.Image.open(filepath2) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=stripped')),hashstr(im2.tostring('tiff:method=stripped'))) - # should not be a blank image - eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(),im.height(),mapnik.ImageType.gray8).tostring("tiff")),True) - -def test_tiff_gray8_compare_tiled(): - filepath1 = '../data/tiff/ndvi_256x256_gray8_striped.tif' - filepath2 = '/tmp/mapnik-tiff-gray8-tiled.tiff' - im = mapnik.Image.open(filepath1) - im.save(filepath2,'tiff:method=tiled') - im2 = mapnik.Image.open(filepath2) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=tiled')),hashstr(im2.tostring('tiff:method=tiled'))) - # should not be a blank image - eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(),im.height(),mapnik.ImageType.gray8).tostring("tiff")),True) - -def test_tiff_gray16_compare_scanline(): - filepath1 = '../data/tiff/ndvi_256x256_gray16_striped.tif' - filepath2 = '/tmp/mapnik-tiff-gray16-scanline.tiff' - im = mapnik.Image.open(filepath1) - im.save(filepath2,'tiff:method=scanline') - im2 = mapnik.Image.open(filepath2) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=scanline')),hashstr(im2.tostring('tiff:method=scanline'))) - # should not be a blank image - eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(),im.height(),mapnik.ImageType.gray16).tostring("tiff")),True) - -def test_tiff_gray16_compare_stripped(): - filepath1 = '../data/tiff/ndvi_256x256_gray16_striped.tif' - filepath2 = '/tmp/mapnik-tiff-gray16-stripped.tiff' - im = mapnik.Image.open(filepath1) - im.save(filepath2,'tiff:method=stripped') - im2 = mapnik.Image.open(filepath2) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=stripped')),hashstr(im2.tostring('tiff:method=stripped'))) - # should not be a blank image - eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(),im.height(),mapnik.ImageType.gray16).tostring("tiff")),True) - -def test_tiff_gray16_compare_tiled(): - filepath1 = '../data/tiff/ndvi_256x256_gray16_striped.tif' - filepath2 = '/tmp/mapnik-tiff-gray16-tiled.tiff' - im = mapnik.Image.open(filepath1) - im.save(filepath2,'tiff:method=tiled') - im2 = mapnik.Image.open(filepath2) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=tiled')),hashstr(im2.tostring('tiff:method=tiled'))) - # should not be a blank image - eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(),im.height(),mapnik.ImageType.gray16).tostring("tiff")),True) - -def test_tiff_gray32f_compare_scanline(): - filepath1 = '../data/tiff/ndvi_256x256_gray32f_striped.tif' - filepath2 = '/tmp/mapnik-tiff-gray32f-scanline.tiff' - im = mapnik.Image.open(filepath1) - im.save(filepath2,'tiff:method=scanline') - im2 = mapnik.Image.open(filepath2) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=scanline')),hashstr(im2.tostring('tiff:method=scanline'))) - # should not be a blank image - eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(),im.height(),mapnik.ImageType.gray32f).tostring("tiff")),True) - -def test_tiff_gray32f_compare_stripped(): - filepath1 = '../data/tiff/ndvi_256x256_gray32f_striped.tif' - filepath2 = '/tmp/mapnik-tiff-gray32f-stripped.tiff' - im = mapnik.Image.open(filepath1) - im.save(filepath2,'tiff:method=stripped') - im2 = mapnik.Image.open(filepath2) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=stripped')),hashstr(im2.tostring('tiff:method=stripped'))) - # should not be a blank image - eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(),im.height(),mapnik.ImageType.gray32f).tostring("tiff")),True) - -def test_tiff_gray32f_compare_tiled(): - filepath1 = '../data/tiff/ndvi_256x256_gray32f_striped.tif' - filepath2 = '/tmp/mapnik-tiff-gray32f-tiled.tiff' - im = mapnik.Image.open(filepath1) - im.save(filepath2,'tiff:method=tiled') - im2 = mapnik.Image.open(filepath2) - eq_(im.width(),im2.width()) - eq_(im.height(),im2.height()) - eq_(hashstr(im.tostring()),hashstr(im2.tostring())) - eq_(hashstr(im.tostring('tiff:method=tiled')),hashstr(im2.tostring('tiff:method=tiled'))) - # should not be a blank image - eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(),im.height(),mapnik.ImageType.gray32f).tostring("tiff")),True) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/images/actual.png b/tests/python_tests/images/actual.png deleted file mode 100644 index adfa8568b..000000000 Binary files a/tests/python_tests/images/actual.png and /dev/null differ diff --git a/tests/python_tests/images/composited/clear.png b/tests/python_tests/images/composited/clear.png deleted file mode 100644 index 4fe9ab376..000000000 Binary files a/tests/python_tests/images/composited/clear.png and /dev/null differ diff --git a/tests/python_tests/images/composited/color.png b/tests/python_tests/images/composited/color.png deleted file mode 100644 index f9a687904..000000000 Binary files a/tests/python_tests/images/composited/color.png and /dev/null differ diff --git a/tests/python_tests/images/composited/color_burn.png b/tests/python_tests/images/composited/color_burn.png deleted file mode 100644 index af985bd99..000000000 Binary files a/tests/python_tests/images/composited/color_burn.png and /dev/null differ diff --git a/tests/python_tests/images/composited/color_dodge.png b/tests/python_tests/images/composited/color_dodge.png deleted file mode 100644 index 6c45b8589..000000000 Binary files a/tests/python_tests/images/composited/color_dodge.png and /dev/null differ diff --git a/tests/python_tests/images/composited/contrast.png b/tests/python_tests/images/composited/contrast.png deleted file mode 100644 index 54ea219f3..000000000 Binary files a/tests/python_tests/images/composited/contrast.png and /dev/null differ diff --git a/tests/python_tests/images/composited/darken.png b/tests/python_tests/images/composited/darken.png deleted file mode 100644 index 4324c0a3e..000000000 Binary files a/tests/python_tests/images/composited/darken.png and /dev/null differ diff --git a/tests/python_tests/images/composited/difference.png b/tests/python_tests/images/composited/difference.png deleted file mode 100644 index 312bded7f..000000000 Binary files a/tests/python_tests/images/composited/difference.png and /dev/null differ diff --git a/tests/python_tests/images/composited/divide.png b/tests/python_tests/images/composited/divide.png deleted file mode 100644 index 0a4b24f05..000000000 Binary files a/tests/python_tests/images/composited/divide.png and /dev/null differ diff --git a/tests/python_tests/images/composited/dst.png b/tests/python_tests/images/composited/dst.png deleted file mode 100644 index 14be3530a..000000000 Binary files a/tests/python_tests/images/composited/dst.png and /dev/null differ diff --git a/tests/python_tests/images/composited/dst_atop.png b/tests/python_tests/images/composited/dst_atop.png deleted file mode 100644 index 845c370c1..000000000 Binary files a/tests/python_tests/images/composited/dst_atop.png and /dev/null differ diff --git a/tests/python_tests/images/composited/dst_in.png b/tests/python_tests/images/composited/dst_in.png deleted file mode 100644 index 1664be091..000000000 Binary files a/tests/python_tests/images/composited/dst_in.png and /dev/null differ diff --git a/tests/python_tests/images/composited/dst_out.png b/tests/python_tests/images/composited/dst_out.png deleted file mode 100644 index eb943bc33..000000000 Binary files a/tests/python_tests/images/composited/dst_out.png and /dev/null differ diff --git a/tests/python_tests/images/composited/dst_over.png b/tests/python_tests/images/composited/dst_over.png deleted file mode 100644 index 51fe08eca..000000000 Binary files a/tests/python_tests/images/composited/dst_over.png and /dev/null differ diff --git a/tests/python_tests/images/composited/exclusion.png b/tests/python_tests/images/composited/exclusion.png deleted file mode 100644 index 6cf4fa78d..000000000 Binary files a/tests/python_tests/images/composited/exclusion.png and /dev/null differ diff --git a/tests/python_tests/images/composited/grain_extract.png b/tests/python_tests/images/composited/grain_extract.png deleted file mode 100644 index cfa03e113..000000000 Binary files a/tests/python_tests/images/composited/grain_extract.png and /dev/null differ diff --git a/tests/python_tests/images/composited/grain_merge.png b/tests/python_tests/images/composited/grain_merge.png deleted file mode 100644 index 78de8b5dc..000000000 Binary files a/tests/python_tests/images/composited/grain_merge.png and /dev/null differ diff --git a/tests/python_tests/images/composited/hard_light.png b/tests/python_tests/images/composited/hard_light.png deleted file mode 100644 index 9d878deab..000000000 Binary files a/tests/python_tests/images/composited/hard_light.png and /dev/null differ diff --git a/tests/python_tests/images/composited/hue.png b/tests/python_tests/images/composited/hue.png deleted file mode 100644 index 96ed7a6f1..000000000 Binary files a/tests/python_tests/images/composited/hue.png and /dev/null differ diff --git a/tests/python_tests/images/composited/invert.png b/tests/python_tests/images/composited/invert.png deleted file mode 100644 index 03e8e94b3..000000000 Binary files a/tests/python_tests/images/composited/invert.png and /dev/null differ diff --git a/tests/python_tests/images/composited/invert_rgb.png b/tests/python_tests/images/composited/invert_rgb.png deleted file mode 100644 index 5a8904f12..000000000 Binary files a/tests/python_tests/images/composited/invert_rgb.png and /dev/null differ diff --git a/tests/python_tests/images/composited/lighten.png b/tests/python_tests/images/composited/lighten.png deleted file mode 100644 index 3b8a86062..000000000 Binary files a/tests/python_tests/images/composited/lighten.png and /dev/null differ diff --git a/tests/python_tests/images/composited/linear_burn.png b/tests/python_tests/images/composited/linear_burn.png deleted file mode 100644 index 37ec4b768..000000000 Binary files a/tests/python_tests/images/composited/linear_burn.png and /dev/null differ diff --git a/tests/python_tests/images/composited/linear_dodge.png b/tests/python_tests/images/composited/linear_dodge.png deleted file mode 100644 index 848ddca17..000000000 Binary files a/tests/python_tests/images/composited/linear_dodge.png and /dev/null differ diff --git a/tests/python_tests/images/composited/minus.png b/tests/python_tests/images/composited/minus.png deleted file mode 100644 index 46a764719..000000000 Binary files a/tests/python_tests/images/composited/minus.png and /dev/null differ diff --git a/tests/python_tests/images/composited/multiply.png b/tests/python_tests/images/composited/multiply.png deleted file mode 100644 index 0c6880f5a..000000000 Binary files a/tests/python_tests/images/composited/multiply.png and /dev/null differ diff --git a/tests/python_tests/images/composited/overlay.png b/tests/python_tests/images/composited/overlay.png deleted file mode 100644 index 77df0d38a..000000000 Binary files a/tests/python_tests/images/composited/overlay.png and /dev/null differ diff --git a/tests/python_tests/images/composited/plus.png b/tests/python_tests/images/composited/plus.png deleted file mode 100644 index 6656c63c6..000000000 Binary files a/tests/python_tests/images/composited/plus.png and /dev/null differ diff --git a/tests/python_tests/images/composited/saturation.png b/tests/python_tests/images/composited/saturation.png deleted file mode 100644 index 52e9d6c95..000000000 Binary files a/tests/python_tests/images/composited/saturation.png and /dev/null differ diff --git a/tests/python_tests/images/composited/screen.png b/tests/python_tests/images/composited/screen.png deleted file mode 100644 index df6948615..000000000 Binary files a/tests/python_tests/images/composited/screen.png and /dev/null differ diff --git a/tests/python_tests/images/composited/soft_light.png b/tests/python_tests/images/composited/soft_light.png deleted file mode 100644 index 954bef335..000000000 Binary files a/tests/python_tests/images/composited/soft_light.png and /dev/null differ diff --git a/tests/python_tests/images/composited/src.png b/tests/python_tests/images/composited/src.png deleted file mode 100644 index 70aa18f01..000000000 Binary files a/tests/python_tests/images/composited/src.png and /dev/null differ diff --git a/tests/python_tests/images/composited/src_atop.png b/tests/python_tests/images/composited/src_atop.png deleted file mode 100644 index 5621a099e..000000000 Binary files a/tests/python_tests/images/composited/src_atop.png and /dev/null differ diff --git a/tests/python_tests/images/composited/src_in.png b/tests/python_tests/images/composited/src_in.png deleted file mode 100644 index c2dbc510e..000000000 Binary files a/tests/python_tests/images/composited/src_in.png and /dev/null differ diff --git a/tests/python_tests/images/composited/src_out.png b/tests/python_tests/images/composited/src_out.png deleted file mode 100644 index 4df0d0a25..000000000 Binary files a/tests/python_tests/images/composited/src_out.png and /dev/null differ diff --git a/tests/python_tests/images/composited/src_over.png b/tests/python_tests/images/composited/src_over.png deleted file mode 100644 index fcba78aeb..000000000 Binary files a/tests/python_tests/images/composited/src_over.png and /dev/null differ diff --git a/tests/python_tests/images/composited/value.png b/tests/python_tests/images/composited/value.png deleted file mode 100644 index 70bcf4eb3..000000000 Binary files a/tests/python_tests/images/composited/value.png and /dev/null differ diff --git a/tests/python_tests/images/composited/xor.png b/tests/python_tests/images/composited/xor.png deleted file mode 100644 index b6f2f2f3b..000000000 Binary files a/tests/python_tests/images/composited/xor.png and /dev/null differ diff --git a/tests/python_tests/images/expected.png b/tests/python_tests/images/expected.png deleted file mode 100644 index 5a27b46ee..000000000 Binary files a/tests/python_tests/images/expected.png and /dev/null differ diff --git a/tests/python_tests/images/pycairo/cairo-cairo-expected-reduced.png b/tests/python_tests/images/pycairo/cairo-cairo-expected-reduced.png deleted file mode 100644 index b99dc9194..000000000 Binary files a/tests/python_tests/images/pycairo/cairo-cairo-expected-reduced.png and /dev/null differ diff --git a/tests/python_tests/images/pycairo/cairo-cairo-expected.pdf b/tests/python_tests/images/pycairo/cairo-cairo-expected.pdf deleted file mode 100644 index 220a9b210..000000000 Binary files a/tests/python_tests/images/pycairo/cairo-cairo-expected.pdf and /dev/null differ diff --git a/tests/python_tests/images/pycairo/cairo-cairo-expected.png b/tests/python_tests/images/pycairo/cairo-cairo-expected.png deleted file mode 100644 index 3a99f5e73..000000000 Binary files a/tests/python_tests/images/pycairo/cairo-cairo-expected.png and /dev/null differ diff --git a/tests/python_tests/images/pycairo/cairo-cairo-expected.svg b/tests/python_tests/images/pycairo/cairo-cairo-expected.svg deleted file mode 100644 index 18d73432d..000000000 --- a/tests/python_tests/images/pycairo/cairo-cairo-expected.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/python_tests/images/pycairo/cairo-surface-expected.building.pdf b/tests/python_tests/images/pycairo/cairo-surface-expected.building.pdf deleted file mode 100644 index 11559bb2b..000000000 Binary files a/tests/python_tests/images/pycairo/cairo-surface-expected.building.pdf and /dev/null differ diff --git a/tests/python_tests/images/pycairo/cairo-surface-expected.building.svg b/tests/python_tests/images/pycairo/cairo-surface-expected.building.svg deleted file mode 100644 index 78bc15e3d..000000000 --- a/tests/python_tests/images/pycairo/cairo-surface-expected.building.svg +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/python_tests/images/pycairo/cairo-surface-expected.point.pdf b/tests/python_tests/images/pycairo/cairo-surface-expected.point.pdf deleted file mode 100644 index eff8ca634..000000000 Binary files a/tests/python_tests/images/pycairo/cairo-surface-expected.point.pdf and /dev/null differ diff --git a/tests/python_tests/images/pycairo/cairo-surface-expected.point.svg b/tests/python_tests/images/pycairo/cairo-surface-expected.point.svg deleted file mode 100644 index 0b73c8c0b..000000000 --- a/tests/python_tests/images/pycairo/cairo-surface-expected.point.svg +++ /dev/null @@ -1,413 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/python_tests/images/pycairo/cairo-surface-expected.polygon.pdf b/tests/python_tests/images/pycairo/cairo-surface-expected.polygon.pdf deleted file mode 100644 index 201bb9b03..000000000 Binary files a/tests/python_tests/images/pycairo/cairo-surface-expected.polygon.pdf and /dev/null differ diff --git a/tests/python_tests/images/pycairo/cairo-surface-expected.polygon.svg b/tests/python_tests/images/pycairo/cairo-surface-expected.polygon.svg deleted file mode 100644 index 4f2a943cd..000000000 --- a/tests/python_tests/images/pycairo/cairo-surface-expected.polygon.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/python_tests/images/style-comp-op/clear.png b/tests/python_tests/images/style-comp-op/clear.png deleted file mode 100644 index 4fe9ab376..000000000 Binary files a/tests/python_tests/images/style-comp-op/clear.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/color.png b/tests/python_tests/images/style-comp-op/color.png deleted file mode 100644 index 899eb1f15..000000000 Binary files a/tests/python_tests/images/style-comp-op/color.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/color_burn.png b/tests/python_tests/images/style-comp-op/color_burn.png deleted file mode 100644 index 498fb23e0..000000000 Binary files a/tests/python_tests/images/style-comp-op/color_burn.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/color_dodge.png b/tests/python_tests/images/style-comp-op/color_dodge.png deleted file mode 100644 index dea8ec3d1..000000000 Binary files a/tests/python_tests/images/style-comp-op/color_dodge.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/contrast.png b/tests/python_tests/images/style-comp-op/contrast.png deleted file mode 100644 index 2298154c1..000000000 Binary files a/tests/python_tests/images/style-comp-op/contrast.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/darken.png b/tests/python_tests/images/style-comp-op/darken.png deleted file mode 100644 index e0f265b3d..000000000 Binary files a/tests/python_tests/images/style-comp-op/darken.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/difference.png b/tests/python_tests/images/style-comp-op/difference.png deleted file mode 100644 index faef22d4c..000000000 Binary files a/tests/python_tests/images/style-comp-op/difference.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/divide.png b/tests/python_tests/images/style-comp-op/divide.png deleted file mode 100644 index caa5111f5..000000000 Binary files a/tests/python_tests/images/style-comp-op/divide.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/dst.png b/tests/python_tests/images/style-comp-op/dst.png deleted file mode 100644 index 6715d5794..000000000 Binary files a/tests/python_tests/images/style-comp-op/dst.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/dst_atop.png b/tests/python_tests/images/style-comp-op/dst_atop.png deleted file mode 100644 index dbb6b437c..000000000 Binary files a/tests/python_tests/images/style-comp-op/dst_atop.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/dst_in.png b/tests/python_tests/images/style-comp-op/dst_in.png deleted file mode 100644 index dbb6b437c..000000000 Binary files a/tests/python_tests/images/style-comp-op/dst_in.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/dst_out.png b/tests/python_tests/images/style-comp-op/dst_out.png deleted file mode 100644 index 59e0ff057..000000000 Binary files a/tests/python_tests/images/style-comp-op/dst_out.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/dst_over.png b/tests/python_tests/images/style-comp-op/dst_over.png deleted file mode 100644 index 6715d5794..000000000 Binary files a/tests/python_tests/images/style-comp-op/dst_over.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/exclusion.png b/tests/python_tests/images/style-comp-op/exclusion.png deleted file mode 100644 index 5a46d4541..000000000 Binary files a/tests/python_tests/images/style-comp-op/exclusion.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/grain_extract.png b/tests/python_tests/images/style-comp-op/grain_extract.png deleted file mode 100644 index a9a432fe7..000000000 Binary files a/tests/python_tests/images/style-comp-op/grain_extract.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/grain_merge.png b/tests/python_tests/images/style-comp-op/grain_merge.png deleted file mode 100644 index 3be208644..000000000 Binary files a/tests/python_tests/images/style-comp-op/grain_merge.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/hard_light.png b/tests/python_tests/images/style-comp-op/hard_light.png deleted file mode 100644 index db2552437..000000000 Binary files a/tests/python_tests/images/style-comp-op/hard_light.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/hue.png b/tests/python_tests/images/style-comp-op/hue.png deleted file mode 100644 index d58e35fbd..000000000 Binary files a/tests/python_tests/images/style-comp-op/hue.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/invert.png b/tests/python_tests/images/style-comp-op/invert.png deleted file mode 100644 index a4e5991bc..000000000 Binary files a/tests/python_tests/images/style-comp-op/invert.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/lighten.png b/tests/python_tests/images/style-comp-op/lighten.png deleted file mode 100644 index a06819161..000000000 Binary files a/tests/python_tests/images/style-comp-op/lighten.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/linear_burn.png b/tests/python_tests/images/style-comp-op/linear_burn.png deleted file mode 100644 index 389f86060..000000000 Binary files a/tests/python_tests/images/style-comp-op/linear_burn.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/linear_dodge.png b/tests/python_tests/images/style-comp-op/linear_dodge.png deleted file mode 100644 index 05bdce8e8..000000000 Binary files a/tests/python_tests/images/style-comp-op/linear_dodge.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/minus.png b/tests/python_tests/images/style-comp-op/minus.png deleted file mode 100644 index 1c6712a25..000000000 Binary files a/tests/python_tests/images/style-comp-op/minus.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/multiply.png b/tests/python_tests/images/style-comp-op/multiply.png deleted file mode 100644 index dccb2713c..000000000 Binary files a/tests/python_tests/images/style-comp-op/multiply.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/overlay.png b/tests/python_tests/images/style-comp-op/overlay.png deleted file mode 100644 index b0be6c6a9..000000000 Binary files a/tests/python_tests/images/style-comp-op/overlay.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/plus.png b/tests/python_tests/images/style-comp-op/plus.png deleted file mode 100644 index 05bdce8e8..000000000 Binary files a/tests/python_tests/images/style-comp-op/plus.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/saturation.png b/tests/python_tests/images/style-comp-op/saturation.png deleted file mode 100644 index 42c9e7682..000000000 Binary files a/tests/python_tests/images/style-comp-op/saturation.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/screen.png b/tests/python_tests/images/style-comp-op/screen.png deleted file mode 100644 index b940f732a..000000000 Binary files a/tests/python_tests/images/style-comp-op/screen.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/soft_light.png b/tests/python_tests/images/style-comp-op/soft_light.png deleted file mode 100644 index 717d77106..000000000 Binary files a/tests/python_tests/images/style-comp-op/soft_light.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/src.png b/tests/python_tests/images/style-comp-op/src.png deleted file mode 100644 index a7a96f57a..000000000 Binary files a/tests/python_tests/images/style-comp-op/src.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/src_atop.png b/tests/python_tests/images/style-comp-op/src_atop.png deleted file mode 100644 index 869552455..000000000 Binary files a/tests/python_tests/images/style-comp-op/src_atop.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/src_in.png b/tests/python_tests/images/style-comp-op/src_in.png deleted file mode 100644 index a7a96f57a..000000000 Binary files a/tests/python_tests/images/style-comp-op/src_in.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/src_out.png b/tests/python_tests/images/style-comp-op/src_out.png deleted file mode 100644 index 4fe9ab376..000000000 Binary files a/tests/python_tests/images/style-comp-op/src_out.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/src_over.png b/tests/python_tests/images/style-comp-op/src_over.png deleted file mode 100644 index f8261e01e..000000000 Binary files a/tests/python_tests/images/style-comp-op/src_over.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/value.png b/tests/python_tests/images/style-comp-op/value.png deleted file mode 100644 index c984d3e5b..000000000 Binary files a/tests/python_tests/images/style-comp-op/value.png and /dev/null differ diff --git a/tests/python_tests/images/style-comp-op/xor.png b/tests/python_tests/images/style-comp-op/xor.png deleted file mode 100644 index 8d276f6f3..000000000 Binary files a/tests/python_tests/images/style-comp-op/xor.png and /dev/null differ diff --git a/tests/python_tests/images/style-image-filter/agg-stack-blur22.png b/tests/python_tests/images/style-image-filter/agg-stack-blur22.png deleted file mode 100644 index bda766fec..000000000 Binary files a/tests/python_tests/images/style-image-filter/agg-stack-blur22.png and /dev/null differ diff --git a/tests/python_tests/images/style-image-filter/blur.png b/tests/python_tests/images/style-image-filter/blur.png deleted file mode 100644 index f687e511f..000000000 Binary files a/tests/python_tests/images/style-image-filter/blur.png and /dev/null differ diff --git a/tests/python_tests/images/style-image-filter/edge-detect.png b/tests/python_tests/images/style-image-filter/edge-detect.png deleted file mode 100644 index cda6f755a..000000000 Binary files a/tests/python_tests/images/style-image-filter/edge-detect.png and /dev/null differ diff --git a/tests/python_tests/images/style-image-filter/emboss.png b/tests/python_tests/images/style-image-filter/emboss.png deleted file mode 100644 index 5e9fea5be..000000000 Binary files a/tests/python_tests/images/style-image-filter/emboss.png and /dev/null differ diff --git a/tests/python_tests/images/style-image-filter/gray.png b/tests/python_tests/images/style-image-filter/gray.png deleted file mode 100644 index 166ceb5e3..000000000 Binary files a/tests/python_tests/images/style-image-filter/gray.png and /dev/null differ diff --git a/tests/python_tests/images/style-image-filter/invert.png b/tests/python_tests/images/style-image-filter/invert.png deleted file mode 100644 index 072a95be4..000000000 Binary files a/tests/python_tests/images/style-image-filter/invert.png and /dev/null differ diff --git a/tests/python_tests/images/style-image-filter/none.png b/tests/python_tests/images/style-image-filter/none.png deleted file mode 100644 index bf8764987..000000000 Binary files a/tests/python_tests/images/style-image-filter/none.png and /dev/null differ diff --git a/tests/python_tests/images/style-image-filter/sharpen.png b/tests/python_tests/images/style-image-filter/sharpen.png deleted file mode 100644 index 21f3f94f6..000000000 Binary files a/tests/python_tests/images/style-image-filter/sharpen.png and /dev/null differ diff --git a/tests/python_tests/images/style-image-filter/sobel.png b/tests/python_tests/images/style-image-filter/sobel.png deleted file mode 100644 index a647a6e0f..000000000 Binary files a/tests/python_tests/images/style-image-filter/sobel.png and /dev/null differ diff --git a/tests/python_tests/images/style-image-filter/x-gradient.png b/tests/python_tests/images/style-image-filter/x-gradient.png deleted file mode 100644 index 1721fc392..000000000 Binary files a/tests/python_tests/images/style-image-filter/x-gradient.png and /dev/null differ diff --git a/tests/python_tests/images/style-image-filter/y-gradient.png b/tests/python_tests/images/style-image-filter/y-gradient.png deleted file mode 100644 index 37abc0e69..000000000 Binary files a/tests/python_tests/images/style-image-filter/y-gradient.png and /dev/null differ diff --git a/tests/python_tests/images/support/a.png b/tests/python_tests/images/support/a.png deleted file mode 100644 index 3d0cc7288..000000000 Binary files a/tests/python_tests/images/support/a.png and /dev/null differ diff --git a/tests/python_tests/images/support/b.png b/tests/python_tests/images/support/b.png deleted file mode 100644 index 6eca9e180..000000000 Binary files a/tests/python_tests/images/support/b.png and /dev/null differ diff --git a/tests/python_tests/images/support/dataraster_coloring.png b/tests/python_tests/images/support/dataraster_coloring.png deleted file mode 100644 index da3cac4b1..000000000 Binary files a/tests/python_tests/images/support/dataraster_coloring.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png+e=miniz.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png+e=miniz.png deleted file mode 100644 index 4cc101b87..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png+e=miniz.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png+t=0.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png+t=0.png deleted file mode 100644 index b2aa9913d..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png.png deleted file mode 100644 index b2aa9913d..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png32+e=miniz.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png32+e=miniz.png deleted file mode 100644 index 046b4fc83..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png32+e=miniz.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png32+t=0.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png32+t=0.png deleted file mode 100644 index 16481a41b..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png32+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png32.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png32.png deleted file mode 100644 index 0f15a353c..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png32.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+e=miniz.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+e=miniz.png deleted file mode 100644 index d7dd17254..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+e=miniz.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h+c=1+t=0.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h+c=1+t=0.png deleted file mode 100644 index d6e19b7f7..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h+c=1+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h+c=1.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h+c=1.png deleted file mode 100644 index d6e19b7f7..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h+c=1.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h+t=0.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h+t=0.png deleted file mode 100644 index c6c7ab947..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h+t=1.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h+t=1.png deleted file mode 100644 index c6c7ab947..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h+t=1.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h+t=2.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h+t=2.png deleted file mode 100644 index c6c7ab947..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h+t=2.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h.png deleted file mode 100644 index c6c7ab947..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=h.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o+c=1+t=0.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o+c=1+t=0.png deleted file mode 100644 index ad0aca75d..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o+c=1+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o+c=1.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o+c=1.png deleted file mode 100644 index ad0aca75d..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o+c=1.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o+t=0.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o+t=0.png deleted file mode 100644 index 4ab31b649..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o+t=1.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o+t=1.png deleted file mode 100644 index 4ab31b649..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o+t=1.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o+t=2.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o+t=2.png deleted file mode 100644 index 4ab31b649..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o+t=2.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o.png b/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o.png deleted file mode 100644 index 4ab31b649..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-png8+m=o.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+alpha=false.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+alpha=false.webp deleted file mode 100644 index f2a3cfa0d..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+alpha=false.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+alpha_compression=0.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+alpha_compression=0.webp deleted file mode 100644 index f2a3cfa0d..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+alpha_compression=0.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+alpha_filtering=2.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+alpha_filtering=2.webp deleted file mode 100644 index f2a3cfa0d..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+alpha_filtering=2.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+alpha_quality=50.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+alpha_quality=50.webp deleted file mode 100644 index f2a3cfa0d..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+alpha_quality=50.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+autofilter=0.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+autofilter=0.webp deleted file mode 100644 index f2a3cfa0d..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+autofilter=0.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+filter_sharpness=4.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+filter_sharpness=4.webp deleted file mode 100644 index f29a97eba..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+filter_sharpness=4.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+filter_strength=50.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+filter_strength=50.webp deleted file mode 100644 index 87c1fe68a..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+filter_strength=50.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+filter_type=1+autofilter=1.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+filter_type=1+autofilter=1.webp deleted file mode 100644 index 752148dc6..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+filter_type=1+autofilter=1.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+method=0.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+method=0.webp deleted file mode 100644 index f0f3838ca..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+method=0.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+method=6.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+method=6.webp deleted file mode 100644 index be253e265..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+method=6.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+partition_limit=50.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+partition_limit=50.webp deleted file mode 100644 index 837ff3b07..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+partition_limit=50.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+partitions=3.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+partitions=3.webp deleted file mode 100644 index f2a3cfa0d..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+partitions=3.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+pass=10.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+pass=10.webp deleted file mode 100644 index 7d71893e4..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+pass=10.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+preprocessing=1.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+preprocessing=1.webp deleted file mode 100644 index f5e64b7a9..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+preprocessing=1.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+quality=64.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+quality=64.webp deleted file mode 100644 index efd13ada3..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+quality=64.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+segments=3.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+segments=3.webp deleted file mode 100644 index 967cc57bb..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+segments=3.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+sns_strength=50.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+sns_strength=50.webp deleted file mode 100644 index f2a3cfa0d..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+sns_strength=50.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+target_PSNR=.5.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+target_PSNR=.5.webp deleted file mode 100644 index f2a3cfa0d..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+target_PSNR=.5.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+target_size=100.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+target_size=100.webp deleted file mode 100644 index f2a3cfa0d..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp+target_size=100.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp.webp b/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp.webp deleted file mode 100644 index f2a3cfa0d..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/aerial_rgba-webp.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png+e=miniz.png b/tests/python_tests/images/support/encoding-opts/blank-png+e=miniz.png deleted file mode 100644 index 334ffe553..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png+e=miniz.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png+t=0.png b/tests/python_tests/images/support/encoding-opts/blank-png+t=0.png deleted file mode 100644 index 49c789ae0..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png.png b/tests/python_tests/images/support/encoding-opts/blank-png.png deleted file mode 100644 index 49c789ae0..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png32+e=miniz.png b/tests/python_tests/images/support/encoding-opts/blank-png32+e=miniz.png deleted file mode 100644 index 8708c3273..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png32+e=miniz.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png32+t=0.png b/tests/python_tests/images/support/encoding-opts/blank-png32+t=0.png deleted file mode 100644 index 50e389033..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png32+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png32.png b/tests/python_tests/images/support/encoding-opts/blank-png32.png deleted file mode 100644 index 04469ac58..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png32.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png8+e=miniz.png b/tests/python_tests/images/support/encoding-opts/blank-png8+e=miniz.png deleted file mode 100644 index 334ffe553..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png8+e=miniz.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png8+m=h+c=1+t=0.png b/tests/python_tests/images/support/encoding-opts/blank-png8+m=h+c=1+t=0.png deleted file mode 100644 index 49c789ae0..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png8+m=h+c=1+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png8+m=h+c=1.png b/tests/python_tests/images/support/encoding-opts/blank-png8+m=h+c=1.png deleted file mode 100644 index 49c789ae0..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png8+m=h+c=1.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png8+m=h+t=0.png b/tests/python_tests/images/support/encoding-opts/blank-png8+m=h+t=0.png deleted file mode 100644 index 49c789ae0..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png8+m=h+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png8+m=h+t=1.png b/tests/python_tests/images/support/encoding-opts/blank-png8+m=h+t=1.png deleted file mode 100644 index 49c789ae0..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png8+m=h+t=1.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png8+m=h+t=2.png b/tests/python_tests/images/support/encoding-opts/blank-png8+m=h+t=2.png deleted file mode 100644 index 49c789ae0..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png8+m=h+t=2.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png8+m=h.png b/tests/python_tests/images/support/encoding-opts/blank-png8+m=h.png deleted file mode 100644 index 49c789ae0..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png8+m=h.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png8+m=o+c=1+t=0.png b/tests/python_tests/images/support/encoding-opts/blank-png8+m=o+c=1+t=0.png deleted file mode 100644 index 49c789ae0..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png8+m=o+c=1+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png8+m=o+c=1.png b/tests/python_tests/images/support/encoding-opts/blank-png8+m=o+c=1.png deleted file mode 100644 index 49c789ae0..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png8+m=o+c=1.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png8+m=o+t=0.png b/tests/python_tests/images/support/encoding-opts/blank-png8+m=o+t=0.png deleted file mode 100644 index 49c789ae0..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png8+m=o+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png8+m=o+t=1.png b/tests/python_tests/images/support/encoding-opts/blank-png8+m=o+t=1.png deleted file mode 100644 index 49c789ae0..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png8+m=o+t=1.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png8+m=o+t=2.png b/tests/python_tests/images/support/encoding-opts/blank-png8+m=o+t=2.png deleted file mode 100644 index 49c789ae0..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png8+m=o+t=2.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-png8+m=o.png b/tests/python_tests/images/support/encoding-opts/blank-png8+m=o.png deleted file mode 100644 index 49c789ae0..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-png8+m=o.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+alpha=false.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+alpha=false.webp deleted file mode 100644 index da95b42c6..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+alpha=false.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+alpha_compression=0.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+alpha_compression=0.webp deleted file mode 100644 index 2e264d438..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+alpha_compression=0.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+alpha_filtering=2.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+alpha_filtering=2.webp deleted file mode 100644 index a7369dcb9..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+alpha_filtering=2.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+alpha_quality=50.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+alpha_quality=50.webp deleted file mode 100644 index 10cea1cdf..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+alpha_quality=50.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+autofilter=0.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+autofilter=0.webp deleted file mode 100644 index a7369dcb9..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+autofilter=0.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+filter_sharpness=4.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+filter_sharpness=4.webp deleted file mode 100644 index 932a4dec0..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+filter_sharpness=4.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+filter_strength=50.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+filter_strength=50.webp deleted file mode 100644 index 2e65b9b85..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+filter_strength=50.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+filter_type=1+autofilter=1.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+filter_type=1+autofilter=1.webp deleted file mode 100644 index 7e3bd76b5..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+filter_type=1+autofilter=1.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+method=0.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+method=0.webp deleted file mode 100644 index 5c6492427..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+method=0.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+method=6.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+method=6.webp deleted file mode 100644 index ef84f4c33..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+method=6.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+partition_limit=50.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+partition_limit=50.webp deleted file mode 100644 index a7369dcb9..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+partition_limit=50.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+partitions=3.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+partitions=3.webp deleted file mode 100644 index a7369dcb9..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+partitions=3.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+pass=10.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+pass=10.webp deleted file mode 100644 index a7369dcb9..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+pass=10.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+preprocessing=1.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+preprocessing=1.webp deleted file mode 100644 index a7369dcb9..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+preprocessing=1.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+quality=64.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+quality=64.webp deleted file mode 100644 index 0eb26aa1a..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+quality=64.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+segments=3.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+segments=3.webp deleted file mode 100644 index af3082b71..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+segments=3.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+sns_strength=50.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+sns_strength=50.webp deleted file mode 100644 index a7369dcb9..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+sns_strength=50.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+target_PSNR=.5.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+target_PSNR=.5.webp deleted file mode 100644 index a7369dcb9..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+target_PSNR=.5.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp+target_size=100.webp b/tests/python_tests/images/support/encoding-opts/blank-webp+target_size=100.webp deleted file mode 100644 index a7369dcb9..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp+target_size=100.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/blank-webp.webp b/tests/python_tests/images/support/encoding-opts/blank-webp.webp deleted file mode 100644 index a7369dcb9..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/blank-webp.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/png8-17cols.png b/tests/python_tests/images/support/encoding-opts/png8-17cols.png deleted file mode 100644 index 22f4c3542..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/png8-17cols.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/png8-2px.A.png b/tests/python_tests/images/support/encoding-opts/png8-2px.A.png deleted file mode 100644 index f047b0804..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/png8-2px.A.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/png8-2px.png b/tests/python_tests/images/support/encoding-opts/png8-2px.png deleted file mode 100644 index f047b0804..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/png8-2px.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/png8-9cols.png b/tests/python_tests/images/support/encoding-opts/png8-9cols.png deleted file mode 100644 index a781b37a2..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/png8-9cols.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png+e=miniz.png b/tests/python_tests/images/support/encoding-opts/solid-png+e=miniz.png deleted file mode 100644 index c3e5db471..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png+e=miniz.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png+t=0.png b/tests/python_tests/images/support/encoding-opts/solid-png+t=0.png deleted file mode 100644 index 0d7dee0fb..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png.png b/tests/python_tests/images/support/encoding-opts/solid-png.png deleted file mode 100644 index a4c4de304..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png32+e=miniz.png b/tests/python_tests/images/support/encoding-opts/solid-png32+e=miniz.png deleted file mode 100644 index f155fce57..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png32+e=miniz.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png32+t=0.png b/tests/python_tests/images/support/encoding-opts/solid-png32+t=0.png deleted file mode 100644 index 21fffbf00..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png32+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png32.png b/tests/python_tests/images/support/encoding-opts/solid-png32.png deleted file mode 100644 index 4fe9ab376..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png32.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png8+e=miniz.png b/tests/python_tests/images/support/encoding-opts/solid-png8+e=miniz.png deleted file mode 100644 index c3e5db471..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png8+e=miniz.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png8+m=h+c=1+t=0.png b/tests/python_tests/images/support/encoding-opts/solid-png8+m=h+c=1+t=0.png deleted file mode 100644 index 0d7dee0fb..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png8+m=h+c=1+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png8+m=h+c=1.png b/tests/python_tests/images/support/encoding-opts/solid-png8+m=h+c=1.png deleted file mode 100644 index a4c4de304..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png8+m=h+c=1.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png8+m=h+t=0.png b/tests/python_tests/images/support/encoding-opts/solid-png8+m=h+t=0.png deleted file mode 100644 index 0d7dee0fb..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png8+m=h+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png8+m=h+t=1.png b/tests/python_tests/images/support/encoding-opts/solid-png8+m=h+t=1.png deleted file mode 100644 index a4c4de304..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png8+m=h+t=1.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png8+m=h+t=2.png b/tests/python_tests/images/support/encoding-opts/solid-png8+m=h+t=2.png deleted file mode 100644 index a4c4de304..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png8+m=h+t=2.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png8+m=h.png b/tests/python_tests/images/support/encoding-opts/solid-png8+m=h.png deleted file mode 100644 index a4c4de304..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png8+m=h.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png8+m=o+c=1+t=0.png b/tests/python_tests/images/support/encoding-opts/solid-png8+m=o+c=1+t=0.png deleted file mode 100644 index 0d7dee0fb..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png8+m=o+c=1+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png8+m=o+c=1.png b/tests/python_tests/images/support/encoding-opts/solid-png8+m=o+c=1.png deleted file mode 100644 index a4c4de304..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png8+m=o+c=1.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png8+m=o+t=0.png b/tests/python_tests/images/support/encoding-opts/solid-png8+m=o+t=0.png deleted file mode 100644 index 0d7dee0fb..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png8+m=o+t=0.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png8+m=o+t=1.png b/tests/python_tests/images/support/encoding-opts/solid-png8+m=o+t=1.png deleted file mode 100644 index a4c4de304..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png8+m=o+t=1.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png8+m=o+t=2.png b/tests/python_tests/images/support/encoding-opts/solid-png8+m=o+t=2.png deleted file mode 100644 index a4c4de304..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png8+m=o+t=2.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-png8+m=o.png b/tests/python_tests/images/support/encoding-opts/solid-png8+m=o.png deleted file mode 100644 index a4c4de304..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-png8+m=o.png and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+alpha=false.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+alpha=false.webp deleted file mode 100644 index cbd85abaf..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+alpha=false.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+alpha_compression=0.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+alpha_compression=0.webp deleted file mode 100644 index cbd85abaf..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+alpha_compression=0.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+alpha_filtering=2.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+alpha_filtering=2.webp deleted file mode 100644 index cbd85abaf..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+alpha_filtering=2.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+alpha_quality=50.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+alpha_quality=50.webp deleted file mode 100644 index cbd85abaf..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+alpha_quality=50.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+autofilter=0.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+autofilter=0.webp deleted file mode 100644 index cbd85abaf..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+autofilter=0.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+filter_sharpness=4.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+filter_sharpness=4.webp deleted file mode 100644 index 1eadaa1f1..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+filter_sharpness=4.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+filter_strength=50.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+filter_strength=50.webp deleted file mode 100644 index 621e6cc23..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+filter_strength=50.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+filter_type=1+autofilter=1.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+filter_type=1+autofilter=1.webp deleted file mode 100644 index 1372321c9..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+filter_type=1+autofilter=1.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+method=0.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+method=0.webp deleted file mode 100644 index e7cff6530..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+method=0.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+method=6.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+method=6.webp deleted file mode 100644 index 5a76594f6..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+method=6.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+partition_limit=50.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+partition_limit=50.webp deleted file mode 100644 index cbd85abaf..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+partition_limit=50.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+partitions=3.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+partitions=3.webp deleted file mode 100644 index cbd85abaf..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+partitions=3.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+pass=10.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+pass=10.webp deleted file mode 100644 index cbd85abaf..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+pass=10.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+preprocessing=1.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+preprocessing=1.webp deleted file mode 100644 index cbd85abaf..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+preprocessing=1.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+quality=64.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+quality=64.webp deleted file mode 100644 index fba30ff35..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+quality=64.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+segments=3.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+segments=3.webp deleted file mode 100644 index 84ba1a802..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+segments=3.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+sns_strength=50.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+sns_strength=50.webp deleted file mode 100644 index cbd85abaf..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+sns_strength=50.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+target_PSNR=.5.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+target_PSNR=.5.webp deleted file mode 100644 index cbd85abaf..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+target_PSNR=.5.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp+target_size=100.webp b/tests/python_tests/images/support/encoding-opts/solid-webp+target_size=100.webp deleted file mode 100644 index cbd85abaf..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp+target_size=100.webp and /dev/null differ diff --git a/tests/python_tests/images/support/encoding-opts/solid-webp.webp b/tests/python_tests/images/support/encoding-opts/solid-webp.webp deleted file mode 100644 index cbd85abaf..000000000 Binary files a/tests/python_tests/images/support/encoding-opts/solid-webp.webp and /dev/null differ diff --git a/tests/python_tests/images/support/mapnik-layer-buffer-size.png b/tests/python_tests/images/support/mapnik-layer-buffer-size.png deleted file mode 100644 index f1de74ab7..000000000 Binary files a/tests/python_tests/images/support/mapnik-layer-buffer-size.png and /dev/null differ diff --git a/tests/python_tests/images/support/mapnik-marker-ellipse-render1.png b/tests/python_tests/images/support/mapnik-marker-ellipse-render1.png deleted file mode 100644 index 7854c5621..000000000 Binary files a/tests/python_tests/images/support/mapnik-marker-ellipse-render1.png and /dev/null differ diff --git a/tests/python_tests/images/support/mapnik-marker-ellipse-render2.png b/tests/python_tests/images/support/mapnik-marker-ellipse-render2.png deleted file mode 100644 index c2a4963c3..000000000 Binary files a/tests/python_tests/images/support/mapnik-marker-ellipse-render2.png and /dev/null differ diff --git a/tests/python_tests/images/support/mapnik-merc2merc-reprojection-render1.png b/tests/python_tests/images/support/mapnik-merc2merc-reprojection-render1.png deleted file mode 100644 index 59726ad0d..000000000 Binary files a/tests/python_tests/images/support/mapnik-merc2merc-reprojection-render1.png and /dev/null differ diff --git a/tests/python_tests/images/support/mapnik-merc2merc-reprojection-render2.png b/tests/python_tests/images/support/mapnik-merc2merc-reprojection-render2.png deleted file mode 100644 index 351febff7..000000000 Binary files a/tests/python_tests/images/support/mapnik-merc2merc-reprojection-render2.png and /dev/null differ diff --git a/tests/python_tests/images/support/mapnik-merc2wgs84-reprojection-render.png b/tests/python_tests/images/support/mapnik-merc2wgs84-reprojection-render.png deleted file mode 100644 index 55995d545..000000000 Binary files a/tests/python_tests/images/support/mapnik-merc2wgs84-reprojection-render.png and /dev/null differ diff --git a/tests/python_tests/images/support/mapnik-palette-test.png b/tests/python_tests/images/support/mapnik-palette-test.png deleted file mode 100644 index b7fd90482..000000000 Binary files a/tests/python_tests/images/support/mapnik-palette-test.png and /dev/null differ diff --git a/tests/python_tests/images/support/mapnik-python-circle-render1.png b/tests/python_tests/images/support/mapnik-python-circle-render1.png deleted file mode 100644 index cb5eba43d..000000000 Binary files a/tests/python_tests/images/support/mapnik-python-circle-render1.png and /dev/null differ diff --git a/tests/python_tests/images/support/mapnik-python-point-render1.png b/tests/python_tests/images/support/mapnik-python-point-render1.png deleted file mode 100644 index b131d8644..000000000 Binary files a/tests/python_tests/images/support/mapnik-python-point-render1.png and /dev/null differ diff --git a/tests/python_tests/images/support/mapnik-style-level-opacity.png b/tests/python_tests/images/support/mapnik-style-level-opacity.png deleted file mode 100644 index 988a438aa..000000000 Binary files a/tests/python_tests/images/support/mapnik-style-level-opacity.png and /dev/null differ diff --git a/tests/python_tests/images/support/mapnik-wgs842merc-reprojection-render.png b/tests/python_tests/images/support/mapnik-wgs842merc-reprojection-render.png deleted file mode 100644 index 6fc5f12f6..000000000 Binary files a/tests/python_tests/images/support/mapnik-wgs842merc-reprojection-render.png and /dev/null differ diff --git a/tests/python_tests/images/support/marker-in-center-not-placed.png b/tests/python_tests/images/support/marker-in-center-not-placed.png deleted file mode 100644 index a4c4de304..000000000 Binary files a/tests/python_tests/images/support/marker-in-center-not-placed.png and /dev/null differ diff --git a/tests/python_tests/images/support/marker-in-center.png b/tests/python_tests/images/support/marker-in-center.png deleted file mode 100644 index 7845d4fc9..000000000 Binary files a/tests/python_tests/images/support/marker-in-center.png and /dev/null differ diff --git a/tests/python_tests/images/support/marker-text-line-scale-factor-0.005.png b/tests/python_tests/images/support/marker-text-line-scale-factor-0.005.png deleted file mode 100644 index 5ba0afcba..000000000 Binary files a/tests/python_tests/images/support/marker-text-line-scale-factor-0.005.png and /dev/null differ diff --git a/tests/python_tests/images/support/marker-text-line-scale-factor-0.1.png b/tests/python_tests/images/support/marker-text-line-scale-factor-0.1.png deleted file mode 100644 index 306424dfc..000000000 Binary files a/tests/python_tests/images/support/marker-text-line-scale-factor-0.1.png and /dev/null differ diff --git a/tests/python_tests/images/support/marker-text-line-scale-factor-0.899.png b/tests/python_tests/images/support/marker-text-line-scale-factor-0.899.png deleted file mode 100644 index cb2c651f8..000000000 Binary files a/tests/python_tests/images/support/marker-text-line-scale-factor-0.899.png and /dev/null differ diff --git a/tests/python_tests/images/support/marker-text-line-scale-factor-1.5.png b/tests/python_tests/images/support/marker-text-line-scale-factor-1.5.png deleted file mode 100644 index a1b34a357..000000000 Binary files a/tests/python_tests/images/support/marker-text-line-scale-factor-1.5.png and /dev/null differ diff --git a/tests/python_tests/images/support/marker-text-line-scale-factor-1.png b/tests/python_tests/images/support/marker-text-line-scale-factor-1.png deleted file mode 100644 index c86c5fa4e..000000000 Binary files a/tests/python_tests/images/support/marker-text-line-scale-factor-1.png and /dev/null differ diff --git a/tests/python_tests/images/support/marker-text-line-scale-factor-10.png b/tests/python_tests/images/support/marker-text-line-scale-factor-10.png deleted file mode 100644 index 8a7842f9e..000000000 Binary files a/tests/python_tests/images/support/marker-text-line-scale-factor-10.png and /dev/null differ diff --git a/tests/python_tests/images/support/marker-text-line-scale-factor-100.png b/tests/python_tests/images/support/marker-text-line-scale-factor-100.png deleted file mode 100644 index f1c0b52b8..000000000 Binary files a/tests/python_tests/images/support/marker-text-line-scale-factor-100.png and /dev/null differ diff --git a/tests/python_tests/images/support/marker-text-line-scale-factor-1e-05.png b/tests/python_tests/images/support/marker-text-line-scale-factor-1e-05.png deleted file mode 100644 index 0f368308a..000000000 Binary files a/tests/python_tests/images/support/marker-text-line-scale-factor-1e-05.png and /dev/null differ diff --git a/tests/python_tests/images/support/marker-text-line-scale-factor-2.png b/tests/python_tests/images/support/marker-text-line-scale-factor-2.png deleted file mode 100644 index e3ad67f99..000000000 Binary files a/tests/python_tests/images/support/marker-text-line-scale-factor-2.png and /dev/null differ diff --git a/tests/python_tests/images/support/marker-text-line-scale-factor-5.png b/tests/python_tests/images/support/marker-text-line-scale-factor-5.png deleted file mode 100644 index 2be5f2df3..000000000 Binary files a/tests/python_tests/images/support/marker-text-line-scale-factor-5.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_16bsi_subquery-16BSI-135.png b/tests/python_tests/images/support/pgraster/data_subquery-data_16bsi_subquery-16BSI-135.png deleted file mode 100644 index e6fad0d0b..000000000 Binary files a/tests/python_tests/images/support/pgraster/data_subquery-data_16bsi_subquery-16BSI-135.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_16bui_subquery-16BUI-126.png b/tests/python_tests/images/support/pgraster/data_subquery-data_16bui_subquery-16BUI-126.png deleted file mode 100644 index e6fad0d0b..000000000 Binary files a/tests/python_tests/images/support/pgraster/data_subquery-data_16bui_subquery-16BUI-126.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_2bui_subquery-2BUI-3.png b/tests/python_tests/images/support/pgraster/data_subquery-data_2bui_subquery-2BUI-3.png deleted file mode 100644 index e6fad0d0b..000000000 Binary files a/tests/python_tests/images/support/pgraster/data_subquery-data_2bui_subquery-2BUI-3.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_32bf_subquery-32BF-450.png b/tests/python_tests/images/support/pgraster/data_subquery-data_32bf_subquery-32BF-450.png deleted file mode 100644 index e6fad0d0b..000000000 Binary files a/tests/python_tests/images/support/pgraster/data_subquery-data_32bf_subquery-32BF-450.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_32bsi_subquery-32BSI-264.png b/tests/python_tests/images/support/pgraster/data_subquery-data_32bsi_subquery-32BSI-264.png deleted file mode 100644 index e6fad0d0b..000000000 Binary files a/tests/python_tests/images/support/pgraster/data_subquery-data_32bsi_subquery-32BSI-264.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_32bui_subquery-32BUI-255.png b/tests/python_tests/images/support/pgraster/data_subquery-data_32bui_subquery-32BUI-255.png deleted file mode 100644 index e6fad0d0b..000000000 Binary files a/tests/python_tests/images/support/pgraster/data_subquery-data_32bui_subquery-32BUI-255.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_4bui_subquery-4BUI-15.png b/tests/python_tests/images/support/pgraster/data_subquery-data_4bui_subquery-4BUI-15.png deleted file mode 100644 index e6fad0d0b..000000000 Binary files a/tests/python_tests/images/support/pgraster/data_subquery-data_4bui_subquery-4BUI-15.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_64bf_subquery-64BF-3072.png b/tests/python_tests/images/support/pgraster/data_subquery-data_64bf_subquery-64BF-3072.png deleted file mode 100644 index e6fad0d0b..000000000 Binary files a/tests/python_tests/images/support/pgraster/data_subquery-data_64bf_subquery-64BF-3072.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_8bsi_subquery-8BSI-69.png b/tests/python_tests/images/support/pgraster/data_subquery-data_8bsi_subquery-8BSI-69.png deleted file mode 100644 index e6fad0d0b..000000000 Binary files a/tests/python_tests/images/support/pgraster/data_subquery-data_8bsi_subquery-8BSI-69.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_8bui_subquery-8BUI-63.png b/tests/python_tests/images/support/pgraster/data_subquery-data_8bui_subquery-8BUI-63.png deleted file mode 100644 index e6fad0d0b..000000000 Binary files a/tests/python_tests/images/support/pgraster/data_subquery-data_8bui_subquery-8BUI-63.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_16bsi_subquery-16BSI-144.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_16bsi_subquery-16BSI-144.png deleted file mode 100644 index 719c7e045..000000000 Binary files a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_16bsi_subquery-16BSI-144.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_16bui_subquery-16BUI-126.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_16bui_subquery-16BUI-126.png deleted file mode 100644 index a6aa1a65d..000000000 Binary files a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_16bui_subquery-16BUI-126.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_2bui_subquery-2BUI-3.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_2bui_subquery-2BUI-3.png deleted file mode 100644 index 62aa1631a..000000000 Binary files a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_2bui_subquery-2BUI-3.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_32bsi_subquery-32BSI-129.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_32bsi_subquery-32BSI-129.png deleted file mode 100644 index b134b2d24..000000000 Binary files a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_32bsi_subquery-32BSI-129.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_32bui_subquery-32BUI-255.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_32bui_subquery-32BUI-255.png deleted file mode 100644 index 5f8035a2d..000000000 Binary files a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_32bui_subquery-32BUI-255.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_4bui_subquery-4BUI-15.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_4bui_subquery-4BUI-15.png deleted file mode 100644 index 2667c0663..000000000 Binary files a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_4bui_subquery-4BUI-15.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_8bsi_subquery-8BSI-69.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_8bsi_subquery-8BSI-69.png deleted file mode 100644 index 85abadd9e..000000000 Binary files a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_8bsi_subquery-8BSI-69.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_8bui_subquery-8BUI-63.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_8bui_subquery-8BUI-63.png deleted file mode 100644 index 06d6249a2..000000000 Binary files a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_8bui_subquery-8BUI-63.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Cl--1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Cl--1-box1.png deleted file mode 100644 index cae620513..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Cl--1-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Cl--1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Cl--1-box2.png deleted file mode 100644 index 846981baa..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Cl--1-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Sc Cl--1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Sc Cl--1-box1.png deleted file mode 100644 index 4fdf9ffbc..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Sc Cl--1-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Sc Cl--1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Sc Cl--1-box2.png deleted file mode 100644 index 846981baa..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Sc Cl--1-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Sc--0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Sc--0-box1.png deleted file mode 100644 index 4fdf9ffbc..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Sc--0-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Sc--0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Sc--0-box2.png deleted file mode 100644 index 846981baa..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Sc--0-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64--0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64--0-box1.png deleted file mode 100644 index cae620513..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64--0-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64--0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64--0-box2.png deleted file mode 100644 index 846981baa..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64--0-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Cl-2-1-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Cl-2-1-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Cl-2-1-box2.png deleted file mode 100644 index 0669f5288..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Cl-2-1-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Sc Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Sc Cl-2-1-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Sc Cl-2-1-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Sc Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Sc Cl-2-1-box2.png deleted file mode 100644 index 0669f5288..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Sc Cl-2-1-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Sc-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Sc-2-0-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Sc-2-0-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Sc-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Sc-2-0-box2.png deleted file mode 100644 index 04135187e..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2 Sc-2-0-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2-2-0-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2-2-0-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2-2-0-box2.png deleted file mode 100644 index 04135187e..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O_2-2-0-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Cl-2-1-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Cl-2-1-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Cl-2-1-box2.png deleted file mode 100644 index 62e35be30..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Cl-2-1-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Sc Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Sc Cl-2-1-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Sc Cl-2-1-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Sc Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Sc Cl-2-1-box2.png deleted file mode 100644 index 62e35be30..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Sc Cl-2-1-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Sc-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Sc-2-0-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Sc-2-0-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Sc-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Sc-2-0-box2.png deleted file mode 100644 index 5460a3836..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2 Sc-2-0-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2-2-0-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2-2-0-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2-2-0-box2.png deleted file mode 100644 index 5460a3836..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T_16x16 O_2-2-0-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Cl-2-1-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Cl-2-1-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Cl-2-1-box2.png deleted file mode 100644 index 0669f5288..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Cl-2-1-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Sc Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Sc Cl-2-1-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Sc Cl-2-1-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Sc Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Sc Cl-2-1-box2.png deleted file mode 100644 index 0669f5288..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Sc Cl-2-1-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Sc-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Sc-2-0-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Sc-2-0-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Sc-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Sc-2-0-box2.png deleted file mode 100644 index 04135187e..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2 Sc-2-0-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2-2-0-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2-2-0-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2-2-0-box2.png deleted file mode 100644 index 04135187e..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O_2-2-0-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Cl-2-1-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Cl-2-1-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Cl-2-1-box2.png deleted file mode 100644 index 62e35be30..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Cl-2-1-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Sc Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Sc Cl-2-1-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Sc Cl-2-1-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Sc Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Sc Cl-2-1-box2.png deleted file mode 100644 index 62e35be30..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Sc Cl-2-1-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Sc-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Sc-2-0-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Sc-2-0-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Sc-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Sc-2-0-box2.png deleted file mode 100644 index 5460a3836..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2 Sc-2-0-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2-2-0-box1.png deleted file mode 100644 index 981cf74df..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2-2-0-box1.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2-2-0-box2.png deleted file mode 100644 index 5460a3836..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T_16x16 O_2-2-0-box2.png and /dev/null differ diff --git a/tests/python_tests/images/support/pgraster/rgba_subquery-rgba_8bui_subquery-8BUI-255-0-0-255-255-255.png b/tests/python_tests/images/support/pgraster/rgba_subquery-rgba_8bui_subquery-8BUI-255-0-0-255-255-255.png deleted file mode 100644 index d83016d2a..000000000 Binary files a/tests/python_tests/images/support/pgraster/rgba_subquery-rgba_8bui_subquery-8BUI-255-0-0-255-255-255.png and /dev/null differ diff --git a/tests/python_tests/images/support/raster-alpha.png b/tests/python_tests/images/support/raster-alpha.png deleted file mode 100644 index 3c79bb304..000000000 Binary files a/tests/python_tests/images/support/raster-alpha.png and /dev/null differ diff --git a/tests/python_tests/images/support/raster_warping.png b/tests/python_tests/images/support/raster_warping.png deleted file mode 100644 index 500a51e47..000000000 Binary files a/tests/python_tests/images/support/raster_warping.png and /dev/null differ diff --git a/tests/python_tests/images/support/raster_warping_does_not_overclip_source.png b/tests/python_tests/images/support/raster_warping_does_not_overclip_source.png deleted file mode 100644 index 0d6ccc5ab..000000000 Binary files a/tests/python_tests/images/support/raster_warping_does_not_overclip_source.png and /dev/null differ diff --git a/tests/python_tests/images/support/spacing.png b/tests/python_tests/images/support/spacing.png deleted file mode 100644 index 8d6bb4026..000000000 Binary files a/tests/python_tests/images/support/spacing.png and /dev/null differ diff --git a/tests/python_tests/images/support/transparency/aerial_rgb.png b/tests/python_tests/images/support/transparency/aerial_rgb.png deleted file mode 100644 index 16481a41b..000000000 Binary files a/tests/python_tests/images/support/transparency/aerial_rgb.png and /dev/null differ diff --git a/tests/python_tests/images/support/transparency/aerial_rgba.png b/tests/python_tests/images/support/transparency/aerial_rgba.png deleted file mode 100644 index 0f15a353c..000000000 Binary files a/tests/python_tests/images/support/transparency/aerial_rgba.png and /dev/null differ diff --git a/tests/python_tests/images/support/transparency/white0.png b/tests/python_tests/images/support/transparency/white0.png deleted file mode 100644 index 955861acc..000000000 Binary files a/tests/python_tests/images/support/transparency/white0.png and /dev/null differ diff --git a/tests/python_tests/images/support/transparency/white0.webp b/tests/python_tests/images/support/transparency/white0.webp deleted file mode 100644 index f276b81ee..000000000 Binary files a/tests/python_tests/images/support/transparency/white0.webp and /dev/null differ diff --git a/tests/python_tests/images/support/transparency/white1.png b/tests/python_tests/images/support/transparency/white1.png deleted file mode 100644 index db4e8278b..000000000 Binary files a/tests/python_tests/images/support/transparency/white1.png and /dev/null differ diff --git a/tests/python_tests/images/support/transparency/white2.png b/tests/python_tests/images/support/transparency/white2.png deleted file mode 100644 index 136e0980d..000000000 Binary files a/tests/python_tests/images/support/transparency/white2.png and /dev/null differ diff --git a/tests/python_tests/introspection_test.py b/tests/python_tests/introspection_test.py deleted file mode 100644 index afb1cc2c9..000000000 --- a/tests/python_tests/introspection_test.py +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env python - -import os -from nose.tools import eq_ -from utilities import execution_path, run_all - -import mapnik - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_introspect_symbolizers(): - # create a symbolizer - p = mapnik.PointSymbolizer() - p.file = "../data/images/dummy.png" - p.allow_overlap = True - p.opacity = 0.5 - - eq_(p.allow_overlap, True) - eq_(p.opacity, 0.5) - eq_(p.filename,'../data/images/dummy.png') - - # make sure the defaults - # are what we think they are - eq_(p.allow_overlap, True) - eq_(p.opacity,0.5) - eq_(p.filename,'../data/images/dummy.png') - - # contruct objects to hold it - r = mapnik.Rule() - r.symbols.append(p) - s = mapnik.Style() - s.rules.append(r) - m = mapnik.Map(0,0) - m.append_style('s',s) - - # try to figure out what is - # in the map and make sure - # style is there and the same - - s2 = m.find_style('s') - rules = s2.rules - eq_(len(rules),1) - r2 = rules[0] - syms = r2.symbols - eq_(len(syms),1) - - ## TODO here, we can do... - sym = syms[0] - p2 = sym.extract() - assert isinstance(p2,mapnik.PointSymbolizer) - - eq_(p2.allow_overlap, True) - eq_(p2.opacity, 0.5) - eq_(p2.filename,'../data/images/dummy.png') - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/json_feature_properties_test.py b/tests/python_tests/json_feature_properties_test.py deleted file mode 100644 index 47f2428d4..000000000 --- a/tests/python_tests/json_feature_properties_test.py +++ /dev/null @@ -1,102 +0,0 @@ -#encoding: utf8 - -from nose.tools import eq_ -import mapnik -from utilities import run_all -try: - import json -except ImportError: - import simplejson as json - -chars = [ - { - "name":"single_quote", - "test": "string with ' quote", - "json": '{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \' quote"}}' - }, - { - "name":"escaped_single_quote", - "test":"string with \' quote", - "json":'{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \' quote"}}' - }, - { - "name":"double_quote", - "test":'string with " quote', - "json":'{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\" quote"}}' - }, - { - "name":"double_quote2", - "test":"string with \" quote", - "json":'{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\" quote"}}' - }, - { - "name":"reverse_solidus", # backslash - "test":"string with \\ quote", - "json":'{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\\ quote"}}' - }, - { - "name":"solidus", # forward slash - "test":"string with / quote", - "json":'{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with / quote"}}' - }, - { - "name":"backspace", - "test":"string with \b quote", - "json":'{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\b quote"}}' - }, - { - "name":"formfeed", - "test":"string with \f quote", - "json":'{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\f quote"}}' - }, - { - "name":"newline", - "test":"string with \n quote", - "json":'{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\n quote"}}' - }, - { - "name":"carriage_return", - "test":"string with \r quote", - "json":'{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\r quote"}}' - }, - { - "name":"horiztonal_tab", - "test":"string with \t quote", - "json":'{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\t quote"}}' - }, - # remainder are c++ reserved, but not json - { - "name":"vert_tab", - "test":"string with \v quote", - "json":'{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\u000b quote"}}' - }, - { - "name":"alert", - "test":"string with \a quote", - "json":'{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \u0007 quote"}}' - } -] - -ctx = mapnik.Context() -ctx.push('name') - -def test_char_escaping(): - for char in chars: - feat = mapnik.Feature(ctx,1) - expected = char['test'] - feat["name"] = expected - eq_(feat["name"],expected) - # confirm the python json module - # is working as we would expect - pyjson2 = json.loads(char['json']) - eq_(pyjson2['properties']['name'],expected) - # confirm our behavior is the same as python json module - # for the original string - geojson_feat_string = feat.to_geojson() - eq_(geojson_feat_string,char['json'],"Mapnik's json escaping is not to spec: actual(%s) and expected(%s) for %s" % (geojson_feat_string,char['json'],char['name'])) - # and the round tripped string - pyjson = json.loads(geojson_feat_string) - eq_(pyjson['properties']['name'],expected) - -if __name__ == "__main__": - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/layer_buffer_size_test.py b/tests/python_tests/layer_buffer_size_test.py deleted file mode 100644 index 83765a73f..000000000 --- a/tests/python_tests/layer_buffer_size_test.py +++ /dev/null @@ -1,35 +0,0 @@ -#coding=utf8 -import os -import mapnik -from utilities import execution_path, run_all -from nose.tools import eq_ - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -if 'sqlite' in mapnik.DatasourceCache.plugin_names(): - - # the negative buffer on the layer should - # override the postive map buffer leading - # only one point to be rendered in the map - def test_layer_buffer_size_1(): - m = mapnik.Map(512,512) - eq_(m.buffer_size,0) - mapnik.load_map(m,'../data/good_maps/layer_buffer_size_reduction.xml') - eq_(m.buffer_size,256) - eq_(m.layers[0].buffer_size,-150) - m.zoom_all() - im = mapnik.Image(m.width,m.height) - mapnik.render(m,im) - actual = '/tmp/mapnik-layer-buffer-size.png' - expected = 'images/support/mapnik-layer-buffer-size.png' - im.save(actual,"png32") - expected_im = mapnik.Image.open(expected) - eq_(im.tostring('png32'),expected_im.tostring('png32'), 'failed comparing actual (%s) and expected (%s)' % (actual,'tests/python_tests/'+ expected)) - - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/layer_modification_test.py b/tests/python_tests/layer_modification_test.py deleted file mode 100644 index 7517ac2ac..000000000 --- a/tests/python_tests/layer_modification_test.py +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env python - -import os -from nose.tools import eq_ -from utilities import execution_path, run_all -import mapnik - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_adding_datasource_to_layer(): - map_string = ''' - - - - world_borders_style - point_style - - - - - -''' - m = mapnik.Map(256, 256) - - try: - mapnik.load_map_from_string(m, map_string) - - # validate it loaded fine - eq_(m.layers[0].styles[0],'world_borders_style') - eq_(m.layers[0].styles[1],'point_style') - eq_(len(m.layers),1) - - # also assign a variable reference to that layer - # below we will test that this variable references - # the same object that is attached to the map - lyr = m.layers[0] - - # ensure that there was no datasource for the layer... - eq_(m.layers[0].datasource,None) - eq_(lyr.datasource,None) - - # also note that since the srs was black it defaulted to wgs84 - eq_(m.layers[0].srs,'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs') - eq_(lyr.srs,'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs') - - # now add a datasource one... - ds = mapnik.Shapefile(file='../data/shp/world_merc.shp') - m.layers[0].datasource = ds - - # now ensure it is attached - eq_(m.layers[0].datasource.describe()['name'],"shape") - eq_(lyr.datasource.describe()['name'],"shape") - - # and since we have now added a shapefile in spherical mercator, adjust the projection - lyr.srs = '+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs' - - # test that assignment - eq_(m.layers[0].srs,'+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs') - eq_(lyr.srs,'+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs') - except RuntimeError, e: - # only test datasources that we have installed - if not 'Could not create datasource' in str(e): - raise RuntimeError(e) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/layer_test.py b/tests/python_tests/layer_test.py deleted file mode 100644 index 6ffd0ca40..000000000 --- a/tests/python_tests/layer_test.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from nose.tools import eq_ -from utilities import run_all -import mapnik - -# Map initialization -def test_layer_init(): - l = mapnik.Layer('test') - eq_(l.name,'test') - eq_(l.srs,'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs') - eq_(l.envelope(),mapnik.Box2d()) - eq_(l.clear_label_cache,False) - eq_(l.cache_features,False) - eq_(l.visible(1),True) - eq_(l.active,True) - eq_(l.datasource,None) - eq_(l.queryable,False) - eq_(l.minzoom,0.0) - eq_(l.maxzoom > 1e+6,True) - eq_(l.group_by,"") - eq_(l.maximum_extent,None) - eq_(l.buffer_size,None) - eq_(len(l.styles),0) - -if __name__ == "__main__": - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/load_map_test.py b/tests/python_tests/load_map_test.py deleted file mode 100644 index 5eb211ed5..000000000 --- a/tests/python_tests/load_map_test.py +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_ -from utilities import execution_path, run_all - -import os, glob, mapnik - -default_logging_severity = mapnik.logger.get_severity() - -def setup(): - # make the tests silent to suppress unsupported params from harfbuzz tests - # TODO: remove this after harfbuzz branch merges - mapnik.logger.set_severity(mapnik.severity_type.None) - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def teardown(): - mapnik.logger.set_severity(default_logging_severity) - -def test_broken_files(): - default_logging_severity = mapnik.logger.get_severity() - mapnik.logger.set_severity(mapnik.severity_type.None) - broken_files = glob.glob("../data/broken_maps/*.xml") - # Add a filename that doesn't exist - broken_files.append("../data/broken/does_not_exist.xml") - - failures = []; - for filename in broken_files: - try: - m = mapnik.Map(512, 512) - strict = True - mapnik.load_map(m, filename, strict) - failures.append('Loading broken map (%s) did not raise RuntimeError!' % filename) - except RuntimeError: - pass - eq_(len(failures),0,'\n'+'\n'.join(failures)) - mapnik.logger.set_severity(default_logging_severity) - -def test_can_parse_xml_with_deprecated_properties(): - default_logging_severity = mapnik.logger.get_severity() - mapnik.logger.set_severity(mapnik.severity_type.None) - files_with_deprecated_props = glob.glob("../data/deprecated_maps/*.xml") - - failures = []; - for filename in files_with_deprecated_props: - try: - m = mapnik.Map(512, 512) - strict = True - mapnik.load_map(m, filename, strict) - base_path = os.path.dirname(filename) - mapnik.load_map_from_string(m,open(filename,'rb').read(),strict,base_path) - except RuntimeError, e: - # only test datasources that we have installed - if not 'Could not create datasource' in str(e) \ - and not 'could not connect' in str(e): - failures.append('Failed to load valid map %s (%s)' % (filename,e)) - eq_(len(failures),0,'\n'+'\n'.join(failures)) - mapnik.logger.set_severity(default_logging_severity) - -def test_good_files(): - good_files = glob.glob("../data/good_maps/*.xml") - good_files.extend(glob.glob("../visual_tests/styles/*.xml")) - - failures = []; - for filename in good_files: - try: - m = mapnik.Map(512, 512) - strict = True - mapnik.load_map(m, filename, strict) - base_path = os.path.dirname(filename) - mapnik.load_map_from_string(m,open(filename,'rb').read(),strict,base_path) - except RuntimeError, e: - # only test datasources that we have installed - if not 'Could not create datasource' in str(e) \ - and not 'could not connect' in str(e): - failures.append('Failed to load valid map %s (%s)' % (filename,e)) - eq_(len(failures),0,'\n'+'\n'.join(failures)) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/map_query_test.py b/tests/python_tests/map_query_test.py deleted file mode 100644 index 4035f7ae9..000000000 --- a/tests/python_tests/map_query_test.py +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_,raises,assert_almost_equal -from utilities import execution_path, run_all -import os, mapnik - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -# map has no layers -@raises(IndexError) -def test_map_query_throw1(): - m = mapnik.Map(256,256) - m.zoom_to_box(mapnik.Box2d(-1,-1,0,0)) - m.query_point(0,0,0) - -# only positive indexes -@raises(IndexError) -def test_map_query_throw2(): - m = mapnik.Map(256,256) - m.query_point(-1,0,0) - -# map has never been zoomed (nodata) -@raises(RuntimeError) -def test_map_query_throw3(): - m = mapnik.Map(256,256) - m.query_point(0,0,0) - -if 'shape' in mapnik.DatasourceCache.plugin_names(): - # map has never been zoomed (even with data) - @raises(RuntimeError) - def test_map_query_throw4(): - m = mapnik.Map(256,256) - mapnik.load_map(m,'../data/good_maps/agg_poly_gamma_map.xml') - m.query_point(0,0,0) - - # invalid coords in general (do not intersect) - @raises(RuntimeError) - def test_map_query_throw5(): - m = mapnik.Map(256,256) - mapnik.load_map(m,'../data/good_maps/agg_poly_gamma_map.xml') - m.zoom_all() - m.query_point(0,9999999999999999,9999999999999999) - - def test_map_query_works1(): - m = mapnik.Map(256,256) - mapnik.load_map(m,'../data/good_maps/wgs842merc_reprojection.xml') - merc_bounds = mapnik.Box2d(-20037508.34,-20037508.34,20037508.34,20037508.34) - m.maximum_extent = merc_bounds - m.zoom_all() - fs = m.query_point(0,-11012435.5376, 4599674.6134) # somewhere in kansas - feat = fs.next() - eq_(feat.attributes['NAME_FORMA'],u'United States of America') - - def test_map_query_works2(): - m = mapnik.Map(256,256) - mapnik.load_map(m,'../data/good_maps/merc2wgs84_reprojection.xml') - wgs84_bounds = mapnik.Box2d(-179.999999975,-85.0511287776,179.999999975,85.0511287776) - m.maximum_extent = wgs84_bounds - # caution - will go square due to evil aspect_fix_mode backhandedness - m.zoom_all() - #mapnik.render_to_file(m,'works2.png') - # validate that aspect_fix_mode modified the bbox reasonably - e = m.envelope() - assert_almost_equal(e.minx, -179.999999975, places=7) - assert_almost_equal(e.miny, -167.951396161, places=7) - assert_almost_equal(e.maxx, 179.999999975, places=7) - assert_almost_equal(e.maxy, 192.048603789, places=7) - fs = m.query_point(0,-98.9264, 38.1432) # somewhere in kansas - feat = fs.next() - eq_(feat.attributes['NAME'],u'United States') - - def test_map_query_in_pixels_works1(): - m = mapnik.Map(256,256) - mapnik.load_map(m,'../data/good_maps/wgs842merc_reprojection.xml') - merc_bounds = mapnik.Box2d(-20037508.34,-20037508.34,20037508.34,20037508.34) - m.maximum_extent = merc_bounds - m.zoom_all() - fs = m.query_map_point(0,55,100) # somewhere in middle of us - feat = fs.next() - eq_(feat.attributes['NAME_FORMA'],u'United States of America') - - def test_map_query_in_pixels_works2(): - m = mapnik.Map(256,256) - mapnik.load_map(m,'../data/good_maps/merc2wgs84_reprojection.xml') - wgs84_bounds = mapnik.Box2d(-179.999999975,-85.0511287776,179.999999975,85.0511287776) - m.maximum_extent = wgs84_bounds - # caution - will go square due to evil aspect_fix_mode backhandedness - m.zoom_all() - # validate that aspect_fix_mode modified the bbox reasonably - e = m.envelope() - assert_almost_equal(e.minx, -179.999999975, places=7) - assert_almost_equal(e.miny, -167.951396161, places=7) - assert_almost_equal(e.maxx, 179.999999975, places=7) - assert_almost_equal(e.maxy, 192.048603789, places=7) - fs = m.query_map_point(0,55,100) # somewhere in Canada - feat = fs.next() - eq_(feat.attributes['NAME'],u'Canada') - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/mapnik_config_test.py b/tests/python_tests/mapnik_config_test.py deleted file mode 100644 index 52b28422a..000000000 --- a/tests/python_tests/mapnik_config_test.py +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_ -from utilities import run_all -from subprocess import Popen, PIPE - -def test_mapnik_config_no_args(): - process = Popen('mapnik-config', shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE) - result = process.communicate() - eq_('Usage: mapnik-config' in result[0],True) - eq_(result[1],'') - eq_(process.returncode,1) - -def test_mapnik_config_help(): - process = Popen('mapnik-config --help', shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE) - result = process.communicate() - eq_('Usage: mapnik-config' in result[0],True) - eq_(result[1],'') - eq_(process.returncode,0) - -def test_mapnik_config_help_short(): - process = Popen('mapnik-config -h', shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE) - result = process.communicate() - eq_('Usage: mapnik-config' in result[0],True) - eq_(result[1],'') - eq_(process.returncode,0) - -def test_mapnik_config_valid_opts(): - valid_args = [ - '-h', - '--help', - '-v', - '--version', - '--version-number', - '--git-revision', - '--git-describe', - '--fonts', - '--input-plugins', - '--defines', - '--prefix', - '--lib-name', - '--libs', - '--dep-libs', - '--ldflags', - '--includes', - '--dep-includes', - '--cxxflags', - '--cflags', - '--all-flags', - '--cxx' - ] - for item in valid_args: - cmd = 'mapnik-config ' + item - process = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE) - result = process.communicate() - eq_(process.returncode,0) - eq_(len(result[0]) > 1,True,cmd) - eq_(result[1],'') - -def test_mapnik_config_invalid_option(): - cmd = 'mapnik-config --invalid-does-not-exist' - process = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE) - result = process.communicate() - eq_(process.returncode,0) - eq_(result[0].strip(),'') - eq_(result[1].strip(),'unknown option --invalid-does-not-exist') - -def test_mapnik_config_valid_and_invalid_option(): - cmd = 'mapnik-config --libs --invalid-does-not-exist' - process = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE) - result = process.communicate() - eq_('mapnik' in result[0],True) - eq_(result[1].strip(),'unknown option --invalid-does-not-exist') - eq_(process.returncode,0) - -if __name__ == "__main__": - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/mapnik_logger_test.py b/tests/python_tests/mapnik_logger_test.py deleted file mode 100644 index c27ff46a0..000000000 --- a/tests/python_tests/mapnik_logger_test.py +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env python -from nose.tools import eq_ -from utilities import run_all -import mapnik - -def test_logger_init(): - eq_(mapnik.severity_type.Debug,0) - eq_(mapnik.severity_type.Warn,1) - eq_(mapnik.severity_type.Error,2) - eq_(mapnik.severity_type.None,3) - default = mapnik.logger.get_severity() - mapnik.logger.set_severity(mapnik.severity_type.Debug) - eq_(mapnik.logger.get_severity(),mapnik.severity_type.Debug) - mapnik.logger.set_severity(default) - eq_(mapnik.logger.get_severity(),default) - -if __name__ == "__main__": - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/mapnik_test_data_test.py b/tests/python_tests/mapnik_test_data_test.py deleted file mode 100644 index b4226e125..000000000 --- a/tests/python_tests/mapnik_test_data_test.py +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from utilities import execution_path, run_all -import os, mapnik -from glob import glob - -default_logging_severity = mapnik.logger.get_severity() - -def setup(): - mapnik.logger.set_severity(mapnik.severity_type.None) - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def teardown(): - mapnik.logger.set_severity(default_logging_severity) - -plugin_mapping = { - '.csv' : ['csv'], - '.json': ['geojson','ogr'], - '.tif' : ['gdal'], - #'.tif' : ['gdal','raster'], - '.kml' : ['ogr'], - '.gpx' : ['ogr'], - '.vrt' : ['gdal'] -} - -def test_opening_data(): - # https://github.com/mapbox/mapnik-test-data - # cd tests/data - # git clone --depth 1 https://github.com/mapbox/mapnik-test-data - if os.path.exists('../data/mapnik-test-data/'): - files = glob('../data/mapnik-test-data/data/*/*.*') - for filepath in files: - ext = os.path.splitext(filepath)[1] - if plugin_mapping.get(ext): - #print 'testing opening %s' % filepath - if 'topo' in filepath: - kwargs = {'type': 'ogr','file': filepath} - kwargs['layer_by_index'] = 0 - try: - mapnik.Datasource(**kwargs) - except Exception, e: - print 'could not open, %s: %s' % (kwargs,e) - else: - for plugin in plugin_mapping[ext]: - kwargs = {'type': plugin,'file': filepath} - if plugin is 'ogr': - kwargs['layer_by_index'] = 0 - try: - mapnik.Datasource(**kwargs) - except Exception, e: - print 'could not open, %s: %s' % (kwargs,e) - #else: - # print 'skipping opening %s' % filepath - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/markers_complex_rendering_test.py b/tests/python_tests/markers_complex_rendering_test.py deleted file mode 100644 index efce684fa..000000000 --- a/tests/python_tests/markers_complex_rendering_test.py +++ /dev/null @@ -1,43 +0,0 @@ -#coding=utf8 -import os -import mapnik -from utilities import execution_path, run_all -from nose.tools import eq_ - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -if 'csv' in mapnik.DatasourceCache.plugin_names(): - def test_marker_ellipse_render1(): - m = mapnik.Map(256,256) - mapnik.load_map(m,'../data/good_maps/marker_ellipse_transform.xml') - m.zoom_all() - im = mapnik.Image(m.width,m.height) - mapnik.render(m,im) - actual = '/tmp/mapnik-marker-ellipse-render1.png' - expected = 'images/support/mapnik-marker-ellipse-render1.png' - im.save(actual,'png32') - if os.environ.get('UPDATE'): - im.save(expected,'png32') - expected_im = mapnik.Image.open(expected) - eq_(im.tostring('png32'),expected_im.tostring('png32'), 'failed comparing actual (%s) and expected (%s)' % (actual,'tests/python_tests/'+ expected)) - - def test_marker_ellipse_render2(): - m = mapnik.Map(256,256) - mapnik.load_map(m,'../data/good_maps/marker_ellipse_transform2.xml') - m.zoom_all() - im = mapnik.Image(m.width,m.height) - mapnik.render(m,im) - actual = '/tmp/mapnik-marker-ellipse-render2.png' - expected = 'images/support/mapnik-marker-ellipse-render2.png' - im.save(actual,'png32') - if os.environ.get('UPDATE'): - im.save(expected,'png32') - expected_im = mapnik.Image.open(expected) - eq_(im.tostring('png32'),expected_im.tostring('png32'), 'failed comparing actual (%s) and expected (%s)' % (actual,'tests/python_tests/'+ expected)) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/memory_datasource_test.py b/tests/python_tests/memory_datasource_test.py deleted file mode 100644 index bd82beaef..000000000 --- a/tests/python_tests/memory_datasource_test.py +++ /dev/null @@ -1,34 +0,0 @@ -#encoding: utf8 -import mapnik -from utilities import run_all -from nose.tools import eq_ - -def test_add_feature(): - md = mapnik.MemoryDatasource() - eq_(md.num_features(), 0) - context = mapnik.Context() - context.push('foo') - feature = mapnik.Feature(context,1) - feature['foo'] = 'bar' - feature.geometry = mapnik.Geometry.from_wkt('POINT(2 3)') - md.add_feature(feature) - eq_(md.num_features(), 1) - - featureset = md.features_at_point(mapnik.Coord(2,3)) - retrieved = [] - - for feat in featureset: - retrieved.append(feat) - - eq_(len(retrieved), 1) - f = retrieved[0] - eq_(f['foo'], 'bar') - - featureset = md.features_at_point(mapnik.Coord(20,30)) - retrieved = [] - for feat in featureset: - retrieved.append(feat) - eq_(len(retrieved), 0) - -if __name__ == "__main__": - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/multi_tile_raster_test.py b/tests/python_tests/multi_tile_raster_test.py deleted file mode 100644 index 7dda8760f..000000000 --- a/tests/python_tests/multi_tile_raster_test.py +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_ -from utilities import execution_path, run_all -import os, mapnik - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_multi_tile_policy(): - srs = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' - lyr = mapnik.Layer('raster') - if 'raster' in mapnik.DatasourceCache.plugin_names(): - lyr.datasource = mapnik.Raster( - file = '../data/raster_tiles/${x}/${y}.tif', - lox = -180, - loy = -90, - hix = 180, - hiy = 90, - multi = 1, - tile_size = 256, - x_width = 2, - y_width = 2 - ) - lyr.srs = srs - _map = mapnik.Map(256, 256, srs) - style = mapnik.Style() - rule = mapnik.Rule() - sym = mapnik.RasterSymbolizer() - rule.symbols.append(sym) - style.rules.append(rule) - _map.append_style('foo', style) - lyr.styles.append('foo') - _map.layers.append(lyr) - _map.zoom_to_box(lyr.envelope()) - - im = mapnik.Image(_map.width, _map.height) - mapnik.render(_map, im) - - # test green chunk - eq_(im.view(0,64,1,1).tostring(), '\x00\xff\x00\xff') - eq_(im.view(127,64,1,1).tostring(), '\x00\xff\x00\xff') - eq_(im.view(0,127,1,1).tostring(), '\x00\xff\x00\xff') - eq_(im.view(127,127,1,1).tostring(), '\x00\xff\x00\xff') - - # test blue chunk - eq_(im.view(128,64,1,1).tostring(), '\x00\x00\xff\xff') - eq_(im.view(255,64,1,1).tostring(), '\x00\x00\xff\xff') - eq_(im.view(128,127,1,1).tostring(), '\x00\x00\xff\xff') - eq_(im.view(255,127,1,1).tostring(), '\x00\x00\xff\xff') - - # test red chunk - eq_(im.view(0,128,1,1).tostring(), '\xff\x00\x00\xff') - eq_(im.view(127,128,1,1).tostring(), '\xff\x00\x00\xff') - eq_(im.view(0,191,1,1).tostring(), '\xff\x00\x00\xff') - eq_(im.view(127,191,1,1).tostring(), '\xff\x00\x00\xff') - - # test magenta chunk - eq_(im.view(128,128,1,1).tostring(), '\xff\x00\xff\xff') - eq_(im.view(255,128,1,1).tostring(), '\xff\x00\xff\xff') - eq_(im.view(128,191,1,1).tostring(), '\xff\x00\xff\xff') - eq_(im.view(255,191,1,1).tostring(), '\xff\x00\xff\xff') - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/object_test.py b/tests/python_tests/object_test.py deleted file mode 100644 index 0f23e7118..000000000 --- a/tests/python_tests/object_test.py +++ /dev/null @@ -1,569 +0,0 @@ -# #!/usr/bin/env python -# # -*- coding: utf-8 -*- - -# import os -# from nose.tools import * -# from utilities import execution_path, run_all -# import tempfile - -# import mapnik - -# def setup(): -# # All of the paths used are relative, if we run the tests -# # from another directory we need to chdir() -# os.chdir(execution_path('.')) - -# def test_debug_symbolizer(): -# s = mapnik.DebugSymbolizer() -# eq_(s.mode,mapnik.debug_symbolizer_mode.collision) - -# def test_raster_symbolizer(): -# s = mapnik.RasterSymbolizer() -# eq_(s.comp_op,mapnik.CompositeOp.src_over) # note: mode is deprecated -# eq_(s.scaling,mapnik.scaling_method.NEAR) -# eq_(s.opacity,1.0) -# eq_(s.colorizer,None) -# eq_(s.filter_factor,-1) -# eq_(s.mesh_size,16) -# eq_(s.premultiplied,None) -# s.premultiplied = True -# eq_(s.premultiplied,True) - -# def test_line_pattern(): -# s = mapnik.LinePatternSymbolizer(mapnik.PathExpression('../data/images/dummy.png')) -# eq_(s.filename, '../data/images/dummy.png') -# eq_(s.smooth,0.0) -# eq_(s.transform,'') -# eq_(s.offset,0.0) -# eq_(s.comp_op,mapnik.CompositeOp.src_over) -# eq_(s.clip,True) - -# def test_line_symbolizer(): -# s = mapnik.LineSymbolizer() -# eq_(s.rasterizer, mapnik.line_rasterizer.FULL) -# eq_(s.smooth,0.0) -# eq_(s.comp_op,mapnik.CompositeOp.src_over) -# eq_(s.clip,True) -# eq_(s.stroke.width, 1) -# eq_(s.stroke.opacity, 1) -# eq_(s.stroke.color, mapnik.Color('black')) -# eq_(s.stroke.line_cap, mapnik.line_cap.BUTT_CAP) -# eq_(s.stroke.line_join, mapnik.line_join.MITER_JOIN) - -# l = mapnik.LineSymbolizer(mapnik.Color('blue'), 5.0) - -# eq_(l.stroke.width, 5) -# eq_(l.stroke.opacity, 1) -# eq_(l.stroke.color, mapnik.Color('blue')) -# eq_(l.stroke.line_cap, mapnik.line_cap.BUTT_CAP) -# eq_(l.stroke.line_join, mapnik.line_join.MITER_JOIN) - -# s = mapnik.Stroke(mapnik.Color('blue'), 5.0) -# l = mapnik.LineSymbolizer(s) - -# eq_(l.stroke.width, 5) -# eq_(l.stroke.opacity, 1) -# eq_(l.stroke.color, mapnik.Color('blue')) -# eq_(l.stroke.line_cap, mapnik.line_cap.BUTT_CAP) -# eq_(l.stroke.line_join, mapnik.line_join.MITER_JOIN) - -# def test_line_symbolizer_stroke_reference(): -# l = mapnik.LineSymbolizer(mapnik.Color('green'),0.1) -# l.stroke.add_dash(.1,.1) -# l.stroke.add_dash(.1,.1) -# eq_(l.stroke.get_dashes(), [(.1,.1),(.1,.1)]) -# eq_(l.stroke.color,mapnik.Color('green')) -# eq_(l.stroke.opacity,1.0) -# assert_almost_equal(l.stroke.width,0.1) - -# # https://github.com/mapnik/mapnik/issues/1427 -# def test_stroke_dash_api(): -# stroke = mapnik.Stroke() -# dashes = [(1.0,1.0)] -# stroke.dasharray = dashes -# eq_(stroke.dasharray, dashes) -# stroke.add_dash(.1,.1) -# dashes.append((.1,.1)) -# eq_(stroke.dasharray, dashes) - - -# def test_text_symbolizer(): -# s = mapnik.TextSymbolizer() -# eq_(s.comp_op,mapnik.CompositeOp.src_over) -# eq_(s.clip,True) -# eq_(s.halo_rasterizer,mapnik.halo_rasterizer.FULL) - -# # https://github.com/mapnik/mapnik/issues/1420 -# eq_(s.text_transform, mapnik.text_transform.NONE) - -# # old args required method -# ts = mapnik.TextSymbolizer(mapnik.Expression('[Field_Name]'), 'Font Name', 8, mapnik.Color('black')) -# # eq_(str(ts.name), str(mapnik2.Expression('[Field_Name]'))) name field is no longer supported -# eq_(ts.format.face_name, 'Font Name') -# eq_(ts.format.text_size, 8) -# eq_(ts.format.fill, mapnik.Color('black')) -# eq_(ts.properties.label_placement, mapnik.label_placement.POINT_PLACEMENT) -# eq_(ts.properties.horizontal_alignment, mapnik.horizontal_alignment.AUTO) - -# def test_shield_symbolizer_init(): -# s = mapnik.ShieldSymbolizer(mapnik.Expression('[Field Name]'), 'DejaVu Sans Bold', 6, mapnik.Color('#000000'), mapnik.PathExpression('../data/images/dummy.png')) -# eq_(s.comp_op,mapnik.CompositeOp.src_over) -# eq_(s.clip,True) -# eq_(s.displacement, (0.0,0.0)) -# eq_(s.allow_overlap, False) -# eq_(s.avoid_edges, False) -# eq_(s.character_spacing,0) -# #eq_(str(s.name), str(mapnik2.Expression('[Field Name]'))) name field is no longer supported -# eq_(s.face_name, 'DejaVu Sans Bold') -# eq_(s.allow_overlap, False) -# eq_(s.fill, mapnik.Color('#000000')) -# eq_(s.halo_fill, mapnik.Color('rgb(255,255,255)')) -# eq_(s.halo_radius, 0) -# eq_(s.label_placement, mapnik.label_placement.POINT_PLACEMENT) -# eq_(s.minimum_distance, 0.0) -# eq_(s.text_ratio, 0) -# eq_(s.text_size, 6) -# eq_(s.wrap_width, 0) -# eq_(s.vertical_alignment, mapnik.vertical_alignment.AUTO) -# eq_(s.label_spacing, 0) -# eq_(s.label_position_tolerance, 0) -# # 22.5 * M_PI/180.0 initialized by default -# assert_almost_equal(s.max_char_angle_delta, 0.39269908169872414) - -# eq_(s.text_transform, mapnik.text_transform.NONE) -# eq_(s.line_spacing, 0) -# eq_(s.character_spacing, 0) - -# # r1341 -# eq_(s.wrap_before, False) -# eq_(s.horizontal_alignment, mapnik.horizontal_alignment.AUTO) -# eq_(s.justify_alignment, mapnik.justify_alignment.AUTO) -# eq_(s.opacity, 1.0) - -# # r2300 -# eq_(s.minimum_padding, 0.0) - -# # was mixed with s.opacity -# eq_(s.text_opacity, 1.0) - -# eq_(s.shield_displacement, (0.0,0.0)) -# # TODO - the pattern in bindings seems to be to get/set -# # strings for PathExpressions... should we pass objects? -# eq_(s.filename, '../data/images/dummy.png') - -# # 11c34b1: default transform list is empty, not identity matrix -# eq_(s.transform, '') - -# eq_(s.fontset, None) - -# # ShieldSymbolizer missing image file -# # images paths are now PathExpressions are evaluated at runtime -# # so it does not make sense to throw... -# #@raises(RuntimeError) -# #def test_shieldsymbolizer_missing_image(): -# # s = mapnik.ShieldSymbolizer(mapnik.Expression('[Field Name]'), 'DejaVu Sans Bold', 6, mapnik.Color('#000000'), mapnik.PathExpression('../#data/images/broken.png')) - -# def test_shield_symbolizer_modify(): -# s = mapnik.ShieldSymbolizer(mapnik.Expression('[Field Name]'), 'DejaVu Sans Bold', 6, mapnik.Color('#000000'), mapnik.PathExpression('../data/images/dummy.png')) -# # transform expression -# def check_transform(expr, expect_str=None): -# s.transform = expr -# eq_(s.transform, expr if expect_str is None else expect_str) -# check_transform("matrix(1 2 3 4 5 6)", "matrix(1, 2, 3, 4, 5, 6)") -# check_transform("matrix(1, 2, 3, 4, 5, 6 +7)", "matrix(1, 2, 3, 4, 5, (6+7))") -# check_transform("rotate([a])") -# check_transform("rotate([a] -2)", "rotate(([a]-2))") -# check_transform("rotate([a] -2 -3)", "rotate([a], -2, -3)") -# check_transform("rotate([a] -2 -3 -4)", "rotate(((([a]-2)-3)-4))") -# check_transform("rotate([a] -2, 3, 4)", "rotate(([a]-2), 3, 4)") -# check_transform("translate([tx]) rotate([a])") -# check_transform("scale([sx], [sy]/2)") -# # TODO check expected failures - -# def test_point_symbolizer(): -# p = mapnik.PointSymbolizer() -# eq_(p.filename,'') -# eq_(p.transform,'') -# eq_(p.opacity,1.0) -# eq_(p.allow_overlap,False) -# eq_(p.ignore_placement,False) -# eq_(p.comp_op,mapnik.CompositeOp.src_over) -# eq_(p.placement, mapnik.point_placement.CENTROID) - -# p = mapnik.PointSymbolizer(mapnik.PathExpression("../data/images/dummy.png")) -# p.allow_overlap = True -# p.opacity = 0.5 -# p.ignore_placement = True -# p.placement = mapnik.point_placement.INTERIOR -# eq_(p.allow_overlap, True) -# eq_(p.opacity, 0.5) -# eq_(p.filename,'../data/images/dummy.png') -# eq_(p.ignore_placement,True) -# eq_(p.placement, mapnik.point_placement.INTERIOR) - -# def test_markers_symbolizer(): -# p = mapnik.MarkersSymbolizer() -# eq_(p.allow_overlap, False) -# eq_(p.opacity,1.0) -# eq_(p.fill_opacity,None) -# eq_(p.filename,'shape://ellipse') -# eq_(p.placement,mapnik.marker_placement.POINT_PLACEMENT) -# eq_(p.multi_policy,mapnik.marker_multi_policy.EACH) -# eq_(p.fill,None) -# eq_(p.ignore_placement,False) -# eq_(p.spacing,100) -# eq_(p.max_error,0.2) -# eq_(p.width,None) -# eq_(p.height,None) -# eq_(p.transform,'') -# eq_(p.clip,True) -# eq_(p.comp_op,mapnik.CompositeOp.src_over) - - -# p.width = mapnik.Expression('12') -# p.height = mapnik.Expression('12') -# eq_(str(p.width),'12') -# eq_(str(p.height),'12') - -# p.width = mapnik.Expression('[field] + 2') -# p.height = mapnik.Expression('[field] + 2') -# eq_(str(p.width),'([field]+2)') -# eq_(str(p.height),'([field]+2)') - -# stroke = mapnik.Stroke() -# stroke.color = mapnik.Color('black') -# stroke.width = 1.0 - -# p.stroke = stroke -# p.fill = mapnik.Color('white') -# p.allow_overlap = True -# p.opacity = 0.5 -# p.fill_opacity = 0.5 -# p.placement = mapnik.marker_placement.LINE_PLACEMENT -# p.multi_policy = mapnik.marker_multi_policy.WHOLE - -# eq_(p.allow_overlap, True) -# eq_(p.opacity, 0.5) -# eq_(p.fill_opacity, 0.5) -# eq_(p.multi_policy,mapnik.marker_multi_policy.WHOLE) -# eq_(p.placement,mapnik.marker_placement.LINE_PLACEMENT) - -# #https://github.com/mapnik/mapnik/issues/1285 -# #https://github.com/mapnik/mapnik/issues/1427 -# p.marker_type = 'arrow' -# eq_(p.marker_type,'shape://arrow') -# eq_(p.filename,'shape://arrow') - - -# # PointSymbolizer missing image file -# # images paths are now PathExpressions are evaluated at runtime -# # so it does not make sense to throw... -# #@raises(RuntimeError) -# #def test_pointsymbolizer_missing_image(): -# # p = mapnik.PointSymbolizer(mapnik.PathExpression("../data/images/broken.png")) - -# def test_polygon_symbolizer(): -# p = mapnik.PolygonSymbolizer() -# eq_(p.smooth,0.0) -# eq_(p.comp_op,mapnik.CompositeOp.src_over) -# eq_(p.clip,True) -# eq_(p.fill, mapnik.Color('gray')) -# eq_(p.fill_opacity, 1) - -# p = mapnik.PolygonSymbolizer(mapnik.Color('blue')) - -# eq_(p.fill, mapnik.Color('blue')) -# eq_(p.fill_opacity, 1) - -# def test_building_symbolizer_init(): -# p = mapnik.BuildingSymbolizer() - -# eq_(p.fill, mapnik.Color('gray')) -# eq_(p.fill_opacity, 1) -# eq_(p.height,None) - -# def test_group_symbolizer_init(): -# s = mapnik.GroupSymbolizer() - -# p = mapnik.GroupSymbolizerProperties() - -# l = mapnik.PairLayout() -# l.item_margin = 5.0 -# p.set_layout(l) - -# r = mapnik.GroupRule(mapnik.Expression("[name%1]")) -# r.append(mapnik.PointSymbolizer()) -# p.add_rule(r) -# s.symbolizer_properties = p - -# eq_(s.comp_op,mapnik.CompositeOp.src_over) - -# def test_stroke_init(): -# s = mapnik.Stroke() - -# eq_(s.width, 1) -# eq_(s.opacity, 1) -# eq_(s.color, mapnik.Color('black')) -# eq_(s.line_cap, mapnik.line_cap.BUTT_CAP) -# eq_(s.line_join, mapnik.line_join.MITER_JOIN) -# eq_(s.gamma,1.0) - -# s = mapnik.Stroke(mapnik.Color('blue'), 5.0) -# s.gamma = .5 - -# eq_(s.width, 5) -# eq_(s.opacity, 1) -# eq_(s.color, mapnik.Color('blue')) -# eq_(s.gamma, .5) -# eq_(s.line_cap, mapnik.line_cap.BUTT_CAP) -# eq_(s.line_join, mapnik.line_join.MITER_JOIN) - -# def test_stroke_dash_arrays(): -# s = mapnik.Stroke() -# s.add_dash(1,2) -# s.add_dash(3,4) -# s.add_dash(5,6) - -# eq_(s.get_dashes(), [(1,2),(3,4),(5,6)]) - -# def test_map_init(): -# m = mapnik.Map(256, 256) - -# eq_(m.width, 256) -# eq_(m.height, 256) -# eq_(m.srs, '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs') -# eq_(m.base, '') -# eq_(m.maximum_extent, None) -# eq_(m.background_image, None) -# eq_(m.background_image_comp_op, mapnik.CompositeOp.src_over) -# eq_(m.background_image_opacity, 1.0) - -# m = mapnik.Map(256, 256, '+proj=latlong') -# eq_(m.srs, '+proj=latlong') - -# def test_map_style_access(): -# m = mapnik.Map(256, 256) -# sty = mapnik.Style() -# m.append_style("style",sty) -# styles = list(m.styles) -# eq_(len(styles),1) -# eq_(styles[0][0],'style') -# # returns a copy so let's just check it is the right instance -# eq_(isinstance(styles[0][1],mapnik.Style),True) - -# def test_map_maximum_extent_modification(): -# m = mapnik.Map(256, 256) -# eq_(m.maximum_extent, None) -# m.maximum_extent = mapnik.Box2d() -# eq_(m.maximum_extent, mapnik.Box2d()) -# m.maximum_extent = None -# eq_(m.maximum_extent, None) - -# # Map initialization from string -# def test_map_init_from_string(): -# map_string = ''' -# -# -# My Style -# -# shape -# ../../demo/data/boundaries -# -# -# ''' - -# m = mapnik.Map(600, 300) -# eq_(m.base, '') -# try: -# mapnik.load_map_from_string(m, map_string) -# eq_(m.base, './') -# mapnik.load_map_from_string(m, map_string, False, "") # this "" will have no effect -# eq_(m.base, './') - -# tmp_dir = tempfile.gettempdir() -# try: -# mapnik.load_map_from_string(m, map_string, False, tmp_dir) -# except RuntimeError: -# pass # runtime error expected because shapefile path should be wrong and datasource will throw -# eq_(m.base, tmp_dir) # tmp_dir will be set despite the exception because load_map mostly worked -# m.base = 'foo' -# mapnik.load_map_from_string(m, map_string, True, ".") -# eq_(m.base, '.') -# except RuntimeError, e: -# # only test datasources that we have installed -# if not 'Could not create datasource' in str(e): -# raise RuntimeError(e) - -# # Color initialization -# @raises(Exception) # Boost.Python.ArgumentError -# def test_color_init_errors(): -# c = mapnik.Color() - -# @raises(RuntimeError) -# def test_color_init_errors(): -# c = mapnik.Color('foo') # mapnik config - -# def test_color_init(): -# c = mapnik.Color('blue') - -# eq_(c.a, 255) -# eq_(c.r, 0) -# eq_(c.g, 0) -# eq_(c.b, 255) - -# eq_(c.to_hex_string(), '#0000ff') - -# c = mapnik.Color('#f2eff9') - -# eq_(c.a, 255) -# eq_(c.r, 242) -# eq_(c.g, 239) -# eq_(c.b, 249) - -# eq_(c.to_hex_string(), '#f2eff9') - -# c = mapnik.Color('rgb(50%,50%,50%)') - -# eq_(c.a, 255) -# eq_(c.r, 128) -# eq_(c.g, 128) -# eq_(c.b, 128) - -# eq_(c.to_hex_string(), '#808080') - -# c = mapnik.Color(0, 64, 128) - -# eq_(c.a, 255) -# eq_(c.r, 0) -# eq_(c.g, 64) -# eq_(c.b, 128) - -# eq_(c.to_hex_string(), '#004080') - -# c = mapnik.Color(0, 64, 128, 192) - -# eq_(c.a, 192) -# eq_(c.r, 0) -# eq_(c.g, 64) -# eq_(c.b, 128) - -# eq_(c.to_hex_string(), '#004080c0') - -# def test_color_equality(): - -# c1 = mapnik.Color('blue') -# c2 = mapnik.Color(0,0,255) -# c3 = mapnik.Color('black') - -# c3.r = 0 -# c3.g = 0 -# c3.b = 255 -# c3.a = 255 - -# eq_(c1, c2) -# eq_(c1, c3) - -# c1 = mapnik.Color(0, 64, 128) -# c2 = mapnik.Color(0, 64, 128) -# c3 = mapnik.Color(0, 0, 0) - -# c3.r = 0 -# c3.g = 64 -# c3.b = 128 - -# eq_(c1, c2) -# eq_(c1, c3) - -# c1 = mapnik.Color(0, 64, 128, 192) -# c2 = mapnik.Color(0, 64, 128, 192) -# c3 = mapnik.Color(0, 0, 0, 255) - -# c3.r = 0 -# c3.g = 64 -# c3.b = 128 -# c3.a = 192 - -# eq_(c1, c2) -# eq_(c1, c3) - -# c1 = mapnik.Color('rgb(50%,50%,50%)') -# c2 = mapnik.Color(128, 128, 128, 255) -# c3 = mapnik.Color('#808080') -# c4 = mapnik.Color('gray') - -# eq_(c1, c2) -# eq_(c1, c3) -# eq_(c1, c4) - -# c1 = mapnik.Color('hsl(0, 100%, 50%)') # red -# c2 = mapnik.Color('hsl(120, 100%, 50%)') # lime -# c3 = mapnik.Color('hsla(240, 100%, 50%, 0.5)') # semi-transparent solid blue - -# eq_(c1, mapnik.Color('red')) -# eq_(c2, mapnik.Color('lime')) -# eq_(c3, mapnik.Color(0,0,255,128)) - -# def test_rule_init(): -# min_scale = 5 -# max_scale = 10 - -# r = mapnik.Rule() - -# eq_(r.name, '') -# eq_(r.min_scale, 0) -# eq_(r.max_scale, float('inf')) -# eq_(r.has_else(), False) -# eq_(r.has_also(), False) - -# r = mapnik.Rule() - -# r.set_else(True) -# eq_(r.has_else(), True) -# eq_(r.has_also(), False) - -# r = mapnik.Rule() - -# r.set_also(True) -# eq_(r.has_else(), False) -# eq_(r.has_also(), True) - -# r = mapnik.Rule("Name") - -# eq_(r.name, 'Name') -# eq_(r.min_scale, 0) -# eq_(r.max_scale, float('inf')) -# eq_(r.has_else(), False) -# eq_(r.has_also(), False) - -# r = mapnik.Rule("Name") - -# eq_(r.name, 'Name') -# eq_(r.min_scale, 0) -# eq_(r.max_scale, float('inf')) -# eq_(r.has_else(), False) -# eq_(r.has_also(), False) - -# r = mapnik.Rule("Name", min_scale) - -# eq_(r.name, 'Name') -# eq_(r.min_scale, min_scale) -# eq_(r.max_scale, float('inf')) -# eq_(r.has_else(), False) -# eq_(r.has_also(), False) - -# r = mapnik.Rule("Name", min_scale, max_scale) - -# eq_(r.name, 'Name') -# eq_(r.min_scale, min_scale) -# eq_(r.max_scale, max_scale) -# eq_(r.has_else(), False) -# eq_(r.has_also(), False) - -# if __name__ == "__main__": -# setup() -# run_all(eval(x) for x in dir() if x.startswith("test_")) diff --git a/tests/python_tests/ogr_and_shape_geometries_test.py b/tests/python_tests/ogr_and_shape_geometries_test.py deleted file mode 100644 index 5c6918e28..000000000 --- a/tests/python_tests/ogr_and_shape_geometries_test.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_ -from utilities import execution_path, run_all -import os, mapnik - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -# TODO - fix truncation in shapefile... -polys = ["POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))", - "POLYGON ((35 10, 10 20, 15 40, 45 45, 35 10),(20 30, 35 35, 30 20, 20 30))", - "MULTIPOLYGON (((30 20, 10 40, 45 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))" - "MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 45 20, 30 5, 10 10, 10 30, 20 35),(30 20, 20 25, 20 15, 30 20)))" - ] - -plugins = mapnik.DatasourceCache.plugin_names() -if 'shape' in plugins and 'ogr' in plugins: - - def ensure_geometries_are_interpreted_equivalently(filename): - ds1 = mapnik.Ogr(file=filename,layer_by_index=0) - ds2 = mapnik.Shapefile(file=filename) - fs1 = ds1.featureset() - fs2 = ds2.featureset() - count = 0; - import itertools - for feat1,feat2 in itertools.izip(fs1, fs2): - count += 1 - eq_(feat1.attributes,feat2.attributes) - # TODO - revisit this: https://github.com/mapnik/mapnik/issues/1093 - # eq_(feat1.to_geojson(),feat2.to_geojson()) - #eq_(feat1.geometries().to_wkt(),feat2.geometries().to_wkt()) - #eq_(feat1.geometries().to_wkb(mapnik.wkbByteOrder.NDR),feat2.geometries().to_wkb(mapnik.wkbByteOrder.NDR)) - #eq_(feat1.geometries().to_wkb(mapnik.wkbByteOrder.XDR),feat2.geometries().to_wkb(mapnik.wkbByteOrder.XDR)) - - def test_simple_polys(): - ensure_geometries_are_interpreted_equivalently('../data/shp/wkt_poly.shp') - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/ogr_test.py b/tests/python_tests/ogr_test.py deleted file mode 100644 index b30c24527..000000000 --- a/tests/python_tests/ogr_test.py +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from nose.tools import eq_,assert_almost_equal,raises -from utilities import execution_path, run_all -import os, mapnik - -try: - import json -except ImportError: - import simplejson as json - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -if 'ogr' in mapnik.DatasourceCache.plugin_names(): - - # Shapefile initialization - def test_shapefile_init(): - ds = mapnik.Ogr(file='../../demo/data/boundaries.shp',layer_by_index=0) - e = ds.envelope() - assert_almost_equal(e.minx, -11121.6896651, places=7) - assert_almost_equal(e.miny, -724724.216526, places=6) - assert_almost_equal(e.maxx, 2463000.67866, places=5) - assert_almost_equal(e.maxy, 1649661.267, places=3) - meta = ds.describe() - eq_(meta['geometry_type'],mapnik.DataGeometryType.Polygon) - eq_('+proj=lcc' in meta['proj4'],True) - - # Shapefile properties - def test_shapefile_properties(): - ds = mapnik.Ogr(file='../../demo/data/boundaries.shp',layer_by_index=0) - f = ds.features_at_point(ds.envelope().center(), 0.001).features[0] - eq_(ds.geometry_type(),mapnik.DataGeometryType.Polygon) - - eq_(f['CGNS_FID'], u'6f733341ba2011d892e2080020a0f4c9') - eq_(f['COUNTRY'], u'CAN') - eq_(f['F_CODE'], u'FA001') - eq_(f['NAME_EN'], u'Quebec') - eq_(f['Shape_Area'], 1512185733150.0) - eq_(f['Shape_Leng'], 19218883.724300001) - meta = ds.describe() - eq_(meta['geometry_type'],mapnik.DataGeometryType.Polygon) - # NOTE: encoding is latin1 but gdal >= 1.9 should now expose utf8 encoded features - # See SHAPE_ENCODING for overriding: http://gdal.org/ogr/drv_shapefile.html - # Failure for the NOM_FR field is expected for older gdal - #eq_(f['NOM_FR'], u'Qu\xe9bec') - #eq_(f['NOM_FR'], u'Québec') - - @raises(RuntimeError) - def test_that_nonexistant_query_field_throws(**kwargs): - ds = mapnik.Ogr(file='../data/shp/world_merc.shp',layer_by_index=0) - eq_(len(ds.fields()),11) - eq_(ds.fields(),['FIPS', 'ISO2', 'ISO3', 'UN', 'NAME', 'AREA', 'POP2005', 'REGION', 'SUBREGION', 'LON', 'LAT']) - eq_(ds.field_types(),['str', 'str', 'str', 'int', 'str', 'int', 'int', 'int', 'int', 'float', 'float']) - query = mapnik.Query(ds.envelope()) - for fld in ds.fields(): - query.add_property_name(fld) - # also add an invalid one, triggering throw - query.add_property_name('bogus') - ds.features(query) - - # disabled because OGR prints an annoying error: ERROR 1: Invalid Point object. Missing 'coordinates' member. - #def test_handling_of_null_features(): - # ds = mapnik.Ogr(file='../data/json/null_feature.geojson',layer_by_index=0) - # fs = ds.all_features() - # eq_(len(fs),1) - - # OGR plugin extent parameter - def test_ogr_extent_parameter(): - ds = mapnik.Ogr(file='../data/shp/world_merc.shp',layer_by_index=0,extent='-1,-1,1,1') - e = ds.envelope() - eq_(e.minx,-1) - eq_(e.miny,-1) - eq_(e.maxx,1) - eq_(e.maxy,1) - meta = ds.describe() - eq_(meta['geometry_type'],mapnik.DataGeometryType.Polygon) - eq_('+proj=merc' in meta['proj4'],True) - - def test_ogr_reading_gpx_waypoint(): - ds = mapnik.Ogr(file='../data/gpx/empty.gpx',layer='waypoints') - e = ds.envelope() - eq_(e.minx,-122) - eq_(e.miny,48) - eq_(e.maxx,-122) - eq_(e.maxy,48) - meta = ds.describe() - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - eq_('+proj=longlat' in meta['proj4'],True) - - def test_ogr_empty_data_should_not_throw(): - default_logging_severity = mapnik.logger.get_severity() - mapnik.logger.set_severity(mapnik.severity_type.None) - # use logger to silence expected warnings - for layer in ['routes', 'tracks', 'route_points', 'track_points']: - ds = mapnik.Ogr(file='../data/gpx/empty.gpx',layer=layer) - e = ds.envelope() - eq_(e.minx,0) - eq_(e.miny,0) - eq_(e.maxx,0) - eq_(e.maxy,0) - mapnik.logger.set_severity(default_logging_severity) - meta = ds.describe() - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - eq_('+proj=longlat' in meta['proj4'],True) - - # disabled because OGR prints an annoying error: ERROR 1: Invalid Point object. Missing 'coordinates' member. - #def test_handling_of_null_features(): - # ds = mapnik.Ogr(file='../data/json/null_feature.geojson',layer_by_index=0) - # fs = ds.all_features() - # eq_(len(fs),1) - - def test_geometry_type(): - ds = mapnik.Ogr(file='../data/csv/wkt.vrt',layer_by_index=0) - e = ds.envelope() - assert_almost_equal(e.minx, 1.0, places=1) - assert_almost_equal(e.miny, 1.0, places=1) - assert_almost_equal(e.maxx, 45.0, places=1) - assert_almost_equal(e.maxy, 45.0, places=1) - meta = ds.describe() - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - eq_('+proj=longlat' in meta['proj4'],True) - fs = ds.featureset() - feat = fs.next() - actual = json.loads(feat.to_geojson()) - eq_(actual,{u'geometry': {u'type': u'Point', u'coordinates': [30, 10]}, u'type': u'Feature', u'id': 2, u'properties': {u'type': u'point', u'WKT': u' POINT (30 10)'}}) - feat = fs.next() - actual = json.loads(feat.to_geojson()) - eq_(actual,{u'geometry': {u'type': u'LineString', u'coordinates': [[30, 10], [10, 30], [40, 40]]}, u'type': u'Feature', u'id': 3, u'properties': {u'type': u'linestring', u'WKT': u' LINESTRING (30 10, 10 30, 40 40)'}}) - feat = fs.next() - actual = json.loads(feat.to_geojson()) - eq_(actual,{u'geometry': {u'type': u'Polygon', u'coordinates': [[[30, 10], [10, 20], [20, 40], [40, 40], [30, 10]]]}, u'type': u'Feature', u'id': 4, u'properties': {u'type': u'polygon', u'WKT': u' POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))'}}) - feat = fs.next() - actual = json.loads(feat.to_geojson()) - eq_(actual,{u'geometry': {u'type': u'Polygon', u'coordinates': [[[35, 10], [10, 20], [15, 40], [45, 45], [35, 10]], [[20, 30], [35, 35], [30, 20], [20, 30]]]}, u'type': u'Feature', u'id': 5, u'properties': {u'type': u'polygon', u'WKT': u' POLYGON ((35 10, 10 20, 15 40, 45 45, 35 10),(20 30, 35 35, 30 20, 20 30))'}}) - feat = fs.next() - actual = json.loads(feat.to_geojson()) - eq_(actual,{u'geometry': {u'type': u'MultiPoint', u'coordinates': [[10, 40], [40, 30], [20, 20], [30, 10]]}, u'type': u'Feature', u'id': 6, u'properties': {u'type': u'multipoint', u'WKT': u' MULTIPOINT ((10 40), (40 30), (20 20), (30 10))'}}) - feat = fs.next() - actual = json.loads(feat.to_geojson()) - eq_(actual,{u'geometry': {u'type': u'MultiLineString', u'coordinates': [[[10, 10], [20, 20], [10, 40]], [[40, 40], [30, 30], [40, 20], [30, 10]]]}, u'type': u'Feature', u'id': 7, u'properties': {u'type': u'multilinestring', u'WKT': u' MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))'}}) - feat = fs.next() - actual = json.loads(feat.to_geojson()) - eq_(actual,{u'geometry': {u'type': u'MultiPolygon', u'coordinates': [[[[30, 20], [10, 40], [45, 40], [30, 20]]], [[[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]]]}, u'type': u'Feature', u'id': 8, u'properties': {u'type': u'multipolygon', u'WKT': u' MULTIPOLYGON (((30 20, 10 40, 45 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))'}}) - feat = fs.next() - actual = json.loads(feat.to_geojson()) - eq_(actual,{u'geometry': {u'type': u'MultiPolygon', u'coordinates': [[[[40, 40], [20, 45], [45, 30], [40, 40]]], [[[20, 35], [45, 20], [30, 5], [10, 10], [10, 30], [20, 35]], [[30, 20], [20, 25], [20, 15], [30, 20]]]]}, u'type': u'Feature', u'id': 9, u'properties': {u'type': u'multipolygon', u'WKT': u' MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 45 20, 30 5, 10 10, 10 30, 20 35),(30 20, 20 25, 20 15, 30 20)))'}}) - feat = fs.next() - actual = json.loads(feat.to_geojson()) - eq_(actual,{u'geometry': {u'type': u'GeometryCollection', u'geometries': [{u'type': u'Polygon', u'coordinates': [[[1, 1], [2, 1], [2, 2], [1, 2], [1, 1]]]}, {u'type': u'Point', u'coordinates': [2, 3]}, {u'type': u'LineString', u'coordinates': [[2, 3], [3, 4]]}]}, u'type': u'Feature', u'id': 10, u'properties': {u'type': u'collection', u'WKT': u' GEOMETRYCOLLECTION(POLYGON((1 1,2 1,2 2,1 2,1 1)),POINT(2 3),LINESTRING(2 3,3 4))'}}) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/osm_test.py b/tests/python_tests/osm_test.py deleted file mode 100644 index b9f519668..000000000 --- a/tests/python_tests/osm_test.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from nose.tools import eq_ -from utilities import execution_path, run_all -import os, mapnik - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -if 'osm' in mapnik.DatasourceCache.plugin_names(): - - # osm initialization - def test_osm_init(): - ds = mapnik.Osm(file='../data/osm/nodes.osm') - - e = ds.envelope() - - # these are hardcoded in the plugin… ugh - eq_(e.minx >= -180.0,True) - eq_(e.miny >= -90.0,True) - eq_(e.maxx <= 180.0,True) - eq_(e.maxy <= 90,True) - - def test_that_nonexistant_query_field_throws(**kwargs): - ds = mapnik.Osm(file='../data/osm/nodes.osm') - eq_(len(ds.fields()),0) - query = mapnik.Query(ds.envelope()) - for fld in ds.fields(): - query.add_property_name(fld) - # also add an invalid one, triggering throw - query.add_property_name('bogus') - ds.features(query) - - def test_that_64bit_int_fields_work(): - ds = mapnik.Osm(file='../data/osm/64bit.osm') - eq_(len(ds.fields()),4) - eq_(ds.fields(),['bigint', 'highway', 'junction', 'note']) - eq_(ds.field_types(),['str', 'str', 'str', 'str']) - fs = ds.featureset() - feat = fs.next() - eq_(feat.to_geojson(),'{"type":"Feature","id":890,"geometry":{"type":"Point","coordinates":[-61.7960248,17.1415874]},"properties":{}}') - eq_(feat.id(),4294968186) - eq_(feat['bigint'], None) - feat = fs.next() - eq_(feat['bigint'],'9223372036854775807') - - def test_reading_ways(): - ds = mapnik.Osm(file='../data/osm/ways.osm') - eq_(len(ds.fields()),0) - eq_(ds.fields(),[]) - eq_(ds.field_types(),[]) - feat = ds.all_features()[4] - eq_(feat.to_geojson(),'{"type":"Feature","id":1,"geometry":{"type":"LineString","coordinates":[[0,2],[0,-2]]},"properties":{}}') - eq_(feat.id(),1) - - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/palette_test.py b/tests/python_tests/palette_test.py deleted file mode 100644 index 9b308953f..000000000 --- a/tests/python_tests/palette_test.py +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from nose.tools import eq_ -from utilities import execution_path, run_all -import os, mapnik - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -expected_64 = '[Palette 64 colors #494746 #c37631 #89827c #d1955c #7397b9 #fc9237 #a09f9c #fbc147 #9bb3ce #b7c9a1 #b5d29c #c4b9aa #cdc4a5 #d5c8a3 #c1d7aa #ccc4b6 #dbd19c #b2c4d5 #eae487 #c9c8c6 #e4db99 #c9dcb5 #dfd3ac #cbd2c2 #d6cdbc #dbd2b6 #c0ceda #ece597 #f7ef86 #d7d3c3 #dfcbc3 #d1d0cd #d1e2bf #d3dec1 #dbd3c4 #e6d8b6 #f4ef91 #d3d3cf #cad5de #ded7c9 #dfdbce #fcf993 #ffff8a #dbd9d7 #dbe7cd #d4dce2 #e4ded3 #ebe3c9 #e0e2e2 #f4edc3 #fdfcae #e9e5dc #f4edda #eeebe4 #fefdc5 #e7edf2 #edf4e5 #f2efe9 #f6ede7 #fefedd #f6f4f0 #f1f5f8 #fbfaf8 #ffffff]' - -expected_256 = '[Palette 256 colors #272727 #3c3c3c #484847 #564b41 #605243 #6a523e #555555 #785941 #5d5d5d #746856 #676767 #956740 #ba712e #787777 #cb752a #c27c3d #b68049 #dc8030 #df9e10 #878685 #e1a214 #928b82 #a88a70 #ea8834 #e7a81d #cb8d55 #909090 #94938c #e18f48 #f68d36 #6f94b7 #e1ab2e #8e959b #c79666 #999897 #ff9238 #ef9447 #a99a88 #f1b32c #919ca6 #a1a09f #f0b04b #8aa4bf #f8bc39 #b3ac8f #d1a67a #e3b857 #a8a8a7 #ffc345 #a2adb9 #afaeab #f9ab69 #afbba4 #c4c48a #b4b2af #dec177 #9ab2cf #a3bebb #d7b491 #b6cd9e #b5d29c #b9c8a2 #f1c969 #c5c79e #bbbab9 #cabdaa #a6bcd1 #cec4a7 #e7cc89 #dad98a #d5c9a3 #fabd8a #c1d7aa #cec5b4 #d1d1a5 #d9cf9f #c5c4c3 #d3c7b5 #ddd59d #b4c6d6 #d1cbb4 #d1c7ba #d7d1aa #e1c6ab #cbc7c2 #dbd0a9 #e8e58a #fee178 #d3cbba #dfd7a3 #d2cfb9 #c9ddb5 #d2cbbe #c3cbce #d7cbba #dcceb2 #dfd3aa #e5dd9a #dbd3b1 #ceccc6 #d7cbbe #d7cfba #dfc3be #dfd3ae #cbcbcb #cbd3c3 #d3cfc0 #e0d8aa #d7cfbe #dbd3b8 #ebe596 #dfd8b0 #c0ceda #f1ee89 #decfbc #d7cfc4 #d7d3c3 #d1d0cd #d2dfc0 #dbd3c3 #e7c7c3 #e7d7b3 #f2ed92 #d1e2bf #dad7c3 #fef383 #d3d3cf #dbd3c7 #e0d3c2 #dfd7c0 #ebe4a8 #dbd7c7 #dfd3c7 #f7f38f #c9d4de #dcdcc5 #dfd7c7 #e7d5c2 #d6d5d4 #faf78e #d7dfca #fbfb8a #fffb86 #dfd7cb #e5ddc0 #dad7d2 #ecd6c1 #cfd7de #e8d0cc #fbfb8e #fffb8a #eae3b8 #e3d7cd #dfdbce #fffb8e #ffff8a #f5efa6 #dae6cc #e3dbcf #edddc3 #dddbd6 #d5dbdf #ffff91 #e3dbd3 #fefc99 #e7dbd2 #eaddcd #e3dfd3 #ebd7d3 #dddddd #d4dee6 #e2dfd7 #fcdcc0 #e7dbd7 #e7dfd3 #ebe4cb #f4eeb8 #e3dfdb #e7dfd7 #ebded5 #e7e3d7 #fefea6 #e1ecd6 #ece5d3 #e7e3db #dee3e5 #ebe3db #efdfdb #efe3d8 #f4efc9 #e6ecdb #ebe3df #ebe7db #f0ecd3 #e5e6e5 #efe7da #ebe7df #efe3df #fefeb8 #dfe7ef #ebe7e3 #edebde #efe7e0 #e8efe0 #e7f3df #ebebe3 #e7ebe8 #f5edd9 #efebe3 #e3ebf1 #e9efe7 #ebebea #efebe7 #f0efe2 #ecf3e5 #fefdc9 #efefe7 #f3efe7 #f5f3e1 #f2efe9 #e9eef4 #ffeddf #efefef #f3efeb #f3f3eb #f0f7eb #fbf7e1 #fefed8 #f3f3ef #f7f3eb #eef3f7 #f7f7ea #f3f3f3 #f3f7ef #f7f3ef #f3f3f7 #f7f3f3 #f7f7ef #fffee3 #f3f7f7 #f7f7f3 #fcf7ee #f7f7f7 #f7fbf4 #f5f7fb #fbf7f6 #fffeef #f7fbfb #fbfbf7 #fbfbfb #fbfbff #fbfffb #fffbfb #fbffff #fffffb #ffffff]' - -expected_rgb = '[Palette 2 colors #ff00ff #ffffff]' - -def test_reading_palettes(): - act = open('../data/palettes/palette64.act','rb') - palette = mapnik.Palette(act.read(),'act') - eq_(palette.to_string(),expected_64); - act = open('../data/palettes/palette256.act','rb') - palette = mapnik.Palette(act.read(),'act') - eq_(palette.to_string(),expected_256); - palette = mapnik.Palette('\xff\x00\xff\xff\xff\xff', 'rgb') - eq_(palette.to_string(),expected_rgb); - -if 'shape' in mapnik.DatasourceCache.plugin_names(): - - def test_render_with_palette(): - m = mapnik.Map(600,400) - mapnik.load_map(m,'../data/good_maps/agg_poly_gamma_map.xml') - m.zoom_all() - im = mapnik.Image(m.width,m.height) - mapnik.render(m,im) - act = open('../data/palettes/palette256.act','rb') - palette = mapnik.Palette(act.read(),'act') - # test saving directly to filesystem - im.save('/tmp/mapnik-palette-test.png','png',palette) - expected = './images/support/mapnik-palette-test.png' - if os.environ.get('UPDATE'): - im.save(expected,"png",palette); - - # test saving to a string - open('/tmp/mapnik-palette-test2.png','wb').write(im.tostring('png',palette)); - # compare the two methods - eq_(mapnik.Image.open('/tmp/mapnik-palette-test.png').tostring('png32'),mapnik.Image.open('/tmp/mapnik-palette-test2.png').tostring('png32'),'%s not eq to %s' % ('/tmp/mapnik-palette-test.png','/tmp/mapnik-palette-test2.png')) - # compare to expected - eq_(mapnik.Image.open('/tmp/mapnik-palette-test.png').tostring('png32'),mapnik.Image.open(expected).tostring('png32'),'%s not eq to %s' % ('/tmp/mapnik-palette-test.png',expected)) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/parameters_test.py b/tests/python_tests/parameters_test.py deleted file mode 100644 index 1587fbdde..000000000 --- a/tests/python_tests/parameters_test.py +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import os -import sys -from nose.tools import eq_ -from utilities import execution_path, run_all -import mapnik - -def setup(): - os.chdir(execution_path('.')) - -def test_parameter_null(): - p = mapnik.Parameter('key',None) - eq_(p[0],'key') - eq_(p[1],None) - -def test_parameter_string(): - p = mapnik.Parameter('key','value') - eq_(p[0],'key') - eq_(p[1],'value') - -def test_parameter_unicode(): - p = mapnik.Parameter('key',u'value') - eq_(p[0],'key') - eq_(p[1],u'value') - -def test_parameter_integer(): - p = mapnik.Parameter('int',sys.maxint) - eq_(p[0],'int') - eq_(p[1],sys.maxint) - -def test_parameter_double(): - p = mapnik.Parameter('double',float(sys.maxint)) - eq_(p[0],'double') - eq_(p[1],float(sys.maxint)) - -def test_parameter_boolean(): - p = mapnik.Parameter('boolean',True) - eq_(p[0],'boolean') - eq_(p[1],True) - eq_(bool(p[1]),True) - - -def test_parameters(): - params = mapnik.Parameters() - p = mapnik.Parameter('float',1.0777) - eq_(p[0],'float') - eq_(p[1],1.0777) - - params.append(p) - - eq_(params[0][0],'float') - eq_(params[0][1],1.0777) - - eq_(params.get('float'),1.0777) - - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/pgraster_test.py b/tests/python_tests/pgraster_test.py deleted file mode 100644 index dc7584f4f..000000000 --- a/tests/python_tests/pgraster_test.py +++ /dev/null @@ -1,763 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_,assert_almost_equal -import atexit -import time -from utilities import execution_path, run_all, side_by_side_image -from subprocess import Popen, PIPE -import os, mapnik -import sys -import re -from binascii import hexlify - -MAPNIK_TEST_DBNAME = 'mapnik-tmp-pgraster-test-db' -POSTGIS_TEMPLATE_DBNAME = 'template_postgis' -DEBUG_OUTPUT=False - -def log(msg): - if DEBUG_OUTPUT: - print msg - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def call(cmd,silent=False): - stdin, stderr = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE).communicate() - if not stderr: - return stdin.strip() - elif not silent and 'error' in stderr.lower() \ - or 'not found' in stderr.lower() \ - or 'could not connect' in stderr.lower() \ - or 'bad connection' in stderr.lower() \ - or 'not recognized as an internal' in stderr.lower(): - raise RuntimeError(stderr.strip()) - -def psql_can_connect(): - """Test ability to connect to a postgis template db with no options. - - Basically, to run these tests your user must have full read - access over unix sockets without supplying a password. This - keeps these tests simple and focused on postgis not on postgres - auth issues. - """ - try: - call('psql %s -c "select postgis_version()"' % POSTGIS_TEMPLATE_DBNAME) - return True - except RuntimeError: - print 'Notice: skipping pgraster tests (connection)' - return False - -def psql_run(cmd): - cmd = 'psql --set ON_ERROR_STOP=1 %s -c "%s"' % \ - (MAPNIK_TEST_DBNAME, cmd.replace('"', '\\"')) - log('DEBUG: running ' + cmd) - call(cmd) - -def raster2pgsql_on_path(): - """Test for presence of raster2pgsql on the user path. - - We require this program to load test data into a temporarily database. - """ - try: - call('raster2pgsql') - return True - except RuntimeError: - print 'Notice: skipping pgraster tests (raster2pgsql)' - return False - -def createdb_and_dropdb_on_path(): - """Test for presence of dropdb/createdb on user path. - - We require these programs to setup and teardown the testing db. - """ - try: - call('createdb --help') - call('dropdb --help') - return True - except RuntimeError: - print 'Notice: skipping pgraster tests (createdb/dropdb)' - return False - -def postgis_setup(): - call('dropdb %s' % MAPNIK_TEST_DBNAME,silent=True) - call('createdb -T %s %s' % (POSTGIS_TEMPLATE_DBNAME,MAPNIK_TEST_DBNAME),silent=False) - -def postgis_takedown(): - pass - # fails as the db is in use: https://github.com/mapnik/mapnik/issues/960 - #call('dropdb %s' % MAPNIK_TEST_DBNAME) - -def import_raster(filename, tabname, tilesize, constraint, overview): - log('tile: ' + tilesize + ' constraints: ' + str(constraint) \ - + ' overviews: ' + overview) - cmd = 'raster2pgsql -Y -I -q' - if constraint: - cmd += ' -C' - if tilesize: - cmd += ' -t ' + tilesize - if overview: - cmd += ' -l ' + overview - cmd += ' %s %s | psql --set ON_ERROR_STOP=1 -q %s' % (os.path.abspath(os.path.normpath(filename)),tabname,MAPNIK_TEST_DBNAME) - log('Import call: ' + cmd) - call(cmd) - -def drop_imported(tabname, overview): - psql_run('DROP TABLE IF EXISTS "' + tabname + '";') - if overview: - for of in overview.split(','): - psql_run('DROP TABLE IF EXISTS "o_' + of + '_' + tabname + '";') - -def compare_images(expected,im): - expected = os.path.join(os.path.dirname(expected),os.path.basename(expected).replace(':','_')) - if not os.path.exists(expected) or os.environ.get('UPDATE'): - print 'generating expected image %s' % expected - im.save(expected,'png32') - expected_im = mapnik.Image.open(expected) - diff = expected.replace('.png','-diff.png') - if len(im.tostring("png32")) != len(expected_im.tostring("png32")): - compared = side_by_side_image(expected_im, im) - compared.save(diff) - assert False,'images do not match, check diff at %s' % diff - else: - if os.path.exists(diff): os.unlink(diff) - return True - -if 'pgraster' in mapnik.DatasourceCache.plugin_names() \ - and createdb_and_dropdb_on_path() \ - and psql_can_connect() \ - and raster2pgsql_on_path(): - - # initialize test database - postgis_setup() - - # [old]dataraster.tif, 2283x1913 int16 single-band - # dataraster-small.tif, 457x383 int16 single-band - def _test_dataraster_16bsi_rendering(lbl, overview, rescale, clip): - if rescale: - lbl += ' Sc' - if clip: - lbl += ' Cl' - ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME,table='"dataRaster"', - band=1,use_overviews=1 if overview else 0, - prescale_rasters=rescale,clip_rasters=clip) - fs = ds.featureset() - feature = fs.next() - eq_(feature['rid'],1) - lyr = mapnik.Layer('dataraster_16bsi') - lyr.datasource = ds - expenv = mapnik.Box2d(-14637, 3903178, 1126863, 4859678) - env = lyr.envelope() - # As the input size is a prime number both horizontally - # and vertically, we expect the extent of the overview - # tables to be a pixel wider than the original, whereas - # the pixel size in geographical units depends on the - # overview factor. So we start with the original pixel size - # as base scale and multiply by the overview factor. - # NOTE: the overview table extent only grows north and east - pixsize = 500 # see gdalinfo dataraster.tif - pixsize = 2497 # see gdalinfo dataraster-small.tif - tol = pixsize * max(overview.split(',')) if overview else 0 - assert_almost_equal(env.minx, expenv.minx) - assert_almost_equal(env.miny, expenv.miny, delta=tol) - assert_almost_equal(env.maxx, expenv.maxx, delta=tol) - assert_almost_equal(env.maxy, expenv.maxy) - mm = mapnik.Map(256, 256) - style = mapnik.Style() - col = mapnik.RasterColorizer(); - col.default_mode = mapnik.COLORIZER_DISCRETE; - col.add_stop(0, mapnik.Color(0x40,0x40,0x40,255)); - col.add_stop(10, mapnik.Color(0x80,0x80,0x80,255)); - col.add_stop(20, mapnik.Color(0xa0,0xa0,0xa0,255)); - sym = mapnik.RasterSymbolizer() - sym.colorizer = col - rule = mapnik.Rule() - rule.symbols.append(sym) - style.rules.append(rule) - mm.append_style('foo', style) - lyr.styles.append('foo') - mm.layers.append(lyr) - mm.zoom_to_box(expenv) - im = mapnik.Image(mm.width, mm.height) - t0 = time.time() # we want wall time to include IO waits - mapnik.render(mm, im) - lap = time.time() - t0 - log('T ' + str(lap) + ' -- ' + lbl + ' E:full') - # no data - eq_(im.view(1,1,1,1).tostring(), '\x00\x00\x00\x00') - eq_(im.view(255,255,1,1).tostring(), '\x00\x00\x00\x00') - eq_(im.view(195,116,1,1).tostring(), '\x00\x00\x00\x00') - # A0A0A0 - eq_(im.view(100,120,1,1).tostring(), '\xa0\xa0\xa0\xff') - eq_(im.view( 75, 80,1,1).tostring(), '\xa0\xa0\xa0\xff') - # 808080 - eq_(im.view( 74,170,1,1).tostring(), '\x80\x80\x80\xff') - eq_(im.view( 30, 50,1,1).tostring(), '\x80\x80\x80\xff') - # 404040 - eq_(im.view(190, 70,1,1).tostring(), '\x40\x40\x40\xff') - eq_(im.view(140,170,1,1).tostring(), '\x40\x40\x40\xff') - - # Now zoom over a portion of the env (1/10) - newenv = mapnik.Box2d(273663,4024478,330738,4072303) - mm.zoom_to_box(newenv) - t0 = time.time() # we want wall time to include IO waits - mapnik.render(mm, im) - lap = time.time() - t0 - log('T ' + str(lap) + ' -- ' + lbl + ' E:1/10') - # nodata - eq_(hexlify(im.view(255,255,1,1).tostring()), '00000000') - eq_(hexlify(im.view(200,254,1,1).tostring()), '00000000') - # A0A0A0 - eq_(hexlify(im.view(90,232,1,1).tostring()), 'a0a0a0ff') - eq_(hexlify(im.view(96,245,1,1).tostring()), 'a0a0a0ff') - # 808080 - eq_(hexlify(im.view(1,1,1,1).tostring()), '808080ff') - eq_(hexlify(im.view(128,128,1,1).tostring()), '808080ff') - # 404040 - eq_(hexlify(im.view(255, 0,1,1).tostring()), '404040ff') - - def _test_dataraster_16bsi(lbl, tilesize, constraint, overview): - import_raster('../data/raster/dataraster-small.tif', 'dataRaster', tilesize, constraint, overview) - if constraint: - lbl += ' C' - if tilesize: - lbl += ' T:' + tilesize - if overview: - lbl += ' O:' + overview - for prescale in [0,1]: - for clip in [0,1]: - _test_dataraster_16bsi_rendering(lbl, overview, prescale, clip) - drop_imported('dataRaster', overview) - - def test_dataraster_16bsi(): - #for tilesize in ['','256x256']: - for tilesize in ['256x256']: - for constraint in [0,1]: - #for overview in ['','4','2,16']: - for overview in ['','2']: - _test_dataraster_16bsi('data_16bsi', tilesize, constraint, overview) - - # river.tiff, RGBA 8BUI - def _test_rgba_8bui_rendering(lbl, overview, rescale, clip): - if rescale: - lbl += ' Sc' - if clip: - lbl += ' Cl' - ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME,table='(select * from "River") foo', - use_overviews=1 if overview else 0, - prescale_rasters=rescale,clip_rasters=clip) - fs = ds.featureset() - feature = fs.next() - eq_(feature['rid'],1) - lyr = mapnik.Layer('rgba_8bui') - lyr.datasource = ds - expenv = mapnik.Box2d(0, -210, 256, 0) - env = lyr.envelope() - # As the input size is a prime number both horizontally - # and vertically, we expect the extent of the overview - # tables to be a pixel wider than the original, whereas - # the pixel size in geographical units depends on the - # overview factor. So we start with the original pixel size - # as base scale and multiply by the overview factor. - # NOTE: the overview table extent only grows north and east - pixsize = 1 # see gdalinfo river.tif - tol = pixsize * max(overview.split(',')) if overview else 0 - assert_almost_equal(env.minx, expenv.minx) - assert_almost_equal(env.miny, expenv.miny, delta=tol) - assert_almost_equal(env.maxx, expenv.maxx, delta=tol) - assert_almost_equal(env.maxy, expenv.maxy) - mm = mapnik.Map(256, 256) - style = mapnik.Style() - sym = mapnik.RasterSymbolizer() - rule = mapnik.Rule() - rule.symbols.append(sym) - style.rules.append(rule) - mm.append_style('foo', style) - lyr.styles.append('foo') - mm.layers.append(lyr) - mm.zoom_to_box(expenv) - im = mapnik.Image(mm.width, mm.height) - t0 = time.time() # we want wall time to include IO waits - mapnik.render(mm, im) - lap = time.time() - t0 - log('T ' + str(lap) + ' -- ' + lbl + ' E:full') - expected = 'images/support/pgraster/%s-%s-%s-%s-box1.png' % (lyr.name,lbl,overview,clip) - compare_images(expected,im) - # no data - eq_(hexlify(im.view(3,3,1,1).tostring()), '00000000') - eq_(hexlify(im.view(250,250,1,1).tostring()), '00000000') - # full opaque river color - eq_(hexlify(im.view(175,118,1,1).tostring()), 'b9d8f8ff') - # half-transparent pixel - pxstr = hexlify(im.view(122,138,1,1).tostring()) - apat = ".*(..)$" - match = re.match(apat, pxstr) - assert match, 'pixel ' + pxstr + ' does not match pattern ' + apat - alpha = match.group(1) - assert alpha != 'ff' and alpha != '00', \ - 'unexpected full transparent/opaque pixel: ' + alpha - - # Now zoom over a portion of the env (1/10) - newenv = mapnik.Box2d(166,-105,191,-77) - mm.zoom_to_box(newenv) - t0 = time.time() # we want wall time to include IO waits - im = mapnik.Image(mm.width, mm.height) - mapnik.render(mm, im) - lap = time.time() - t0 - log('T ' + str(lap) + ' -- ' + lbl + ' E:1/10') - expected = 'images/support/pgraster/%s-%s-%s-%s-box2.png' % (lyr.name,lbl,overview,clip) - compare_images(expected,im) - # no data - eq_(hexlify(im.view(255,255,1,1).tostring()), '00000000') - eq_(hexlify(im.view(200,40,1,1).tostring()), '00000000') - # full opaque river color - eq_(hexlify(im.view(100,168,1,1).tostring()), 'b9d8f8ff') - # half-transparent pixel - pxstr = hexlify(im.view(122,138,1,1).tostring()) - apat = ".*(..)$" - match = re.match(apat, pxstr) - assert match, 'pixel ' + pxstr + ' does not match pattern ' + apat - alpha = match.group(1) - assert alpha != 'ff' and alpha != '00', \ - 'unexpected full transparent/opaque pixel: ' + alpha - - def _test_rgba_8bui(lbl, tilesize, constraint, overview): - import_raster('../data/raster/river.tiff', 'River', tilesize, constraint, overview) - if constraint: - lbl += ' C' - if tilesize: - lbl += ' T:' + tilesize - if overview: - lbl += ' O:' + overview - for prescale in [0,1]: - for clip in [0,1]: - _test_rgba_8bui_rendering(lbl, overview, prescale, clip) - drop_imported('River', overview) - - def test_rgba_8bui(): - for tilesize in ['','16x16']: - for constraint in [0,1]: - for overview in ['2']: - _test_rgba_8bui('rgba_8bui', tilesize, constraint, overview) - - # nodata-edge.tif, RGB 8BUI - def _test_rgb_8bui_rendering(lbl, tnam, overview, rescale, clip): - if rescale: - lbl += ' Sc' - if clip: - lbl += ' Cl' - ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME,table=tnam, - use_overviews=1 if overview else 0, - prescale_rasters=rescale,clip_rasters=clip) - fs = ds.featureset() - feature = fs.next() - eq_(feature['rid'],1) - lyr = mapnik.Layer('rgba_8bui') - lyr.datasource = ds - expenv = mapnik.Box2d(-12329035.7652168,4508650.39854396, \ - -12328653.0279471,4508957.34625536) - env = lyr.envelope() - # As the input size is a prime number both horizontally - # and vertically, we expect the extent of the overview - # tables to be a pixel wider than the original, whereas - # the pixel size in geographical units depends on the - # overview factor. So we start with the original pixel size - # as base scale and multiply by the overview factor. - # NOTE: the overview table extent only grows north and east - pixsize = 2 # see gdalinfo nodata-edge.tif - tol = pixsize * max(overview.split(',')) if overview else 0 - assert_almost_equal(env.minx, expenv.minx, places=0) - assert_almost_equal(env.miny, expenv.miny, delta=tol) - assert_almost_equal(env.maxx, expenv.maxx, delta=tol) - assert_almost_equal(env.maxy, expenv.maxy, places=0) - mm = mapnik.Map(256, 256) - style = mapnik.Style() - sym = mapnik.RasterSymbolizer() - rule = mapnik.Rule() - rule.symbols.append(sym) - style.rules.append(rule) - mm.append_style('foo', style) - lyr.styles.append('foo') - mm.layers.append(lyr) - mm.zoom_to_box(expenv) - im = mapnik.Image(mm.width, mm.height) - t0 = time.time() # we want wall time to include IO waits - mapnik.render(mm, im) - lap = time.time() - t0 - log('T ' + str(lap) + ' -- ' + lbl + ' E:full') - expected = 'images/support/pgraster/%s-%s-%s-%s-%s-box1.png' % (lyr.name,tnam,lbl,overview,clip) - compare_images(expected,im) - # no data - eq_(hexlify(im.view(3,16,1,1).tostring()), '00000000') - eq_(hexlify(im.view(128,16,1,1).tostring()), '00000000') - eq_(hexlify(im.view(250,16,1,1).tostring()), '00000000') - eq_(hexlify(im.view(3,240,1,1).tostring()), '00000000') - eq_(hexlify(im.view(128,240,1,1).tostring()), '00000000') - eq_(hexlify(im.view(250,240,1,1).tostring()), '00000000') - # dark brown - eq_(hexlify(im.view(174,39,1,1).tostring()), 'c3a698ff') - # dark gray - eq_(hexlify(im.view(195,132,1,1).tostring()), '575f62ff') - # Now zoom over a portion of the env (1/10) - newenv = mapnik.Box2d(-12329035.7652168, 4508926.651484220, \ - -12328997.49148983,4508957.34625536) - mm.zoom_to_box(newenv) - t0 = time.time() # we want wall time to include IO waits - im = mapnik.Image(mm.width, mm.height) - mapnik.render(mm, im) - lap = time.time() - t0 - log('T ' + str(lap) + ' -- ' + lbl + ' E:1/10') - expected = 'images/support/pgraster/%s-%s-%s-%s-%s-box2.png' % (lyr.name,tnam,lbl,overview,clip) - compare_images(expected,im) - # no data - eq_(hexlify(im.view(3,16,1,1).tostring()), '00000000') - eq_(hexlify(im.view(128,16,1,1).tostring()), '00000000') - eq_(hexlify(im.view(250,16,1,1).tostring()), '00000000') - # black - eq_(hexlify(im.view(3,42,1,1).tostring()), '000000ff') - eq_(hexlify(im.view(3,134,1,1).tostring()), '000000ff') - eq_(hexlify(im.view(3,244,1,1).tostring()), '000000ff') - # gray - eq_(hexlify(im.view(135,157,1,1).tostring()), '4e555bff') - # brown - eq_(hexlify(im.view(195,223,1,1).tostring()), 'f2cdbaff') - - def _test_rgb_8bui(lbl, tilesize, constraint, overview): - tnam = 'nodataedge' - import_raster('../data/raster/nodata-edge.tif', tnam, tilesize, constraint, overview) - if constraint: - lbl += ' C' - if tilesize: - lbl += ' T:' + tilesize - if overview: - lbl += ' O:' + overview - for prescale in [0,1]: - for clip in [0,1]: - _test_rgb_8bui_rendering(lbl, tnam, overview, prescale, clip) - #drop_imported(tnam, overview) - - def test_rgb_8bui(): - for tilesize in ['64x64']: - for constraint in [1]: - for overview in ['']: - _test_rgb_8bui('rgb_8bui', tilesize, constraint, overview) - - def _test_grayscale_subquery(lbl,pixtype,value): - # - # 3 8 13 - # +---+---+---+ - # 3 | v | v | v | NOTE: writes different color - # +---+---+---+ in 13,8 and 8,13 - # 8 | v | v | a | - # +---+---+---+ - # 13 | v | b | v | - # +---+---+---+ - # - val_a = value/3; - val_b = val_a*2; - sql = "(select 3 as i, " \ - " ST_SetValues(" \ - " ST_SetValues(" \ - " ST_AsRaster(" \ - " ST_MakeEnvelope(0,0,14,14), " \ - " 1.0, -1.0, '%s', %s" \ - " ), " \ - " 11, 6, 4, 5, %s::float8" \ - " )," \ - " 6, 11, 5, 4, %s::float8" \ - " ) as \"R\"" \ - ") as foo" % (pixtype,value, val_a, val_b) - rescale = 0 - clip = 0 - if rescale: - lbl += ' Sc' - if clip: - lbl += ' Cl' - ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME, table=sql, - raster_field='"R"', use_overviews=1, - prescale_rasters=rescale,clip_rasters=clip) - fs = ds.featureset() - feature = fs.next() - eq_(feature['i'],3) - lyr = mapnik.Layer('grayscale_subquery') - lyr.datasource = ds - expenv = mapnik.Box2d(0,0,14,14) - env = lyr.envelope() - assert_almost_equal(env.minx, expenv.minx, places=0) - assert_almost_equal(env.miny, expenv.miny, places=0) - assert_almost_equal(env.maxx, expenv.maxx, places=0) - assert_almost_equal(env.maxy, expenv.maxy, places=0) - mm = mapnik.Map(15, 15) - style = mapnik.Style() - sym = mapnik.RasterSymbolizer() - rule = mapnik.Rule() - rule.symbols.append(sym) - style.rules.append(rule) - mm.append_style('foo', style) - lyr.styles.append('foo') - mm.layers.append(lyr) - mm.zoom_to_box(expenv) - im = mapnik.Image(mm.width, mm.height) - t0 = time.time() # we want wall time to include IO waits - mapnik.render(mm, im) - lap = time.time() - t0 - log('T ' + str(lap) + ' -- ' + lbl + ' E:full') - expected = 'images/support/pgraster/%s-%s-%s-%s.png' % (lyr.name,lbl,pixtype,value) - compare_images(expected,im) - h = format(value, '02x') - hex_v = h+h+h+'ff' - h = format(val_a, '02x') - hex_a = h+h+h+'ff' - h = format(val_b, '02x') - hex_b = h+h+h+'ff' - eq_(hexlify(im.view( 3, 3,1,1).tostring()), hex_v); - eq_(hexlify(im.view( 8, 3,1,1).tostring()), hex_v); - eq_(hexlify(im.view(13, 3,1,1).tostring()), hex_v); - eq_(hexlify(im.view( 3, 8,1,1).tostring()), hex_v); - eq_(hexlify(im.view( 8, 8,1,1).tostring()), hex_v); - eq_(hexlify(im.view(13, 8,1,1).tostring()), hex_a); - eq_(hexlify(im.view( 3,13,1,1).tostring()), hex_v); - eq_(hexlify(im.view( 8,13,1,1).tostring()), hex_b); - eq_(hexlify(im.view(13,13,1,1).tostring()), hex_v); - - def test_grayscale_2bui_subquery(): - _test_grayscale_subquery('grayscale_2bui_subquery', '2BUI', 3) - - def test_grayscale_4bui_subquery(): - _test_grayscale_subquery('grayscale_4bui_subquery', '4BUI', 15) - - def test_grayscale_8bui_subquery(): - _test_grayscale_subquery('grayscale_8bui_subquery', '8BUI', 63) - - def test_grayscale_8bsi_subquery(): - # NOTE: we're using a positive integer because Mapnik - # does not support negative data values anyway - _test_grayscale_subquery('grayscale_8bsi_subquery', '8BSI', 69) - - def test_grayscale_16bui_subquery(): - _test_grayscale_subquery('grayscale_16bui_subquery', '16BUI', 126) - - def test_grayscale_16bsi_subquery(): - # NOTE: we're using a positive integer because Mapnik - # does not support negative data values anyway - _test_grayscale_subquery('grayscale_16bsi_subquery', '16BSI', 144) - - def test_grayscale_32bui_subquery(): - _test_grayscale_subquery('grayscale_32bui_subquery', '32BUI', 255) - - def test_grayscale_32bsi_subquery(): - # NOTE: we're using a positive integer because Mapnik - # does not support negative data values anyway - _test_grayscale_subquery('grayscale_32bsi_subquery', '32BSI', 129) - - def _test_data_subquery(lbl, pixtype, value): - # - # 3 8 13 - # +---+---+---+ - # 3 | v | v | v | NOTE: writes different values - # +---+---+---+ in 13,8 and 8,13 - # 8 | v | v | a | - # +---+---+---+ - # 13 | v | b | v | - # +---+---+---+ - # - val_a = value/3; - val_b = val_a*2; - sql = "(select 3 as i, " \ - " ST_SetValues(" \ - " ST_SetValues(" \ - " ST_AsRaster(" \ - " ST_MakeEnvelope(0,0,14,14), " \ - " 1.0, -1.0, '%s', %s" \ - " ), " \ - " 11, 6, 5, 5, %s::float8" \ - " )," \ - " 6, 11, 5, 5, %s::float8" \ - " ) as \"R\"" \ - ") as foo" % (pixtype,value, val_a, val_b) - overview = '' - rescale = 0 - clip = 0 - if rescale: - lbl += ' Sc' - if clip: - lbl += ' Cl' - ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME, table=sql, - raster_field='R', use_overviews=0 if overview else 0, - band=1, prescale_rasters=rescale, clip_rasters=clip) - fs = ds.featureset() - feature = fs.next() - eq_(feature['i'],3) - lyr = mapnik.Layer('data_subquery') - lyr.datasource = ds - expenv = mapnik.Box2d(0,0,14,14) - env = lyr.envelope() - assert_almost_equal(env.minx, expenv.minx, places=0) - assert_almost_equal(env.miny, expenv.miny, places=0) - assert_almost_equal(env.maxx, expenv.maxx, places=0) - assert_almost_equal(env.maxy, expenv.maxy, places=0) - mm = mapnik.Map(15, 15) - style = mapnik.Style() - col = mapnik.RasterColorizer(); - col.default_mode = mapnik.COLORIZER_DISCRETE; - col.add_stop(val_a, mapnik.Color(0xff,0x00,0x00,255)); - col.add_stop(val_b, mapnik.Color(0x00,0xff,0x00,255)); - col.add_stop(value, mapnik.Color(0x00,0x00,0xff,255)); - sym = mapnik.RasterSymbolizer() - sym.colorizer = col - rule = mapnik.Rule() - rule.symbols.append(sym) - style.rules.append(rule) - mm.append_style('foo', style) - lyr.styles.append('foo') - mm.layers.append(lyr) - mm.zoom_to_box(expenv) - im = mapnik.Image(mm.width, mm.height) - t0 = time.time() # we want wall time to include IO waits - mapnik.render(mm, im) - lap = time.time() - t0 - log('T ' + str(lap) + ' -- ' + lbl + ' E:full') - expected = 'images/support/pgraster/%s-%s-%s-%s.png' % (lyr.name,lbl,pixtype,value) - compare_images(expected,im) - - def test_data_2bui_subquery(): - _test_data_subquery('data_2bui_subquery', '2BUI', 3) - - def test_data_4bui_subquery(): - _test_data_subquery('data_4bui_subquery', '4BUI', 15) - - def test_data_8bui_subquery(): - _test_data_subquery('data_8bui_subquery', '8BUI', 63) - - def test_data_8bsi_subquery(): - # NOTE: we're using a positive integer because Mapnik - # does not support negative data values anyway - _test_data_subquery('data_8bsi_subquery', '8BSI', 69) - - def test_data_16bui_subquery(): - _test_data_subquery('data_16bui_subquery', '16BUI', 126) - - def test_data_16bsi_subquery(): - # NOTE: we're using a positive integer because Mapnik - # does not support negative data values anyway - _test_data_subquery('data_16bsi_subquery', '16BSI', 135) - - def test_data_32bui_subquery(): - _test_data_subquery('data_32bui_subquery', '32BUI', 255) - - def test_data_32bsi_subquery(): - # NOTE: we're using a positive integer because Mapnik - # does not support negative data values anyway - _test_data_subquery('data_32bsi_subquery', '32BSI', 264) - - def test_data_32bf_subquery(): - _test_data_subquery('data_32bf_subquery', '32BF', 450) - - def test_data_64bf_subquery(): - _test_data_subquery('data_64bf_subquery', '64BF', 3072) - - def _test_rgba_subquery(lbl, pixtype, r, g, b, a, g1, b1): - # - # 3 8 13 - # +---+---+---+ - # 3 | v | v | h | NOTE: writes different alpha - # +---+---+---+ in 13,8 and 8,13 - # 8 | v | v | a | - # +---+---+---+ - # 13 | v | b | v | - # +---+---+---+ - # - sql = "(select 3 as i, " \ - " ST_SetValues(" \ - " ST_SetValues(" \ - " ST_AddBand(" \ - " ST_AddBand(" \ - " ST_AddBand(" \ - " ST_AsRaster(" \ - " ST_MakeEnvelope(0,0,14,14), " \ - " 1.0, -1.0, '%s', %s" \ - " )," \ - " '%s', %d::float" \ - " ), " \ - " '%s', %d::float" \ - " ), " \ - " '%s', %d::float" \ - " ), " \ - " 2, 11, 6, 4, 5, %s::float8" \ - " )," \ - " 3, 6, 11, 5, 4, %s::float8" \ - " ) as r" \ - ") as foo" % (pixtype, r, pixtype, g, pixtype, b, pixtype, a, g1, b1) - overview = '' - rescale = 0 - clip = 0 - if rescale: - lbl += ' Sc' - if clip: - lbl += ' Cl' - ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME, table=sql, - raster_field='r', use_overviews=0 if overview else 0, - prescale_rasters=rescale, clip_rasters=clip) - fs = ds.featureset() - feature = fs.next() - eq_(feature['i'],3) - lyr = mapnik.Layer('rgba_subquery') - lyr.datasource = ds - expenv = mapnik.Box2d(0,0,14,14) - env = lyr.envelope() - assert_almost_equal(env.minx, expenv.minx, places=0) - assert_almost_equal(env.miny, expenv.miny, places=0) - assert_almost_equal(env.maxx, expenv.maxx, places=0) - assert_almost_equal(env.maxy, expenv.maxy, places=0) - mm = mapnik.Map(15, 15) - style = mapnik.Style() - sym = mapnik.RasterSymbolizer() - rule = mapnik.Rule() - rule.symbols.append(sym) - style.rules.append(rule) - mm.append_style('foo', style) - lyr.styles.append('foo') - mm.layers.append(lyr) - mm.zoom_to_box(expenv) - im = mapnik.Image(mm.width, mm.height) - t0 = time.time() # we want wall time to include IO waits - mapnik.render(mm, im) - lap = time.time() - t0 - log('T ' + str(lap) + ' -- ' + lbl + ' E:full') - expected = 'images/support/pgraster/%s-%s-%s-%s-%s-%s-%s-%s-%s.png' % (lyr.name,lbl, pixtype, r, g, b, a, g1, b1) - compare_images(expected,im) - hex_v = format(r << 24 | g << 16 | b << 8 | a, '08x') - hex_a = format(r << 24 | g1 << 16 | b << 8 | a, '08x') - hex_b = format(r << 24 | g << 16 | b1 << 8 | a, '08x') - eq_(hexlify(im.view( 3, 3,1,1).tostring()), hex_v); - eq_(hexlify(im.view( 8, 3,1,1).tostring()), hex_v); - eq_(hexlify(im.view(13, 3,1,1).tostring()), hex_v); - eq_(hexlify(im.view( 3, 8,1,1).tostring()), hex_v); - eq_(hexlify(im.view( 8, 8,1,1).tostring()), hex_v); - eq_(hexlify(im.view(13, 8,1,1).tostring()), hex_a); - eq_(hexlify(im.view( 3,13,1,1).tostring()), hex_v); - eq_(hexlify(im.view( 8,13,1,1).tostring()), hex_b); - eq_(hexlify(im.view(13,13,1,1).tostring()), hex_v); - - def test_rgba_8bui_subquery(): - _test_rgba_subquery('rgba_8bui_subquery', '8BUI', 255, 0, 0, 255, 255, 255) - - #def test_rgba_16bui_subquery(): - # _test_rgba_subquery('rgba_16bui_subquery', '16BUI', 65535, 0, 0, 65535, 65535, 65535) - - #def test_rgba_32bui_subquery(): - # _test_rgba_subquery('rgba_32bui_subquery', '32BUI') - - atexit.register(postgis_takedown) - -def enabled(tname): - enabled = len(sys.argv) < 2 or tname in sys.argv - if not enabled: - print "Skipping " + tname + " as not explicitly enabled" - return enabled - -if __name__ == "__main__": - setup() - fail = run_all(eval(x) for x in dir() if x.startswith("test_") and enabled(x)) - exit(fail) diff --git a/tests/python_tests/pickling_test.py b/tests/python_tests/pickling_test.py deleted file mode 100644 index 7a3572d11..000000000 --- a/tests/python_tests/pickling_test.py +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import os -from nose.tools import eq_ -from utilities import execution_path, run_all - -import mapnik, pickle - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_color_pickle(): - c = mapnik.Color('blue') - - eq_(pickle.loads(pickle.dumps(c)), c) - - c = mapnik.Color(0, 64, 128) - - eq_(pickle.loads(pickle.dumps(c)), c) - - c = mapnik.Color(0, 64, 128, 192) - - eq_(pickle.loads(pickle.dumps(c)), c) - -def test_envelope_pickle(): - e = mapnik.Box2d(100, 100, 200, 200) - - eq_(pickle.loads(pickle.dumps(e)), e) - -def test_parameters_pickle(): - params = mapnik.Parameters() - params.append(mapnik.Parameter('oh',str('yeah'))) - - params2 = pickle.loads(pickle.dumps(params,pickle.HIGHEST_PROTOCOL)) - - eq_(params[0][0],params2[0][0]) - eq_(params[0][1],params2[0][1]) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/png_encoding_test.py b/tests/python_tests/png_encoding_test.py deleted file mode 100644 index 568edfd78..000000000 --- a/tests/python_tests/png_encoding_test.py +++ /dev/null @@ -1,218 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import os, mapnik -from nose.tools import eq_ -from utilities import execution_path, run_all - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -if mapnik.has_png(): - tmp_dir = '/tmp/mapnik-png/' - if not os.path.exists(tmp_dir): - os.makedirs(tmp_dir) - - opts = [ - 'png32', - 'png32:t=0', - 'png8:m=o', - 'png8:m=o:c=1', - 'png8:m=o:t=0', - 'png8:m=o:c=1:t=0', - 'png8:m=o:t=1', - 'png8:m=o:t=2', - 'png8:m=h', - 'png8:m=h:c=1', - 'png8:m=h:t=0', - 'png8:m=h:c=1:t=0', - 'png8:m=h:t=1', - 'png8:m=h:t=2', - 'png32:e=miniz', - 'png8:e=miniz' - ] - - # Todo - use itertools.product - #z_opts = range(1,9+1) - #t_opts = range(0,2+1) - - def gen_filepath(name,format): - return os.path.join('images/support/encoding-opts',name+'-'+format.replace(":","+")+'.png') - - generate = os.environ.get('UPDATE') - - def test_expected_encodings(): - # blank image - im = mapnik.Image(256,256) - for opt in opts: - expected = gen_filepath('solid',opt) - actual = os.path.join(tmp_dir,os.path.basename(expected)) - if generate or not os.path.exists(expected): - print 'generating expected image %s' % expected - im.save(expected,opt) - else: - im.save(actual,opt) - eq_(mapnik.Image.open(actual).tostring('png32'), - mapnik.Image.open(expected).tostring('png32'), - '%s (actual) not == to %s (expected)' % (actual,expected)) - - # solid image - im.fill(mapnik.Color('green')) - for opt in opts: - expected = gen_filepath('blank',opt) - actual = os.path.join(tmp_dir,os.path.basename(expected)) - if generate or not os.path.exists(expected): - print 'generating expected image %s' % expected - im.save(expected,opt) - else: - im.save(actual,opt) - eq_(mapnik.Image.open(actual).tostring('png32'), - mapnik.Image.open(expected).tostring('png32'), - '%s (actual) not == to %s (expected)' % (actual,expected)) - - # aerial - im = mapnik.Image.open('./images/support/transparency/aerial_rgba.png') - for opt in opts: - expected = gen_filepath('aerial_rgba',opt) - actual = os.path.join(tmp_dir,os.path.basename(expected)) - if generate or not os.path.exists(expected): - print 'generating expected image %s' % expected - im.save(expected,opt) - else: - im.save(actual,opt) - eq_(mapnik.Image.open(actual).tostring('png32'), - mapnik.Image.open(expected).tostring('png32'), - '%s (actual) not == to %s (expected)' % (actual,expected)) - - def test_transparency_levels(): - # create partial transparency image - im = mapnik.Image(256,256) - im.fill(mapnik.Color('rgba(255,255,255,.5)')) - c2 = mapnik.Color('rgba(255,255,0,.2)') - c3 = mapnik.Color('rgb(0,255,255)') - for y in range(0,im.height()/2): - for x in range(0,im.width()/2): - im.set_pixel(x,y,c2) - for y in range(im.height()/2,im.height()): - for x in range(im.width()/2,im.width()): - im.set_pixel(x,y,c3) - - t0 = tmp_dir + 'white0.png' - t2 = tmp_dir + 'white2.png' - t1 = tmp_dir + 'white1.png' - - # octree - format = 'png8:m=o:t=0' - im.save(t0,format) - im_in = mapnik.Image.open(t0) - t0_len = len(im_in.tostring(format)) - eq_(t0_len,len(mapnik.Image.open('images/support/transparency/white0.png').tostring(format))) - format = 'png8:m=o:t=1' - im.save(t1,format) - im_in = mapnik.Image.open(t1) - t1_len = len(im_in.tostring(format)) - eq_(len(im.tostring(format)),len(mapnik.Image.open('images/support/transparency/white1.png').tostring(format))) - format = 'png8:m=o:t=2' - im.save(t2,format) - im_in = mapnik.Image.open(t2) - t2_len = len(im_in.tostring(format)) - eq_(len(im.tostring(format)),len(mapnik.Image.open('images/support/transparency/white2.png').tostring(format))) - - eq_(t0_len < t1_len < t2_len,True) - - # hextree - format = 'png8:m=h:t=0' - im.save(t0,format) - im_in = mapnik.Image.open(t0) - t0_len = len(im_in.tostring(format)) - eq_(t0_len,len(mapnik.Image.open('images/support/transparency/white0.png').tostring(format))) - format = 'png8:m=h:t=1' - im.save(t1,format) - im_in = mapnik.Image.open(t1) - t1_len = len(im_in.tostring(format)) - eq_(len(im.tostring(format)),len(mapnik.Image.open('images/support/transparency/white1.png').tostring(format))) - format = 'png8:m=h:t=2' - im.save(t2,format) - im_in = mapnik.Image.open(t2) - t2_len = len(im_in.tostring(format)) - eq_(len(im.tostring(format)),len(mapnik.Image.open('images/support/transparency/white2.png').tostring(format))) - - eq_(t0_len < t1_len < t2_len,True) - - def test_transparency_levels_aerial(): - im = mapnik.Image.open('../data/images/12_654_1580.png') - im_in = mapnik.Image.open('./images/support/transparency/aerial_rgba.png') - eq_(len(im.tostring('png8')),len(im_in.tostring('png8'))) - eq_(len(im.tostring('png32')),len(im_in.tostring('png32'))) - - im_in = mapnik.Image.open('./images/support/transparency/aerial_rgb.png') - eq_(len(im.tostring('png32')),len(im_in.tostring('png32'))) - eq_(len(im.tostring('png32:t=0')),len(im_in.tostring('png32:t=0'))) - eq_(len(im.tostring('png32:t=0')) == len(im_in.tostring('png32')), False) - eq_(len(im.tostring('png8')),len(im_in.tostring('png8'))) - eq_(len(im.tostring('png8:t=0')),len(im_in.tostring('png8:t=0'))) - # unlike png32 paletted images without alpha will look the same even if no alpha is forced - eq_(len(im.tostring('png8:t=0')) == len(im_in.tostring('png8')), True) - eq_(len(im.tostring('png8:t=0:m=o')) == len(im_in.tostring('png8:m=o')), True) - - def test_9_colors_hextree(): - expected = './images/support/encoding-opts/png8-9cols.png' - im = mapnik.Image.open(expected) - t0 = tmp_dir + 'png-encoding-9-colors.result-hextree.png' - im.save(t0, 'png8:m=h') - eq_(mapnik.Image.open(t0).tostring(), - mapnik.Image.open(expected).tostring(), - '%s (actual) not == to %s (expected)' % (t0, expected)) - - def test_9_colors_octree(): - expected = './images/support/encoding-opts/png8-9cols.png' - im = mapnik.Image.open(expected) - t0 = tmp_dir + 'png-encoding-9-colors.result-octree.png' - im.save(t0, 'png8:m=o') - eq_(mapnik.Image.open(t0).tostring(), - mapnik.Image.open(expected).tostring(), - '%s (actual) not == to %s (expected)' % (t0, expected)) - - def test_17_colors_hextree(): - expected = './images/support/encoding-opts/png8-17cols.png' - im = mapnik.Image.open(expected) - t0 = tmp_dir + 'png-encoding-17-colors.result-hextree.png' - im.save(t0, 'png8:m=h') - eq_(mapnik.Image.open(t0).tostring(), - mapnik.Image.open(expected).tostring(), - '%s (actual) not == to %s (expected)' % (t0, expected)) - - def test_17_colors_octree(): - expected = './images/support/encoding-opts/png8-17cols.png' - im = mapnik.Image.open(expected) - t0 = tmp_dir + 'png-encoding-17-colors.result-octree.png' - im.save(t0, 'png8:m=o') - eq_(mapnik.Image.open(t0).tostring(), - mapnik.Image.open(expected).tostring(), - '%s (actual) not == to %s (expected)' % (t0, expected)) - - def test_2px_regression_hextree(): - im = mapnik.Image.open('./images/support/encoding-opts/png8-2px.A.png') - expected = './images/support/encoding-opts/png8-2px.png' - - t0 = tmp_dir + 'png-encoding-2px.result-hextree.png' - im.save(t0, 'png8:m=h') - eq_(mapnik.Image.open(t0).tostring(), - mapnik.Image.open(expected).tostring(), - '%s (actual) not == to %s (expected)' % (t0, expected)) - - def test_2px_regression_octree(): - im = mapnik.Image.open('./images/support/encoding-opts/png8-2px.A.png') - expected = './images/support/encoding-opts/png8-2px.png' - t0 = tmp_dir + 'png-encoding-2px.result-octree.png' - im.save(t0, 'png8:m=o') - eq_(mapnik.Image.open(t0).tostring(), - mapnik.Image.open(expected).tostring(), - '%s (actual) not == to %s (expected)' % (t0, expected)) - - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/pngsuite_test.py b/tests/python_tests/pngsuite_test.py deleted file mode 100644 index 4c933eb2d..000000000 --- a/tests/python_tests/pngsuite_test.py +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env python - -import os -import mapnik -from nose.tools import assert_raises -from utilities import execution_path, run_all - -datadir = '../data/pngsuite' - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def assert_broken_file(fname): - assert_raises(RuntimeError, lambda: mapnik.Image.open(fname)) - -def assert_good_file(fname): - assert mapnik.Image.open(fname) - -def get_pngs(good): - files = [ x for x in os.listdir(datadir) if x.endswith('.png') ] - return [ os.path.join(datadir, x) for x in files if good != x.startswith('x') ] - -def test_good_pngs(): - for x in get_pngs(True): - yield assert_good_file, x - -def test_broken_pngs(): - for x in get_pngs(False): - yield assert_broken_file, x - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/postgis_test.py b/tests/python_tests/postgis_test.py deleted file mode 100644 index 42e40cc0d..000000000 --- a/tests/python_tests/postgis_test.py +++ /dev/null @@ -1,1177 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_,raises -import atexit -from utilities import execution_path, run_all -from subprocess import Popen, PIPE -import os, mapnik -import threading - - -MAPNIK_TEST_DBNAME = 'mapnik-tmp-postgis-test-db' -POSTGIS_TEMPLATE_DBNAME = 'template_postgis' -SHAPEFILE = os.path.join(execution_path('.'),'../data/shp/world_merc.shp') - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def call(cmd,silent=False): - stdin, stderr = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE).communicate() - if not stderr: - return stdin.strip() - elif not silent and 'error' in stderr.lower() \ - or 'not found' in stderr.lower() \ - or 'could not connect' in stderr.lower() \ - or 'bad connection' in stderr.lower() \ - or 'not recognized as an internal' in stderr.lower(): - raise RuntimeError(stderr.strip()) - -def psql_can_connect(): - """Test ability to connect to a postgis template db with no options. - - Basically, to run these tests your user must have full read - access over unix sockets without supplying a password. This - keeps these tests simple and focused on postgis not on postgres - auth issues. - """ - try: - call('psql %s -c "select postgis_version()"' % POSTGIS_TEMPLATE_DBNAME) - return True - except RuntimeError: - print 'Notice: skipping postgis tests (connection)' - return False - -def shp2pgsql_on_path(): - """Test for presence of shp2pgsql on the user path. - - We require this program to load test data into a temporarily database. - """ - try: - call('shp2pgsql') - return True - except RuntimeError: - print 'Notice: skipping postgis tests (shp2pgsql)' - return False - -def createdb_and_dropdb_on_path(): - """Test for presence of dropdb/createdb on user path. - - We require these programs to setup and teardown the testing db. - """ - try: - call('createdb --help') - call('dropdb --help') - return True - except RuntimeError: - print 'Notice: skipping postgis tests (createdb/dropdb)' - return False - -insert_table_1 = """ -CREATE TABLE test(gid serial PRIMARY KEY, geom geometry); -INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;POINT(-2 2)')); -INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;MULTIPOINT(2 1,1 2)')); -INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;LINESTRING(0 0,1 1,1 2)')); -INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;MULTILINESTRING((1 0,0 1,3 2),(3 2,5 4))')); -INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))')); -INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;MULTIPOLYGON(((1 1,3 1,3 3,1 3,1 1),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))')); -INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;GEOMETRYCOLLECTION(POLYGON((1 1, 2 1, 2 2, 1 2,1 1)),POINT(2 3),LINESTRING(2 3,3 4))')); -""" - -insert_table_2 = """ -CREATE TABLE test2(manual_id int4 PRIMARY KEY, geom geometry); -INSERT INTO test2(manual_id, geom) values (0, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test2(manual_id, geom) values (1, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test2(manual_id, geom) values (1000, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test2(manual_id, geom) values (-1000, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test2(manual_id, geom) values (2147483647, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test2(manual_id, geom) values (-2147483648, GeomFromEWKT('SRID=4326;POINT(0 0)')); -""" - -insert_table_3 = """ -CREATE TABLE test3(non_id bigint, manual_id int4, geom geometry); -INSERT INTO test3(non_id, manual_id, geom) values (9223372036854775807, 0, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test3(non_id, manual_id, geom) values (9223372036854775807, 1, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test3(non_id, manual_id, geom) values (9223372036854775807, 1000, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test3(non_id, manual_id, geom) values (9223372036854775807, -1000, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test3(non_id, manual_id, geom) values (9223372036854775807, 2147483647, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test3(non_id, manual_id, geom) values (9223372036854775807, -2147483648, GeomFromEWKT('SRID=4326;POINT(0 0)')); -""" - -insert_table_4 = """ -CREATE TABLE test4(non_id int4, manual_id int8 PRIMARY KEY, geom geometry); -INSERT INTO test4(non_id, manual_id, geom) values (0, 0, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test4(non_id, manual_id, geom) values (0, 1, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test4(non_id, manual_id, geom) values (0, 1000, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test4(non_id, manual_id, geom) values (0, -1000, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test4(non_id, manual_id, geom) values (0, 2147483647, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test4(non_id, manual_id, geom) values (0, -2147483648, GeomFromEWKT('SRID=4326;POINT(0 0)')); -""" - -insert_table_5 = """ -CREATE TABLE test5(non_id int4, manual_id numeric PRIMARY KEY, geom geometry); -INSERT INTO test5(non_id, manual_id, geom) values (0, -1, GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test5(non_id, manual_id, geom) values (0, 1, GeomFromEWKT('SRID=4326;POINT(0 0)')); -""" - -insert_table_5b = ''' -CREATE TABLE "tableWithMixedCase"(gid serial PRIMARY KEY, geom geometry); -INSERT INTO "tableWithMixedCase"(geom) values (ST_MakePoint(0,0)); -INSERT INTO "tableWithMixedCase"(geom) values (ST_MakePoint(0,1)); -INSERT INTO "tableWithMixedCase"(geom) values (ST_MakePoint(1,0)); -INSERT INTO "tableWithMixedCase"(geom) values (ST_MakePoint(1,1)); -''' - -insert_table_6 = ''' -CREATE TABLE test6(first_id int4, second_id int4,PRIMARY KEY (first_id,second_id), geom geometry); -INSERT INTO test6(first_id, second_id, geom) values (0, 0, GeomFromEWKT('SRID=4326;POINT(0 0)')); -''' - -insert_table_7 = ''' -CREATE TABLE test7(gid serial PRIMARY KEY, geom geometry); -INSERT INTO test7(gid, geom) values (1, GeomFromEWKT('SRID=4326;GEOMETRYCOLLECTION(MULTILINESTRING((10 10,20 20,10 40),(40 40,30 30,40 20,30 10)),LINESTRING EMPTY)')); -''' - -insert_table_8 = ''' -CREATE TABLE test8(gid serial PRIMARY KEY,int_field bigint, geom geometry); -INSERT INTO test8(gid, int_field, geom) values (1, 2147483648, ST_MakePoint(1,1)); -INSERT INTO test8(gid, int_field, geom) values (2, 922337203685477580, ST_MakePoint(1,1)); -''' - -insert_table_9 = ''' -CREATE TABLE test9(gid serial PRIMARY KEY, name varchar, geom geometry); -INSERT INTO test9(gid, name, geom) values (1, 'name', ST_MakePoint(1,1)); -INSERT INTO test9(gid, name, geom) values (2, '', ST_MakePoint(1,1)); -INSERT INTO test9(gid, name, geom) values (3, null, ST_MakePoint(1,1)); -''' - -insert_table_10 = ''' -CREATE TABLE test10(gid serial PRIMARY KEY, bool_field boolean, geom geometry); -INSERT INTO test10(gid, bool_field, geom) values (1, TRUE, ST_MakePoint(1,1)); -INSERT INTO test10(gid, bool_field, geom) values (2, FALSE, ST_MakePoint(1,1)); -INSERT INTO test10(gid, bool_field, geom) values (3, null, ST_MakePoint(1,1)); -''' - -insert_table_11 = """ -CREATE TABLE test11(gid serial PRIMARY KEY, label varchar(40), geom geometry); -INSERT INTO test11(label,geom) values ('label_1',GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test11(label,geom) values ('label_2',GeomFromEWKT('SRID=4326;POINT(-2 2)')); -INSERT INTO test11(label,geom) values ('label_3',GeomFromEWKT('SRID=4326;MULTIPOINT(2 1,1 2)')); -INSERT INTO test11(label,geom) values ('label_4',GeomFromEWKT('SRID=4326;LINESTRING(0 0,1 1,1 2)')); -INSERT INTO test11(label,geom) values ('label_5',GeomFromEWKT('SRID=4326;MULTILINESTRING((1 0,0 1,3 2),(3 2,5 4))')); -INSERT INTO test11(label,geom) values ('label_6',GeomFromEWKT('SRID=4326;POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))')); -INSERT INTO test11(label,geom) values ('label_7',GeomFromEWKT('SRID=4326;MULTIPOLYGON(((1 1,3 1,3 3,1 3,1 1),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))')); -INSERT INTO test11(label,geom) values ('label_8',GeomFromEWKT('SRID=4326;GEOMETRYCOLLECTION(POLYGON((1 1, 2 1, 2 2, 1 2,1 1)),POINT(2 3),LINESTRING(2 3,3 4))')); -""" - -insert_table_12 = """ -CREATE TABLE test12(gid serial PRIMARY KEY, name varchar(40), geom geometry); -INSERT INTO test12(name,geom) values ('Point',GeomFromEWKT('SRID=4326;POINT(0 0)')); -INSERT INTO test12(name,geom) values ('PointZ',GeomFromEWKT('SRID=4326;POINTZ(0 0 0)')); -INSERT INTO test12(name,geom) values ('PointM',GeomFromEWKT('SRID=4326;POINTM(0 0 0)')); -INSERT INTO test12(name,geom) values ('PointZM',GeomFromEWKT('SRID=4326;POINTZM(0 0 0 0)')); -INSERT INTO test12(name,geom) values ('MultiPoint',GeomFromEWKT('SRID=4326;MULTIPOINT(0 0, 1 1)')); -INSERT INTO test12(name,geom) values ('MultiPointZ',GeomFromEWKT('SRID=4326;MULTIPOINTZ(0 0 0, 1 1 1)')); -INSERT INTO test12(name,geom) values ('MultiPointM',GeomFromEWKT('SRID=4326;MULTIPOINTM(0 0 0, 1 1 1)')); -INSERT INTO test12(name,geom) values ('MultiPointZM',GeomFromEWKT('SRID=4326;MULTIPOINTZM(0 0 0 0, 1 1 1 1)')); -INSERT INTO test12(name,geom) values ('LineString',GeomFromEWKT('SRID=4326;LINESTRING(0 0, 1 1)')); -INSERT INTO test12(name,geom) values ('LineStringZ',GeomFromEWKT('SRID=4326;LINESTRINGZ(0 0 0, 1 1 1)')); -INSERT INTO test12(name,geom) values ('LineStringM',GeomFromEWKT('SRID=4326;LINESTRINGM(0 0 0, 1 1 1)')); -INSERT INTO test12(name,geom) values ('LineStringZM',GeomFromEWKT('SRID=4326;LINESTRINGZM(0 0 0 0, 1 1 1 1)')); -INSERT INTO test12(name,geom) values ('Polygon',GeomFromEWKT('SRID=4326;POLYGON((0 0, 1 1, 2 2, 0 0))')); -INSERT INTO test12(name,geom) values ('PolygonZ',GeomFromEWKT('SRID=4326;POLYGONZ((0 0 0, 1 1 1, 2 2 2, 0 0 0))')); -INSERT INTO test12(name,geom) values ('PolygonM',GeomFromEWKT('SRID=4326;POLYGONZ((0 0 0, 1 1 1, 2 2 2, 0 0 0))')); -INSERT INTO test12(name,geom) values ('PolygonZM',GeomFromEWKT('SRID=4326;POLYGONZM((0 0 0 0, 1 1 1 1, 2 2 2 2, 0 0 0 0))')); -INSERT INTO test12(name,geom) values ('MultiLineString',GeomFromEWKT('SRID=4326;MULTILINESTRING((0 0, 1 1),(2 2, 3 3))')); -INSERT INTO test12(name,geom) values ('MultiLineStringZ',GeomFromEWKT('SRID=4326;MULTILINESTRINGZ((0 0 0, 1 1 1),(2 2 2, 3 3 3))')); -INSERT INTO test12(name,geom) values ('MultiLineStringM',GeomFromEWKT('SRID=4326;MULTILINESTRINGM((0 0 0, 1 1 1),(2 2 2, 3 3 3))')); -INSERT INTO test12(name,geom) values ('MultiLineStringZM',GeomFromEWKT('SRID=4326;MULTILINESTRINGZM((0 0 0 0, 1 1 1 1),(2 2 2 2, 3 3 3 3))')); -INSERT INTO test12(name,geom) values ('MultiPolygon',GeomFromEWKT('SRID=4326;MULTIPOLYGON(((0 0, 1 1, 2 2, 0 0)),((0 0, 1 1, 2 2, 0 0)))')); -INSERT INTO test12(name,geom) values ('MultiPolygonZ',GeomFromEWKT('SRID=4326;MULTIPOLYGONZ(((0 0 0, 1 1 1, 2 2 2, 0 0 0)),((0 0 0, 1 1 1, 2 2 2, 0 0 0)))')); -INSERT INTO test12(name,geom) values ('MultiPolygonM',GeomFromEWKT('SRID=4326;MULTIPOLYGONM(((0 0 0, 1 1 1, 2 2 2, 0 0 0)),((0 0 0, 1 1 1, 2 2 2, 0 0 0)))')); -INSERT INTO test12(name,geom) values ('MultiPolygonZM',GeomFromEWKT('SRID=4326;MULTIPOLYGONZM(((0 0 0 0, 1 1 1 1, 2 2 2 2, 0 0 0 0)),((0 0 0 0, 1 1 1 1, 2 2 2 2, 0 0 0 0)))')); -""" - - -def postgis_setup(): - call('dropdb %s' % MAPNIK_TEST_DBNAME,silent=True) - call('createdb -T %s %s' % (POSTGIS_TEMPLATE_DBNAME,MAPNIK_TEST_DBNAME),silent=False) - call('shp2pgsql -s 3857 -g geom -W LATIN1 %s world_merc | psql -q %s' % (SHAPEFILE,MAPNIK_TEST_DBNAME), silent=True) - call('''psql -q %s -c "CREATE TABLE \"empty\" (key serial);SELECT AddGeometryColumn('','empty','geom','-1','GEOMETRY',4);"''' % MAPNIK_TEST_DBNAME,silent=False) - call('''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME,insert_table_1),silent=False) - call('''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME,insert_table_2),silent=False) - call('''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME,insert_table_3),silent=False) - call('''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME,insert_table_4),silent=False) - call('''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME,insert_table_5),silent=False) - call("""psql -q %s -c '%s'""" % (MAPNIK_TEST_DBNAME,insert_table_5b),silent=False) - call('''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME,insert_table_6),silent=False) - call('''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME,insert_table_7),silent=False) - call('''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME,insert_table_8),silent=False) - call('''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME,insert_table_9),silent=False) - call('''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME,insert_table_10),silent=False) - call('''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME,insert_table_11),silent=False) - call('''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME,insert_table_12),silent=False) - -def postgis_takedown(): - pass - # fails as the db is in use: https://github.com/mapnik/mapnik/issues/960 - #call('dropdb %s' % MAPNIK_TEST_DBNAME) - -if 'postgis' in mapnik.DatasourceCache.plugin_names() \ - and createdb_and_dropdb_on_path() \ - and psql_can_connect() \ - and shp2pgsql_on_path(): - - # initialize test database - postgis_setup() - - def test_feature(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='world_merc') - fs = ds.featureset() - feature = fs.next() - eq_(feature['gid'],1) - eq_(feature['fips'],u'AC') - eq_(feature['iso2'],u'AG') - eq_(feature['iso3'],u'ATG') - eq_(feature['un'],28) - eq_(feature['name'],u'Antigua and Barbuda') - eq_(feature['area'],44) - eq_(feature['pop2005'],83039) - eq_(feature['region'],19) - eq_(feature['subregion'],29) - eq_(feature['lon'],-61.783) - eq_(feature['lat'],17.078) - meta = ds.describe() - eq_(meta['srid'],3857) - eq_(meta.get('key_field'),None) - eq_(meta['encoding'],u'UTF8') - eq_(meta['geometry_type'],mapnik.DataGeometryType.Polygon) - - def test_subquery(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='(select * from world_merc) as w') - fs = ds.featureset() - feature = fs.next() - eq_(feature['gid'],1) - eq_(feature['fips'],u'AC') - eq_(feature['iso2'],u'AG') - eq_(feature['iso3'],u'ATG') - eq_(feature['un'],28) - eq_(feature['name'],u'Antigua and Barbuda') - eq_(feature['area'],44) - eq_(feature['pop2005'],83039) - eq_(feature['region'],19) - eq_(feature['subregion'],29) - eq_(feature['lon'],-61.783) - eq_(feature['lat'],17.078) - meta = ds.describe() - eq_(meta['srid'],3857) - eq_(meta.get('key_field'),None) - eq_(meta['encoding'],u'UTF8') - eq_(meta['geometry_type'],mapnik.DataGeometryType.Polygon) - - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='(select gid,geom,fips as _fips from world_merc) as w') - fs = ds.featureset() - feature = fs.next() - eq_(feature['gid'],1) - eq_(feature['_fips'],u'AC') - eq_(len(feature),2) - meta = ds.describe() - eq_(meta['srid'],3857) - eq_(meta.get('key_field'),None) - eq_(meta['encoding'],u'UTF8') - eq_(meta['geometry_type'],mapnik.DataGeometryType.Polygon) - - def test_bad_connection(): - try: - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, - table='test', - max_size=20, - geometry_field='geom', - user="rolethatdoesnotexist") - except Exception, e: - assert 'role "rolethatdoesnotexist" does not exist' in str(e) - - def test_empty_db(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='empty') - fs = ds.featureset() - feature = None - try: - feature = fs.next() - except StopIteration: - pass - eq_(feature,None) - meta = ds.describe() - eq_(meta['srid'],-1) - eq_(meta.get('key_field'),None) - eq_(meta['encoding'],u'UTF8') - eq_(meta['geometry_type'],None) - - def test_manual_srid(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,srid=99, table='empty') - fs = ds.featureset() - feature = None - try: - feature = fs.next() - except StopIteration: - pass - eq_(feature,None) - meta = ds.describe() - eq_(meta['srid'],99) - eq_(meta.get('key_field'),None) - eq_(meta['encoding'],u'UTF8') - eq_(meta['geometry_type'],None) - - def test_geometry_detection(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='test', - geometry_field='geom') - meta = ds.describe() - eq_(meta['srid'],4326) - eq_(meta.get('key_field'),None) - eq_(meta['geometry_type'],mapnik.DataGeometryType.Collection) - - # will fail with postgis 2.0 because it automatically adds a geometry_columns entry - #ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='test', - # geometry_field='geom', - # row_limit=1) - #eq_(ds.describe()['geometry_type'],mapnik.DataGeometryType.Point) - - @raises(RuntimeError) - def test_that_nonexistant_query_field_throws(**kwargs): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='empty') - eq_(len(ds.fields()),1) - eq_(ds.fields(),['key']) - eq_(ds.field_types(),['int']) - query = mapnik.Query(ds.envelope()) - for fld in ds.fields(): - query.add_property_name(fld) - # also add an invalid one, triggering throw - query.add_property_name('bogus') - ds.features(query) - - def test_auto_detection_of_unique_feature_id_32_bit(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='test2', - geometry_field='geom', - autodetect_key_field=True) - fs = ds.featureset() - eq_(fs.next()['manual_id'],0) - eq_(fs.next()['manual_id'],1) - eq_(fs.next()['manual_id'],1000) - eq_(fs.next()['manual_id'],-1000) - eq_(fs.next()['manual_id'],2147483647) - eq_(fs.next()['manual_id'],-2147483648) - - fs = ds.featureset() - eq_(fs.next().id(),0) - eq_(fs.next().id(),1) - eq_(fs.next().id(),1000) - eq_(fs.next().id(),-1000) - eq_(fs.next().id(),2147483647) - eq_(fs.next().id(),-2147483648) - meta = ds.describe() - eq_(meta['srid'],4326) - eq_(meta.get('key_field'),u'manual_id') - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - def test_auto_detection_will_fail_since_no_primary_key(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='test3', - geometry_field='geom', - autodetect_key_field=False) - fs = ds.featureset() - feat = fs.next() - eq_(feat['manual_id'],0) - # will fail: https://github.com/mapnik/mapnik/issues/895 - #eq_(feat['non_id'],9223372036854775807) - eq_(fs.next()['manual_id'],1) - eq_(fs.next()['manual_id'],1000) - eq_(fs.next()['manual_id'],-1000) - eq_(fs.next()['manual_id'],2147483647) - eq_(fs.next()['manual_id'],-2147483648) - - # since no valid primary key will be detected the fallback - # is auto-incrementing counter - fs = ds.featureset() - eq_(fs.next().id(),1) - eq_(fs.next().id(),2) - eq_(fs.next().id(),3) - eq_(fs.next().id(),4) - eq_(fs.next().id(),5) - eq_(fs.next().id(),6) - - meta = ds.describe() - eq_(meta['srid'],4326) - eq_(meta.get('key_field'),None) - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - @raises(RuntimeError) - def test_auto_detection_will_fail_and_should_throw(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='test3', - geometry_field='geom', - autodetect_key_field=True) - ds.featureset() - - def test_auto_detection_of_unique_feature_id_64_bit(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='test4', - geometry_field='geom', - autodetect_key_field=True) - fs = ds.featureset() - eq_(fs.next()['manual_id'],0) - eq_(fs.next()['manual_id'],1) - eq_(fs.next()['manual_id'],1000) - eq_(fs.next()['manual_id'],-1000) - eq_(fs.next()['manual_id'],2147483647) - eq_(fs.next()['manual_id'],-2147483648) - - fs = ds.featureset() - eq_(fs.next().id(),0) - eq_(fs.next().id(),1) - eq_(fs.next().id(),1000) - eq_(fs.next().id(),-1000) - eq_(fs.next().id(),2147483647) - eq_(fs.next().id(),-2147483648) - - meta = ds.describe() - eq_(meta['srid'],4326) - eq_(meta.get('key_field'),u'manual_id') - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - def test_disabled_auto_detection_and_subquery(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='''(select geom, 'a'::varchar as name from test2) as t''', - geometry_field='geom', - autodetect_key_field=False) - fs = ds.featureset() - feat = fs.next() - eq_(feat.id(),1) - eq_(feat['name'],'a') - feat = fs.next() - eq_(feat.id(),2) - eq_(feat['name'],'a') - feat = fs.next() - eq_(feat.id(),3) - eq_(feat['name'],'a') - feat = fs.next() - eq_(feat.id(),4) - eq_(feat['name'],'a') - feat = fs.next() - eq_(feat.id(),5) - eq_(feat['name'],'a') - feat = fs.next() - eq_(feat.id(),6) - eq_(feat['name'],'a') - - meta = ds.describe() - eq_(meta['srid'],4326) - eq_(meta.get('key_field'),None) - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - def test_auto_detection_and_subquery_including_key(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='''(select geom, manual_id from test2) as t''', - geometry_field='geom', - autodetect_key_field=True) - fs = ds.featureset() - eq_(fs.next()['manual_id'],0) - eq_(fs.next()['manual_id'],1) - eq_(fs.next()['manual_id'],1000) - eq_(fs.next()['manual_id'],-1000) - eq_(fs.next()['manual_id'],2147483647) - eq_(fs.next()['manual_id'],-2147483648) - - fs = ds.featureset() - eq_(fs.next().id(),0) - eq_(fs.next().id(),1) - eq_(fs.next().id(),1000) - eq_(fs.next().id(),-1000) - eq_(fs.next().id(),2147483647) - eq_(fs.next().id(),-2147483648) - - meta = ds.describe() - eq_(meta['srid'],4326) - eq_(meta.get('key_field'),u'manual_id') - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - @raises(RuntimeError) - def test_auto_detection_of_invalid_numeric_primary_key(): - mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='''(select geom, manual_id::numeric from test2) as t''', - geometry_field='geom', - autodetect_key_field=True) - - @raises(RuntimeError) - def test_auto_detection_of_invalid_multiple_keys(): - mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='''test6''', - geometry_field='geom', - autodetect_key_field=True) - - @raises(RuntimeError) - def test_auto_detection_of_invalid_multiple_keys_subquery(): - mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='''(select first_id,second_id,geom from test6) as t''', - geometry_field='geom', - autodetect_key_field=True) - - def test_manually_specified_feature_id_field(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='test4', - geometry_field='geom', - key_field='manual_id', - autodetect_key_field=True) - fs = ds.featureset() - eq_(fs.next()['manual_id'],0) - eq_(fs.next()['manual_id'],1) - eq_(fs.next()['manual_id'],1000) - eq_(fs.next()['manual_id'],-1000) - eq_(fs.next()['manual_id'],2147483647) - eq_(fs.next()['manual_id'],-2147483648) - - fs = ds.featureset() - eq_(fs.next().id(),0) - eq_(fs.next().id(),1) - eq_(fs.next().id(),1000) - eq_(fs.next().id(),-1000) - eq_(fs.next().id(),2147483647) - eq_(fs.next().id(),-2147483648) - - meta = ds.describe() - eq_(meta['srid'],4326) - eq_(meta.get('key_field'),u'manual_id') - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - def test_numeric_type_feature_id_field(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='test5', - geometry_field='geom', - autodetect_key_field=False) - fs = ds.featureset() - eq_(fs.next()['manual_id'],-1) - eq_(fs.next()['manual_id'],1) - - fs = ds.featureset() - eq_(fs.next().id(),1) - eq_(fs.next().id(),2) - - meta = ds.describe() - eq_(meta['srid'],4326) - eq_(meta.get('key_field'),None) - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - def test_querying_table_with_mixed_case(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='"tableWithMixedCase"', - geometry_field='geom', - autodetect_key_field=True) - fs = ds.featureset() - for id in range(1,5): - eq_(fs.next().id(),id) - - meta = ds.describe() - eq_(meta['srid'],-1) - eq_(meta.get('key_field'),u'gid') - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - def test_querying_subquery_with_mixed_case(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='(SeLeCt * FrOm "tableWithMixedCase") as MixedCaseQuery', - geometry_field='geom', - autodetect_key_field=True) - fs = ds.featureset() - for id in range(1,5): - eq_(fs.next().id(),id) - - meta = ds.describe() - eq_(meta['srid'],-1) - eq_(meta.get('key_field'),u'gid') - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - def test_bbox_token_in_subquery1(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table=''' - (SeLeCt * FrOm "tableWithMixedCase" where geom && !bbox! ) as MixedCaseQuery''', - geometry_field='geom', - autodetect_key_field=True) - fs = ds.featureset() - for id in range(1,5): - eq_(fs.next().id(),id) - - meta = ds.describe() - eq_(meta['srid'],-1) - eq_(meta.get('key_field'),u'gid') - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - def test_bbox_token_in_subquery2(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table=''' - (SeLeCt * FrOm "tableWithMixedCase" where ST_Intersects(geom,!bbox!) ) as MixedCaseQuery''', - geometry_field='geom', - autodetect_key_field=True) - fs = ds.featureset() - for id in range(1,5): - eq_(fs.next().id(),id) - - meta = ds.describe() - eq_(meta['srid'],-1) - eq_(meta.get('key_field'),u'gid') - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - def test_empty_geom(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='test7', - geometry_field='geom') - fs = ds.featureset() - eq_(fs.next()['gid'],1) - - meta = ds.describe() - eq_(meta['srid'],4326) - eq_(meta.get('key_field'),None) - eq_(meta['geometry_type'],mapnik.DataGeometryType.Collection) - - def create_ds(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, - table='test', - max_size=20, - geometry_field='geom') - fs = ds.all_features() - eq_(len(fs),8) - - meta = ds.describe() - eq_(meta['srid'],4326) - eq_(meta.get('key_field'),None) - eq_(meta['geometry_type'],mapnik.DataGeometryType.Collection) - - def test_threaded_create(NUM_THREADS=100): - # run one to start before thread loop - # to ensure that a throw stops the test - # from running all threads - create_ds() - runs = 0 - for i in range(NUM_THREADS): - t = threading.Thread(target=create_ds) - t.start() - t.join() - runs +=1 - eq_(runs,NUM_THREADS) - - def create_ds_and_error(): - try: - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, - table='asdfasdfasdfasdfasdf', - max_size=20) - ds.all_features() - except Exception, e: - eq_('in executeQuery' in str(e),True) - - def test_threaded_create2(NUM_THREADS=10): - for i in range(NUM_THREADS): - t = threading.Thread(target=create_ds_and_error) - t.start() - t.join() - - def test_that_64bit_int_fields_work(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, - table='test8', - geometry_field='geom') - eq_(len(ds.fields()),2) - eq_(ds.fields(),['gid','int_field']) - eq_(ds.field_types(),['int','int']) - fs = ds.featureset() - feat = fs.next() - eq_(feat.id(),1) - eq_(feat['gid'],1) - eq_(feat['int_field'],2147483648) - feat = fs.next() - eq_(feat.id(),2) - eq_(feat['gid'],2) - eq_(feat['int_field'],922337203685477580) - - meta = ds.describe() - eq_(meta['srid'],-1) - eq_(meta.get('key_field'),None) - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - def test_persist_connection_off(): - # NOTE: max_size should be equal or greater than - # the pool size. There's currently no API to - # check nor set that size, but the current - # default is 20, so we use that value. See - # http://github.com/mapnik/mapnik/issues/863 - max_size = 20 - for i in range(0, max_size+1): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, - max_size=1, # unused - persist_connection=False, - table='(select ST_MakePoint(0,0) as g, pg_backend_pid() as p, 1 as v) as w', - geometry_field='g') - fs = ds.featureset() - eq_(fs.next()['v'], 1) - - meta = ds.describe() - eq_(meta['srid'],-1) - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - def test_null_comparision(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='test9', - geometry_field='geom') - fs = ds.featureset() - feat = fs.next() - - meta = ds.describe() - eq_(meta['srid'],-1) - eq_(meta.get('key_field'),None) - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - eq_(feat['gid'],1) - eq_(feat['name'],'name') - eq_(mapnik.Expression("[name] = 'name'").evaluate(feat),True) - eq_(mapnik.Expression("[name] = ''").evaluate(feat),False) - eq_(mapnik.Expression("[name] = null").evaluate(feat),False) - eq_(mapnik.Expression("[name] = true").evaluate(feat),False) - eq_(mapnik.Expression("[name] = false").evaluate(feat),False) - eq_(mapnik.Expression("[name] != 'name'").evaluate(feat),False) - eq_(mapnik.Expression("[name] != ''").evaluate(feat),True) - eq_(mapnik.Expression("[name] != null").evaluate(feat),True) - eq_(mapnik.Expression("[name] != true").evaluate(feat),True) - eq_(mapnik.Expression("[name] != false").evaluate(feat),True) - - feat = fs.next() - eq_(feat['gid'],2) - eq_(feat['name'],'') - eq_(mapnik.Expression("[name] = 'name'").evaluate(feat),False) - eq_(mapnik.Expression("[name] = ''").evaluate(feat),True) - eq_(mapnik.Expression("[name] = null").evaluate(feat),False) - eq_(mapnik.Expression("[name] = true").evaluate(feat),False) - eq_(mapnik.Expression("[name] = false").evaluate(feat),False) - eq_(mapnik.Expression("[name] != 'name'").evaluate(feat),True) - eq_(mapnik.Expression("[name] != ''").evaluate(feat),False) - eq_(mapnik.Expression("[name] != null").evaluate(feat),True) - eq_(mapnik.Expression("[name] != true").evaluate(feat),True) - eq_(mapnik.Expression("[name] != false").evaluate(feat),True) - - feat = fs.next() - eq_(feat['gid'],3) - eq_(feat['name'],None) # null - eq_(mapnik.Expression("[name] = 'name'").evaluate(feat),False) - eq_(mapnik.Expression("[name] = ''").evaluate(feat),False) - eq_(mapnik.Expression("[name] = null").evaluate(feat),True) - eq_(mapnik.Expression("[name] = true").evaluate(feat),False) - eq_(mapnik.Expression("[name] = false").evaluate(feat),False) - eq_(mapnik.Expression("[name] != 'name'").evaluate(feat),True) - # https://github.com/mapnik/mapnik/issues/1859 - eq_(mapnik.Expression("[name] != ''").evaluate(feat),False) - eq_(mapnik.Expression("[name] != null").evaluate(feat),False) - eq_(mapnik.Expression("[name] != true").evaluate(feat),True) - eq_(mapnik.Expression("[name] != false").evaluate(feat),True) - - def test_null_comparision2(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='test10', - geometry_field='geom') - fs = ds.featureset() - feat = fs.next() - - meta = ds.describe() - eq_(meta['srid'],-1) - eq_(meta.get('key_field'),None) - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - eq_(feat['gid'],1) - eq_(feat['bool_field'],True) - eq_(mapnik.Expression("[bool_field] = 'name'").evaluate(feat),False) - eq_(mapnik.Expression("[bool_field] = ''").evaluate(feat),False) - eq_(mapnik.Expression("[bool_field] = null").evaluate(feat),False) - eq_(mapnik.Expression("[bool_field] = true").evaluate(feat),True) - eq_(mapnik.Expression("[bool_field] = false").evaluate(feat),False) - eq_(mapnik.Expression("[bool_field] != 'name'").evaluate(feat),True) - eq_(mapnik.Expression("[bool_field] != ''").evaluate(feat),True) # in 2.1.x used to be False - eq_(mapnik.Expression("[bool_field] != null").evaluate(feat),True) # in 2.1.x used to be False - eq_(mapnik.Expression("[bool_field] != true").evaluate(feat),False) - eq_(mapnik.Expression("[bool_field] != false").evaluate(feat),True) - - feat = fs.next() - eq_(feat['gid'],2) - eq_(feat['bool_field'],False) - eq_(mapnik.Expression("[bool_field] = 'name'").evaluate(feat),False) - eq_(mapnik.Expression("[bool_field] = ''").evaluate(feat),False) - eq_(mapnik.Expression("[bool_field] = null").evaluate(feat),False) - eq_(mapnik.Expression("[bool_field] = true").evaluate(feat),False) - eq_(mapnik.Expression("[bool_field] = false").evaluate(feat),True) - eq_(mapnik.Expression("[bool_field] != 'name'").evaluate(feat),True) - eq_(mapnik.Expression("[bool_field] != ''").evaluate(feat),True) - eq_(mapnik.Expression("[bool_field] != null").evaluate(feat),True) # in 2.1.x used to be False - eq_(mapnik.Expression("[bool_field] != true").evaluate(feat),True) - eq_(mapnik.Expression("[bool_field] != false").evaluate(feat),False) - - feat = fs.next() - eq_(feat['gid'],3) - eq_(feat['bool_field'],None) # null - eq_(mapnik.Expression("[bool_field] = 'name'").evaluate(feat),False) - eq_(mapnik.Expression("[bool_field] = ''").evaluate(feat),False) - eq_(mapnik.Expression("[bool_field] = null").evaluate(feat),True) - eq_(mapnik.Expression("[bool_field] = true").evaluate(feat),False) - eq_(mapnik.Expression("[bool_field] = false").evaluate(feat),False) - eq_(mapnik.Expression("[bool_field] != 'name'").evaluate(feat),True) # in 2.1.x used to be False - # https://github.com/mapnik/mapnik/issues/1859 - eq_(mapnik.Expression("[bool_field] != ''").evaluate(feat),False) - eq_(mapnik.Expression("[bool_field] != null").evaluate(feat),False) - eq_(mapnik.Expression("[bool_field] != true").evaluate(feat),True) # in 2.1.x used to be False - eq_(mapnik.Expression("[bool_field] != false").evaluate(feat),True) # in 2.1.x used to be False - - # https://github.com/mapnik/mapnik/issues/1816 - def test_exception_message_reporting(): - try: - mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='doesnotexist') - except Exception, e: - eq_(e.message != 'unidentifiable C++ exception', True) - - def test_null_id_field(): - opts = {'type':'postgis', - 'dbname':MAPNIK_TEST_DBNAME, - 'geometry_field':'geom', - 'table':"(select null::bigint as osm_id, GeomFromEWKT('SRID=4326;POINT(0 0)') as geom) as tmp"} - ds = mapnik.Datasource(**opts) - fs = ds.featureset() - feat = fs.next() - eq_(feat.id(),1L) - eq_(feat['osm_id'],None) - - meta = ds.describe() - eq_(meta['srid'],4326) - eq_(meta.get('key_field'),None) - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - @raises(StopIteration) - def test_null_key_field(): - opts = {'type':'postgis', - "key_field": 'osm_id', - 'dbname':MAPNIK_TEST_DBNAME, - 'geometry_field':'geom', - 'table':"(select null::bigint as osm_id, GeomFromEWKT('SRID=4326;POINT(0 0)') as geom) as tmp"} - ds = mapnik.Datasource(**opts) - fs = ds.featureset() - fs.next() ## should throw since key_field is null: StopIteration: No more features. - - def test_psql_error_should_not_break_connection_pool(): - # Bad request, will trigger an error when returning result - ds_bad = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table="""(SELECT geom as geom,label::int from test11) as failure_table""", - max_async_connection=5,geometry_field='geom',srid=4326) - - # Good request - ds_good = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table="test", - max_async_connection=5,geometry_field='geom',srid=4326) - - # This will/should trigger a PSQL error - failed = False - try: - fs = ds_bad.featureset() - for feature in fs: - pass - except RuntimeError, e: - assert 'invalid input syntax for integer' in str(e) - failed = True - - eq_(failed,True) - - # Should be ok - fs = ds_good.featureset() - count = 0 - for feature in fs: - count += 1 - eq_(count,8) - - - def test_psql_error_should_give_back_connections_opened_for_lower_layers_to_the_pool(): - map1 = mapnik.Map(600,300) - s = mapnik.Style() - r = mapnik.Rule() - r.symbols.append(mapnik.PolygonSymbolizer()) - s.rules.append(r) - map1.append_style('style',s) - - # This layer will fail after a while - buggy_s = mapnik.Style() - buggy_r = mapnik.Rule() - buggy_r.symbols.append(mapnik.PolygonSymbolizer()) - buggy_r.filter = mapnik.Filter("[fips] = 'FR'") - buggy_s.rules.append(buggy_r) - map1.append_style('style for buggy layer',buggy_s) - buggy_layer = mapnik.Layer('this layer is buggy at runtime') - # We ensure the query wille be long enough - buggy_layer.datasource = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='(SELECT geom as geom, pg_sleep(0.1), fips::int from world_merc) as failure_tabl', - max_async_connection=2, max_size=2,asynchronous_request = True, geometry_field='geom') - buggy_layer.styles.append('style for buggy layer') - - # The query for this layer will be sent, then the previous layer will raise an exception before results are read - forced_canceled_layer = mapnik.Layer('this layer will be canceled when an exception stops map rendering') - forced_canceled_layer.datasource = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='world_merc', - max_async_connection=2, max_size=2, asynchronous_request = True, geometry_field='geom') - forced_canceled_layer.styles.append('style') - - map1.layers.append(buggy_layer) - map1.layers.append(forced_canceled_layer) - map1.zoom_all() - map2 = mapnik.Map(600,300) - map2.background = mapnik.Color('steelblue') - s = mapnik.Style() - r = mapnik.Rule() - r.symbols.append(mapnik.LineSymbolizer()) - r.symbols.append(mapnik.LineSymbolizer()) - s.rules.append(r) - map2.append_style('style',s) - layer1 = mapnik.Layer('layer1') - layer1.datasource = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='world_merc', - max_async_connection=2, max_size=2, asynchronous_request = True, geometry_field='geom') - layer1.styles.append('style') - map2.layers.append(layer1) - map2.zoom_all() - - # We expect this to trigger a PSQL error - try: - mapnik.render_to_file(map1,'/tmp/mapnik-postgis-test-map1.png', 'png') - # Test must fail if error was not raised just above - eq_(False,True) - except RuntimeError, e: - assert 'invalid input syntax for integer' in str(e) - pass - # This used to raise an exception before correction of issue 2042 - mapnik.render_to_file(map2,'/tmp/mapnik-postgis-test-map2.png', 'png') - - def test_handling_of_zm_dimensions(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, - table='(select gid,ST_CoordDim(geom) as dim,name,geom from test12) as tmp', - geometry_field='geom') - eq_(len(ds.fields()),3) - eq_(ds.fields(),['gid', 'dim', 'name']) - eq_(ds.field_types(),['int', 'int', 'str']) - fs = ds.featureset() - - meta = ds.describe() - eq_(meta['srid'],4326) - eq_(meta.get('key_field'),None) - # Note: this is incorrect because we only check first couple geoms - eq_(meta['geometry_type'],mapnik.DataGeometryType.Point) - - # Point (2d) - feat = fs.next() - eq_(feat.id(),1) - eq_(feat['gid'],1) - eq_(feat['dim'],2) - eq_(feat['name'],'Point') - eq_(feat.geometry.to_wkt(),'POINT(0 0)') - - # PointZ - feat = fs.next() - eq_(feat.id(),2) - eq_(feat['gid'],2) - eq_(feat['dim'],3) - eq_(feat['name'],'PointZ') - eq_(feat.geometry.to_wkt(),'POINT(0 0)') - - # PointM - feat = fs.next() - eq_(feat.id(),3) - eq_(feat['gid'],3) - eq_(feat['dim'],3) - eq_(feat['name'],'PointM') - eq_(feat.geometry.to_wkt(),'POINT(0 0)') - - # PointZM - feat = fs.next() - eq_(feat.id(),4) - eq_(feat['gid'],4) - eq_(feat['dim'],4) - eq_(feat['name'],'PointZM') - - eq_(feat.geometry.to_wkt(),'POINT(0 0)') - # MultiPoint - feat = fs.next() - eq_(feat.id(),5) - eq_(feat['gid'],5) - eq_(feat['dim'],2) - eq_(feat['name'],'MultiPoint') - eq_(feat.geometry.to_wkt(),'MULTIPOINT(0 0,1 1)') - - # MultiPointZ - feat = fs.next() - eq_(feat.id(),6) - eq_(feat['gid'],6) - eq_(feat['dim'],3) - eq_(feat['name'],'MultiPointZ') - eq_(feat.geometry.to_wkt(),'MULTIPOINT(0 0,1 1)') - - # MultiPointM - feat = fs.next() - eq_(feat.id(),7) - eq_(feat['gid'],7) - eq_(feat['dim'],3) - eq_(feat['name'],'MultiPointM') - eq_(feat.geometry.to_wkt(),'MULTIPOINT(0 0,1 1)') - - # MultiPointZM - feat = fs.next() - eq_(feat.id(),8) - eq_(feat['gid'],8) - eq_(feat['dim'],4) - eq_(feat['name'],'MultiPointZM') - eq_(feat.geometry.to_wkt(),'MULTIPOINT(0 0,1 1)') - - # LineString - feat = fs.next() - eq_(feat.id(),9) - eq_(feat['gid'],9) - eq_(feat['dim'],2) - eq_(feat['name'],'LineString') - eq_(feat.geometry.to_wkt(),'LINESTRING(0 0,1 1)') - - # LineStringZ - feat = fs.next() - eq_(feat.id(),10) - eq_(feat['gid'],10) - eq_(feat['dim'],3) - eq_(feat['name'],'LineStringZ') - eq_(feat.geometry.to_wkt(),'LINESTRING(0 0,1 1)') - - # LineStringM - feat = fs.next() - eq_(feat.id(),11) - eq_(feat['gid'],11) - eq_(feat['dim'],3) - eq_(feat['name'],'LineStringM') - eq_(feat.geometry.to_wkt(),'LINESTRING(0 0,1 1)') - - # LineStringZM - feat = fs.next() - eq_(feat.id(),12) - eq_(feat['gid'],12) - eq_(feat['dim'],4) - eq_(feat['name'],'LineStringZM') - eq_(feat.geometry.to_wkt(),'LINESTRING(0 0,1 1)') - - # Polygon - feat = fs.next() - eq_(feat.id(),13) - eq_(feat['gid'],13) - eq_(feat['name'],'Polygon') - eq_(feat.geometry.to_wkt(),'POLYGON((0 0,1 1,2 2,0 0))') - - # PolygonZ - feat = fs.next() - eq_(feat.id(),14) - eq_(feat['gid'],14) - eq_(feat['name'],'PolygonZ') - eq_(feat.geometry.to_wkt(),'POLYGON((0 0,1 1,2 2,0 0))') - - # PolygonM - feat = fs.next() - eq_(feat.id(),15) - eq_(feat['gid'],15) - eq_(feat['name'],'PolygonM') - eq_(feat.geometry.to_wkt(),'POLYGON((0 0,1 1,2 2,0 0))') - - # PolygonZM - feat = fs.next() - eq_(feat.id(),16) - eq_(feat['gid'],16) - eq_(feat['name'],'PolygonZM') - eq_(feat.geometry.to_wkt(),'POLYGON((0 0,1 1,2 2,0 0))') - - # MultiLineString - feat = fs.next() - eq_(feat.id(),17) - eq_(feat['gid'],17) - eq_(feat['name'],'MultiLineString') - eq_(feat.geometry.to_wkt(),'MULTILINESTRING((0 0,1 1),(2 2,3 3))') - - # MultiLineStringZ - feat = fs.next() - eq_(feat.id(),18) - eq_(feat['gid'],18) - eq_(feat['name'],'MultiLineStringZ') - eq_(feat.geometry.to_wkt(),'MULTILINESTRING((0 0,1 1),(2 2,3 3))') - - # MultiLineStringM - feat = fs.next() - eq_(feat.id(),19) - eq_(feat['gid'],19) - eq_(feat['name'],'MultiLineStringM') - eq_(feat.geometry.to_wkt(),'MULTILINESTRING((0 0,1 1),(2 2,3 3))') - - # MultiLineStringZM - feat = fs.next() - eq_(feat.id(),20) - eq_(feat['gid'],20) - eq_(feat['name'],'MultiLineStringZM') - eq_(feat.geometry.to_wkt(),'MULTILINESTRING((0 0,1 1),(2 2,3 3))') - - # MultiPolygon - feat = fs.next() - eq_(feat.id(),21) - eq_(feat['gid'],21) - eq_(feat['name'],'MultiPolygon') - eq_(feat.geometry.to_wkt(),'MULTIPOLYGON(((0 0,1 1,2 2,0 0)),((0 0,1 1,2 2,0 0)))') - - # MultiPolygonZ - feat = fs.next() - eq_(feat.id(),22) - eq_(feat['gid'],22) - eq_(feat['name'],'MultiPolygonZ') - eq_(feat.geometry.to_wkt(),'MULTIPOLYGON(((0 0,1 1,2 2,0 0)),((0 0,1 1,2 2,0 0)))') - - # MultiPolygonM - feat = fs.next() - eq_(feat.id(),23) - eq_(feat['gid'],23) - eq_(feat['name'],'MultiPolygonM') - eq_(feat.geometry.to_wkt(),'MULTIPOLYGON(((0 0,1 1,2 2,0 0)),((0 0,1 1,2 2,0 0)))') - - # MultiPolygonZM - feat = fs.next() - eq_(feat.id(),24) - eq_(feat['gid'],24) - eq_(feat['name'],'MultiPolygonZM') - eq_(feat.geometry.to_wkt(),'MULTIPOLYGON(((0 0,1 1,2 2,0 0)),((0 0,1 1,2 2,0 0)))') - - def test_variable_in_subquery1(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table=''' - (select * from test where @zoom = 30 ) as tmp''', - geometry_field='geom', srid=4326, - autodetect_key_field=True) - fs = ds.featureset(variables={'zoom':30}) - for id in range(1,5): - eq_(fs.next().id(),id) - - meta = ds.describe() - eq_(meta['srid'],4326) - eq_(meta.get('key_field'),"gid") - eq_(meta['geometry_type'],None) - - # currently needs manual `geometry_table` passed - # to avoid misparse of `geometry_table` - # in the future ideally this would not need manual `geometry_table` - # https://github.com/mapnik/mapnik/issues/2718 - # currently `bogus` would be picked automatically for geometry_table - def test_broken_parsing_of_comments(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table=''' - (select * FROM test) AS data - -- select this from bogus''', - geometry_table='test') - fs = ds.featureset() - for id in range(1,5): - eq_(fs.next().id(),id) - - meta = ds.describe() - eq_(meta['srid'],4326) - eq_(meta['geometry_type'],mapnik.DataGeometryType.Collection) - - # same - # to avoid misparse of `geometry_table` - # in the future ideally this would not need manual `geometry_table` - # https://github.com/mapnik/mapnik/issues/2718 - # currently nothing would be picked automatically for geometry_table - def test_broken_parsing_of_comments(): - ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table=''' - (select * FROM test) AS data - -- select this from bogus.''', - geometry_table='test') - fs = ds.featureset() - for id in range(1,5): - eq_(fs.next().id(),id) - - meta = ds.describe() - eq_(meta['srid'],4326) - eq_(meta['geometry_type'],mapnik.DataGeometryType.Collection) - - - atexit.register(postgis_takedown) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/projection_test.py b/tests/python_tests/projection_test.py deleted file mode 100644 index a7bdc1455..000000000 --- a/tests/python_tests/projection_test.py +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_,assert_almost_equal - -import mapnik -import math -from utilities import run_all, assert_box2d_almost_equal - -# Tests that exercise map projections. - -def test_normalizing_definition(): - p = mapnik.Projection('+init=epsg:4326') - expanded = p.expanded() - eq_('+proj=longlat' in expanded,True) - - -# Trac Ticket #128 -def test_wgs84_inverse_forward(): - p = mapnik.Projection('+init=epsg:4326') - - c = mapnik.Coord(3.01331418311, 43.3333092669) - e = mapnik.Box2d(-122.54345245, 45.12312553, 68.2335581353, 48.231231233) - - # It appears that the y component changes very slightly, is this OK? - # so we test for 'almost equal float values' - - assert_almost_equal(p.inverse(c).y, c.y) - assert_almost_equal(p.inverse(c).x, c.x) - - assert_almost_equal(p.forward(c).y, c.y) - assert_almost_equal(p.forward(c).x, c.x) - - assert_almost_equal(p.inverse(e).center().y, e.center().y) - assert_almost_equal(p.inverse(e).center().x, e.center().x) - - assert_almost_equal(p.forward(e).center().y, e.center().y) - assert_almost_equal(p.forward(e).center().x, e.center().x) - - assert_almost_equal(c.inverse(p).y, c.y) - assert_almost_equal(c.inverse(p).x, c.x) - - assert_almost_equal(c.forward(p).y, c.y) - assert_almost_equal(c.forward(p).x, c.x) - - assert_almost_equal(e.inverse(p).center().y, e.center().y) - assert_almost_equal(e.inverse(p).center().x, e.center().x) - - assert_almost_equal(e.forward(p).center().y, e.center().y) - assert_almost_equal(e.forward(p).center().x, e.center().x) - -def wgs2merc(lon,lat): - x = lon * 20037508.34 / 180; - y = math.log(math.tan((90 + lat) * math.pi / 360)) / (math.pi / 180); - y = y * 20037508.34 / 180; - return [x,y]; - -def merc2wgs(x,y): - x = (x / 20037508.34) * 180; - y = (y / 20037508.34) * 180; - y = 180 / math.pi * (2 * math.atan(math.exp(y * math.pi/180)) - math.pi/2); - if x > 180: x = 180; - if x < -180: x = -180; - if y > 85.0511: y = 85.0511; - if y < -85.0511: y = -85.0511; - return [x,y] - -#echo -109 37 | cs2cs -f "%.10f" +init=epsg:4326 +to +init=epsg:3857 -#-12133824.4964668211 4439106.7872505859 0.0000000000 - -## todo -# benchmarks -# better well known detection -# better srs matching with strip/trim -# python copy to avoid crash - -def test_proj_transform_between_init_and_literal(): - one = mapnik.Projection('+init=epsg:4326') - two = mapnik.Projection('+init=epsg:3857') - tr1 = mapnik.ProjTransform(one,two) - tr1b = mapnik.ProjTransform(two,one) - wgs84 = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' - merc = '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over' - src = mapnik.Projection(wgs84) - dest = mapnik.Projection(merc) - tr2 = mapnik.ProjTransform(src,dest) - tr2b = mapnik.ProjTransform(dest,src) - for x in xrange(-180,180,10): - for y in xrange(-60,60,10): - coord = mapnik.Coord(x,y) - merc_coord1 = tr1.forward(coord) - merc_coord2 = tr1b.backward(coord) - merc_coord3 = tr2.forward(coord) - merc_coord4 = tr2b.backward(coord) - eq_(math.fabs(merc_coord1.x - merc_coord1.x) < 1,True) - eq_(math.fabs(merc_coord1.x - merc_coord2.x) < 1,True) - eq_(math.fabs(merc_coord1.x - merc_coord3.x) < 1,True) - eq_(math.fabs(merc_coord1.x - merc_coord4.x) < 1,True) - eq_(math.fabs(merc_coord1.y - merc_coord1.y) < 1,True) - eq_(math.fabs(merc_coord1.y - merc_coord2.y) < 1,True) - eq_(math.fabs(merc_coord1.y - merc_coord3.y) < 1,True) - eq_(math.fabs(merc_coord1.y - merc_coord4.y) < 1,True) - lon_lat_coord1 = tr1.backward(merc_coord1) - lon_lat_coord2 = tr1b.forward(merc_coord2) - lon_lat_coord3 = tr2.backward(merc_coord3) - lon_lat_coord4 = tr2b.forward(merc_coord4) - eq_(math.fabs(coord.x - lon_lat_coord1.x) < 1,True) - eq_(math.fabs(coord.x - lon_lat_coord2.x) < 1,True) - eq_(math.fabs(coord.x - lon_lat_coord3.x) < 1,True) - eq_(math.fabs(coord.x - lon_lat_coord4.x) < 1,True) - eq_(math.fabs(coord.y - lon_lat_coord1.y) < 1,True) - eq_(math.fabs(coord.y - lon_lat_coord2.y) < 1,True) - eq_(math.fabs(coord.y - lon_lat_coord3.y) < 1,True) - eq_(math.fabs(coord.y - lon_lat_coord4.y) < 1,True) - - -# Github Issue #2648 -def test_proj_antimeridian_bbox(): - # this is logic from feature_style_processor::prepare_layer() - PROJ_ENVELOPE_POINTS = 20 # include/mapnik/config.hpp - - prjGeog = mapnik.Projection('+init=epsg:4326') - prjProj = mapnik.Projection('+init=epsg:2193') - prj_trans_fwd = mapnik.ProjTransform(prjProj, prjGeog) - prj_trans_rev = mapnik.ProjTransform(prjGeog, prjProj) - - # bad = mapnik.Box2d(-177.31453250437079, -62.33374815225163, 178.02778363316355, -24.584597490955804) - better = mapnik.Box2d(-180.0, -62.33374815225163, 180.0, -24.584597490955804) - - buffered_query_ext = mapnik.Box2d(274000, 3087000, 3327000, 7173000) - fwd_ext = prj_trans_fwd.forward(buffered_query_ext, PROJ_ENVELOPE_POINTS) - assert_box2d_almost_equal(fwd_ext, better) - - # check the same logic works for .backward() - ext = mapnik.Box2d(274000, 3087000, 3327000, 7173000) - rev_ext = prj_trans_rev.backward(ext, PROJ_ENVELOPE_POINTS) - assert_box2d_almost_equal(rev_ext, better) - - # checks for not being snapped (ie. not antimeridian) - normal = mapnik.Box2d(148.766759749,-60.1222810238,159.95484893,-24.9771195151) - buffered_query_ext = mapnik.Box2d(274000, 3087000, 276000, 7173000) - fwd_ext = prj_trans_fwd.forward(buffered_query_ext, PROJ_ENVELOPE_POINTS) - assert_box2d_almost_equal(fwd_ext, normal) - - # check the same logic works for .backward() - ext = mapnik.Box2d(274000, 3087000, 276000, 7173000) - rev_ext = prj_trans_rev.backward(ext, PROJ_ENVELOPE_POINTS) - assert_box2d_almost_equal(rev_ext, normal) - - -if __name__ == "__main__": - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/query_test.py b/tests/python_tests/query_test.py deleted file mode 100644 index 8da353448..000000000 --- a/tests/python_tests/query_test.py +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import os, mapnik - -from nose.tools import eq_,assert_almost_equal,raises -from utilities import execution_path, run_all - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_query_init(): - bbox = (-180, -90, 180, 90) - query = mapnik.Query(mapnik.Box2d(*bbox)) - r = query.resolution - assert_almost_equal(r[0], 1.0, places=7) - assert_almost_equal(r[1], 1.0, places=7) - # https://github.com/mapnik/mapnik/issues/1762 - eq_(query.property_names,[]) - query.add_property_name('migurski') - eq_(query.property_names,['migurski']) - -# Converting *from* tuples *to* resolutions is not yet supported -@raises(TypeError) -def test_query_resolution(): - bbox = (-180, -90, 180, 90) - init_res = (4.5, 6.7) - query = mapnik.Query(mapnik.Box2d(*bbox), init_res) - r = query.resolution - assert_almost_equal(r[0], init_res[0], places=7) - assert_almost_equal(r[1], init_res[1], places=7) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/query_tolerance_test.py b/tests/python_tests/query_tolerance_test.py deleted file mode 100644 index 97c1b3e2c..000000000 --- a/tests/python_tests/query_tolerance_test.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_ -from utilities import execution_path, run_all -import os, mapnik - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -if 'shape' in mapnik.DatasourceCache.plugin_names(): - def test_query_tolerance(): - srs = '+init=epsg:4326' - lyr = mapnik.Layer('test') - ds = mapnik.Shapefile(file='../data/shp/arrows.shp') - lyr.datasource = ds - lyr.srs = srs - _width = 256 - _map = mapnik.Map(_width,_width, srs) - _map.layers.append(lyr) - # zoom determines tolerance - _map.zoom_all() - _map_env = _map.envelope() - tol = (_map_env.maxx - _map_env.minx) / _width * 3 - # 0.046875 for arrows.shp and zoom_all - eq_(tol,0.046875) - # check point really exists - x, y = 2.0, 4.0 - features = _map.query_point(0,x,y).features - eq_(len(features),1) - # check inside tolerance limit - x = 2.0 + tol * 0.9 - features = _map.query_point(0,x,y).features - eq_(len(features),1) - # check outside tolerance limit - x = 2.0 + tol * 1.1 - features = _map.query_point(0,x,y).features - eq_(len(features),0) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/raster_colorizer_test.py b/tests/python_tests/raster_colorizer_test.py deleted file mode 100644 index 6fb0102e2..000000000 --- a/tests/python_tests/raster_colorizer_test.py +++ /dev/null @@ -1,90 +0,0 @@ -#coding=utf8 -import os -import mapnik -from utilities import execution_path, run_all -from nose.tools import eq_ - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -#test discrete colorizer mode -def test_get_color_discrete(): - #setup - colorizer = mapnik.RasterColorizer(); - colorizer.default_color = mapnik.Color(0,0,0,0); - colorizer.default_mode = mapnik.COLORIZER_DISCRETE; - - colorizer.add_stop(10, mapnik.Color(100,100,100,100)); - colorizer.add_stop(20, mapnik.Color(200,200,200,200)); - - #should be default colour - eq_(colorizer.get_color(-50), mapnik.Color(0,0,0,0)); - eq_(colorizer.get_color(0), mapnik.Color(0,0,0,0)); - - #now in stop 1 - eq_(colorizer.get_color(10), mapnik.Color(100,100,100,100)); - eq_(colorizer.get_color(19), mapnik.Color(100,100,100,100)); - - #now in stop 2 - eq_(colorizer.get_color(20), mapnik.Color(200,200,200,200)); - eq_(colorizer.get_color(1000), mapnik.Color(200,200,200,200)); - -#test exact colorizer mode -def test_get_color_exact(): - #setup - colorizer = mapnik.RasterColorizer(); - colorizer.default_color = mapnik.Color(0,0,0,0); - colorizer.default_mode = mapnik.COLORIZER_EXACT; - - colorizer.add_stop(10, mapnik.Color(100,100,100,100)); - colorizer.add_stop(20, mapnik.Color(200,200,200,200)); - - #should be default colour - eq_(colorizer.get_color(-50), mapnik.Color(0,0,0,0)); - eq_(colorizer.get_color(11), mapnik.Color(0,0,0,0)); - eq_(colorizer.get_color(20.001), mapnik.Color(0,0,0,0)); - - #should be stop 1 - eq_(colorizer.get_color(10), mapnik.Color(100,100,100,100)); - - #should be stop 2 - eq_(colorizer.get_color(20), mapnik.Color(200,200,200,200)); - -#test linear colorizer mode -def test_get_color_linear(): - #setup - colorizer = mapnik.RasterColorizer(); - colorizer.default_color = mapnik.Color(0,0,0,0); - colorizer.default_mode = mapnik.COLORIZER_LINEAR; - - colorizer.add_stop(10, mapnik.Color(100,100,100,100)); - colorizer.add_stop(20, mapnik.Color(200,200,200,200)); - - #should be default colour - eq_(colorizer.get_color(-50), mapnik.Color(0,0,0,0)); - eq_(colorizer.get_color(9.9), mapnik.Color(0,0,0,0)); - - #should be stop 1 - eq_(colorizer.get_color(10), mapnik.Color(100,100,100,100)); - - #should be stop 2 - eq_(colorizer.get_color(20), mapnik.Color(200,200,200,200)); - - #half way between stops 1 and 2 - eq_(colorizer.get_color(15), mapnik.Color(150,150,150,150)); - - #after stop 2 - eq_(colorizer.get_color(100), mapnik.Color(200,200,200,200)); - -def test_stop_label(): - stop = mapnik.ColorizerStop(1, mapnik.COLORIZER_LINEAR, mapnik.Color('red')) - assert not stop.label - label = u"32º C".encode('utf8') - stop.label = label - assert stop.label == label, stop.label - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/raster_symbolizer_test.py b/tests/python_tests/raster_symbolizer_test.py deleted file mode 100644 index e105dac73..000000000 --- a/tests/python_tests/raster_symbolizer_test.py +++ /dev/null @@ -1,217 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_ -from utilities import execution_path, run_all, get_unique_colors - -import os, mapnik - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - - -def test_dataraster_coloring(): - srs = '+init=epsg:32630' - lyr = mapnik.Layer('dataraster') - if 'gdal' in mapnik.DatasourceCache.plugin_names(): - lyr.datasource = mapnik.Gdal( - file = '../data/raster/dataraster.tif', - band = 1, - ) - lyr.srs = srs - _map = mapnik.Map(256,256, srs) - style = mapnik.Style() - rule = mapnik.Rule() - sym = mapnik.RasterSymbolizer() - # Assigning a colorizer to the RasterSymbolizer tells the later - # that it should use it to colorize the raw data raster - colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_DISCRETE, mapnik.Color("transparent")) - - for value, color in [ - ( 0, "#0044cc"), - ( 10, "#00cc00"), - ( 20, "#ffff00"), - ( 30, "#ff7f00"), - ( 40, "#ff0000"), - ( 50, "#ff007f"), - ( 60, "#ff00ff"), - ( 70, "#cc00cc"), - ( 80, "#990099"), - ( 90, "#660066"), - ( 200, "transparent"), - ]: - colorizer.add_stop(value, mapnik.Color(color)) - sym.colorizer = colorizer; - rule.symbols.append(sym) - style.rules.append(rule) - _map.append_style('foo', style) - lyr.styles.append('foo') - _map.layers.append(lyr) - _map.zoom_to_box(lyr.envelope()) - - im = mapnik.Image(_map.width,_map.height) - mapnik.render(_map, im) - expected_file = './images/support/dataraster_coloring.png' - actual_file = '/tmp/' + os.path.basename(expected_file) - im.save(actual_file,'png32') - if not os.path.exists(expected_file) or os.environ.get('UPDATE'): - im.save(expected_file,'png32') - actual = mapnik.Image.open(actual_file) - expected = mapnik.Image.open(expected_file) - eq_(actual.tostring('png32'),expected.tostring('png32'), 'failed comparing actual (%s) and expected (%s)' % (actual_file,expected_file)) - -def test_dataraster_query_point(): - srs = '+init=epsg:32630' - lyr = mapnik.Layer('dataraster') - if 'gdal' in mapnik.DatasourceCache.plugin_names(): - lyr.datasource = mapnik.Gdal( - file = '../data/raster/dataraster.tif', - band = 1, - ) - lyr.srs = srs - _map = mapnik.Map(256,256, srs) - _map.layers.append(lyr) - - x, y = 556113.0,4381428.0 # center of extent of raster - _map.zoom_all() - features = _map.query_point(0,x,y).features - assert len(features) == 1 - feat = features[0] - center = feat.envelope().center() - assert center.x==x and center.y==y, center - value = feat['value'] - assert value == 18.0, value - - # point inside map extent but outside raster extent - current_box = _map.envelope() - current_box.expand_to_include(-427417,4477517) - _map.zoom_to_box(current_box) - features = _map.query_point(0,-427417,4477517).features - assert len(features) == 0 - - # point inside raster extent with nodata - features = _map.query_point(0,126850,4596050).features - assert len(features) == 0 - -def test_load_save_map(): - map = mapnik.Map(256,256) - in_map = "../visual_tests/styles/raster_symbolizer.xml" - try: - mapnik.load_map(map, in_map) - - out_map = mapnik.save_map_to_string(map) - assert 'RasterSymbolizer' in out_map - assert 'RasterColorizer' in out_map - assert 'stop' in out_map - except RuntimeError, e: - # only test datasources that we have installed - if not 'Could not create datasource' in str(e): - raise RuntimeError(str(e)) - -def test_raster_with_alpha_blends_correctly_with_background(): - WIDTH = 500 - HEIGHT = 500 - - map = mapnik.Map(WIDTH, HEIGHT) - WHITE = mapnik.Color(255, 255, 255) - map.background = WHITE - - style = mapnik.Style() - rule = mapnik.Rule() - symbolizer = mapnik.RasterSymbolizer() - symbolizer.scaling = mapnik.scaling_method.BILINEAR - - rule.symbols.append(symbolizer) - style.rules.append(rule) - - map.append_style('raster_style', style) - - map_layer = mapnik.Layer('test_layer') - filepath = '../data/raster/white-alpha.png' - if 'gdal' in mapnik.DatasourceCache.plugin_names(): - map_layer.datasource = mapnik.Gdal(file=filepath) - map_layer.styles.append('raster_style') - map.layers.append(map_layer) - - map.zoom_all() - - mim = mapnik.Image(WIDTH, HEIGHT) - - mapnik.render(map, mim) - mim.tostring() - # All white is expected - eq_(get_unique_colors(mim),['rgba(254,254,254,255)']) - -def test_raster_warping(): - lyrSrs = "+init=epsg:32630" - mapSrs = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' - lyr = mapnik.Layer('dataraster', lyrSrs) - if 'gdal' in mapnik.DatasourceCache.plugin_names(): - lyr.datasource = mapnik.Gdal( - file = '../data/raster/dataraster.tif', - band = 1, - ) - sym = mapnik.RasterSymbolizer() - sym.colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_DISCRETE, mapnik.Color(255,255,0)) - rule = mapnik.Rule() - rule.symbols.append(sym) - style = mapnik.Style() - style.rules.append(rule) - _map = mapnik.Map(256,256, mapSrs) - _map.append_style('foo', style) - lyr.styles.append('foo') - _map.layers.append(lyr) - map_proj = mapnik.Projection(mapSrs) - layer_proj = mapnik.Projection(lyrSrs) - prj_trans = mapnik.ProjTransform(map_proj, - layer_proj) - _map.zoom_to_box(prj_trans.backward(lyr.envelope())) - - im = mapnik.Image(_map.width,_map.height) - mapnik.render(_map, im) - expected_file = './images/support/raster_warping.png' - actual_file = '/tmp/' + os.path.basename(expected_file) - im.save(actual_file,'png32') - if not os.path.exists(expected_file) or os.environ.get('UPDATE'): - im.save(expected_file,'png32') - actual = mapnik.Image.open(actual_file) - expected = mapnik.Image.open(expected_file) - eq_(actual.tostring('png32'),expected.tostring('png32'), 'failed comparing actual (%s) and expected (%s)' % (actual_file,expected_file)) - -def test_raster_warping_does_not_overclip_source(): - lyrSrs = "+init=epsg:32630" - mapSrs = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' - lyr = mapnik.Layer('dataraster', lyrSrs) - if 'gdal' in mapnik.DatasourceCache.plugin_names(): - lyr.datasource = mapnik.Gdal( - file = '../data/raster/dataraster.tif', - band = 1, - ) - sym = mapnik.RasterSymbolizer() - sym.colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_DISCRETE, mapnik.Color(255,255,0)) - rule = mapnik.Rule() - rule.symbols.append(sym) - style = mapnik.Style() - style.rules.append(rule) - _map = mapnik.Map(256,256, mapSrs) - _map.background=mapnik.Color('white') - _map.append_style('foo', style) - lyr.styles.append('foo') - _map.layers.append(lyr) - _map.zoom_to_box(mapnik.Box2d(3,42,4,43)) - - im = mapnik.Image(_map.width,_map.height) - mapnik.render(_map, im) - expected_file = './images/support/raster_warping_does_not_overclip_source.png' - actual_file = '/tmp/' + os.path.basename(expected_file) - im.save(actual_file,'png32') - if not os.path.exists(expected_file) or os.environ.get('UPDATE'): - im.save(expected_file,'png32') - actual = mapnik.Image.open(actual_file) - expected = mapnik.Image.open(expected_file) - eq_(actual.tostring('png32'),expected.tostring('png32'), 'failed comparing actual (%s) and expected (%s)' % (actual_file,expected_file)) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/rasterlite_test.py b/tests/python_tests/rasterlite_test.py deleted file mode 100644 index b15b1574d..000000000 --- a/tests/python_tests/rasterlite_test.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_,assert_almost_equal -from utilities import execution_path, run_all - -import os, mapnik - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - - -if 'rasterlite' in mapnik.DatasourceCache.plugin_names(): - - def test_rasterlite(): - ds = mapnik.Rasterlite( - file = '../data/rasterlite/globe.sqlite', - table = 'globe' - ) - e = ds.envelope() - - assert_almost_equal(e.minx,-180, places=5) - assert_almost_equal(e.miny, -90, places=5) - assert_almost_equal(e.maxx, 180, places=5) - assert_almost_equal(e.maxy, 90, places=5) - eq_(len(ds.fields()),0) - query = mapnik.Query(ds.envelope()) - for fld in ds.fields(): - query.add_property_name(fld) - fs = ds.features(query) - feat = fs.next() - eq_(feat.id(),1) - eq_(feat.attributes,{}) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/render_grid_test.py b/tests/python_tests/render_grid_test.py deleted file mode 100644 index 21854f50c..000000000 --- a/tests/python_tests/render_grid_test.py +++ /dev/null @@ -1,355 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from nose.tools import eq_,raises -from utilities import execution_path, run_all -import os, mapnik - -try: - import json -except ImportError: - import simplejson as json - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -if mapnik.has_grid_renderer(): - def show_grids(name,g1,g2): - g1_file = '/tmp/mapnik-%s-actual.json' % name - open(g1_file,'w').write(json.dumps(g1,sort_keys=True)) - g2_file = '/tmp/mapnik-%s-expected.json' % name - open(g2_file,'w').write(json.dumps(g2,sort_keys=True)) - val = 'JSON does not match ->\n' - if g1['grid'] != g2['grid']: - val += ' X grid does not match\n' - else: - val += ' ✓ grid matches\n' - if g1['data'].keys() != g2['data'].keys(): - val += ' X data does not match\n' - else: - val += ' ✓ data matches\n' - if g1['keys'] != g2['keys']: - val += ' X keys do not\n' - else: - val += ' ✓ keys match\n' - val += '\n\t%s\n\t%s' % (g1_file,g2_file) - return val - - def show_grids2(name,g1,g2): - g2_expected = '../data/grids/mapnik-%s-actual.json' % name - if not os.path.exists(g2_expected): - # create test fixture based on actual results - open(g2_expected,'a+').write(json.dumps(g1,sort_keys=True)) - return - g1_file = '/tmp/mapnik-%s-actual.json' % name - open(g1_file,'w').write(json.dumps(g1,sort_keys=True)) - val = 'JSON does not match ->\n' - if g1['grid'] != g2['grid']: - val += ' X grid does not match\n' - else: - val += ' ✓ grid matches\n' - if g1['data'].keys() != g2['data'].keys(): - val += ' X data does not match\n' - else: - val += ' ✓ data matches\n' - if g1['keys'] != g2['keys']: - val += ' X keys do not\n' - else: - val += ' ✓ keys match\n' - val += '\n\t%s\n\t%s' % (g1_file,g2_expected) - return val - - # previous rendering using agg ellipse directly - grid_correct_new = {"data": {"North East": {"Name": "North East"}, "North West": {"Name": "North West"}, "South East": {"Name": "South East"}, "South West": {"Name": "South West"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $$ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "North West", "North East", "South West", "South East"]} - - # newer rendering using svg - grid_correct_new2 = {"data": {"North East": {"Name": "North East"}, "North West": {"Name": "North West"}, "South East": {"Name": "South East"}, "South West": {"Name": "South West"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $$ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "North West", "North East", "South West", "South East"]} - - grid_correct_new3 = {"data": {"North East": {"Name": "North East"}, "North West": {"Name": "North West"}, "South East": {"Name": "South East"}, "South West": {"Name": "South West"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "North West", "North East", "South West", "South East"]} - - def resolve(grid,row,col): - """ Resolve the attributes for a given pixel in a grid. - """ - row = grid['grid'][row] - utf_val = row[col] - #http://docs.python.org/library/functions.html#ord - codepoint = ord(utf_val) - if (codepoint >= 93): - codepoint-=1 - if (codepoint >= 35): - codepoint-=1 - codepoint -= 32 - key = grid['keys'][codepoint] - return grid['data'].get(key) - - - def create_grid_map(width,height,sym): - ds = mapnik.MemoryDatasource() - context = mapnik.Context() - context.push('Name') - f = mapnik.Feature(context,1) - f['Name'] = 'South East' - f.geometry = mapnik.Geometry.from_wkt('POINT (143.10 -38.60)') - ds.add_feature(f) - - f = mapnik.Feature(context,2) - f['Name'] = 'South West' - f.geometry = mapnik.Geometry.from_wkt('POINT (142.48 -38.60)') - ds.add_feature(f) - - f = mapnik.Feature(context,3) - f['Name'] = 'North West' - f.geometry = mapnik.Geometry.from_wkt('POINT (142.48 -38.38)') - ds.add_feature(f) - - f = mapnik.Feature(context,4) - f['Name'] = 'North East' - f.geometry = mapnik.Geometry.from_wkt('POINT (143.10 -38.38)') - ds.add_feature(f) - s = mapnik.Style() - r = mapnik.Rule() - sym.allow_overlap = True - r.symbols.append(sym) - s.rules.append(r) - lyr = mapnik.Layer('Places') - lyr.datasource = ds - lyr.styles.append('places_labels') - m = mapnik.Map(width,height) - m.append_style('places_labels',s) - m.layers.append(lyr) - return m - - - def test_render_grid(): - """ test render_grid method""" - width,height = 256,256 - sym = mapnik.MarkersSymbolizer() - sym.width = mapnik.Expression('10') - sym.height = mapnik.Expression('10') - m = create_grid_map(width,height,sym) - ul_lonlat = mapnik.Coord(142.30,-38.20) - lr_lonlat = mapnik.Coord(143.40,-38.80) - m.zoom_to_box(mapnik.Box2d(ul_lonlat,lr_lonlat)) - - # new method - grid = mapnik.Grid(m.width,m.height,key='Name') - mapnik.render_layer(m,grid,layer=0,fields=['Name']) - utf1 = grid.encode('utf',resolution=4) - eq_(utf1,grid_correct_new3,show_grids('new-markers',utf1,grid_correct_new3)) - - # check a full view is the same as a full image - grid_view = grid.view(0,0,width,height) - # for kicks check at full res too - utf3 = grid.encode('utf',resolution=1) - utf4 = grid_view.encode('utf',resolution=1) - eq_(utf3['grid'],utf4['grid']) - eq_(utf3['keys'],utf4['keys']) - eq_(utf3['data'],utf4['data']) - - eq_(resolve(utf4,0,0),None) - - # resolve some center points in the - # resampled view - utf5 = grid_view.encode('utf',resolution=4) - eq_(resolve(utf5,25,10),{"Name": "North West"}) - eq_(resolve(utf5,25,46),{"Name": "North East"}) - eq_(resolve(utf5,38,10),{"Name": "South West"}) - eq_(resolve(utf5,38,46),{"Name": "South East"}) - - - grid_feat_id = {'keys': ['', '3', '4', '2', '1'], 'data': {'1': {'Name': 'South East'}, '3': {'Name': u'North West'}, '2': {'Name': 'South West'}, '4': {'Name': 'North East'}}, 'grid': [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' !! ## ', ' !!! ### ', ' !! ## ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' $$$ %% ', ' $$$ %%% ', ' $$ %% ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']} - - grid_feat_id2 = {"data": {"1": {"Name": "South East"}, "2": {"Name": "South West"}, "3": {"Name": "North West"}, "4": {"Name": "North East"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $$ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "3", "4", "2", "1"]} - - grid_feat_id3 = {"data": {"1": {"Name": "South East", "__id__": 1}, "2": {"Name": "South West", "__id__": 2}, "3": {"Name": "North West", "__id__": 3}, "4": {"Name": "North East", "__id__": 4}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "3", "4", "2", "1"]} - - def test_render_grid3(): - """ test using feature id""" - width,height = 256,256 - sym = mapnik.MarkersSymbolizer() - sym.width = mapnik.Expression('10') - sym.height = mapnik.Expression('10') - m = create_grid_map(width,height,sym) - ul_lonlat = mapnik.Coord(142.30,-38.20) - lr_lonlat = mapnik.Coord(143.40,-38.80) - m.zoom_to_box(mapnik.Box2d(ul_lonlat,lr_lonlat)) - - grid = mapnik.Grid(m.width,m.height,key='__id__') - mapnik.render_layer(m,grid,layer=0,fields=['__id__','Name']) - utf1 = grid.encode('utf',resolution=4) - eq_(utf1,grid_feat_id3,show_grids('id-markers',utf1,grid_feat_id3)) - # check a full view is the same as a full image - grid_view = grid.view(0,0,width,height) - # for kicks check at full res too - utf3 = grid.encode('utf',resolution=1) - utf4 = grid_view.encode('utf',resolution=1) - eq_(utf3['grid'],utf4['grid']) - eq_(utf3['keys'],utf4['keys']) - eq_(utf3['data'],utf4['data']) - - eq_(resolve(utf4,0,0),None) - - # resolve some center points in the - # resampled view - utf5 = grid_view.encode('utf',resolution=4) - eq_(resolve(utf5,25,10),{"Name": "North West","__id__": 3}) - eq_(resolve(utf5,25,46),{"Name": "North East","__id__": 4}) - eq_(resolve(utf5,38,10),{"Name": "South West","__id__": 2}) - eq_(resolve(utf5,38,46),{"Name": "South East","__id__": 1}) - - - def gen_grid_for_id(pixel_key): - ds = mapnik.MemoryDatasource() - context = mapnik.Context() - context.push('Name') - f = mapnik.Feature(context,pixel_key) - f['Name'] = str(pixel_key) - f.geometry = mapnik.Geometry.from_wkt('POLYGON ((0 0, 0 256, 256 256, 256 0, 0 0))') - ds.add_feature(f) - s = mapnik.Style() - r = mapnik.Rule() - symb = mapnik.PolygonSymbolizer() - r.symbols.append(symb) - s.rules.append(r) - lyr = mapnik.Layer('Places') - lyr.datasource = ds - lyr.styles.append('places_labels') - width,height = 256,256 - m = mapnik.Map(width,height) - m.append_style('places_labels',s) - m.layers.append(lyr) - m.zoom_all() - grid = mapnik.Grid(m.width,m.height,key='__id__') - mapnik.render_layer(m,grid,layer=0,fields=['__id__','Name']) - return grid - - def test_negative_id(): - grid = gen_grid_for_id(-1) - eq_(grid.get_pixel(128,128),-1) - utf1 = grid.encode('utf',resolution=4) - eq_(utf1['keys'],['-1']) - - def test_32bit_int_id(): - int32 = 2147483647 - grid = gen_grid_for_id(int32) - eq_(grid.get_pixel(128,128),int32) - utf1 = grid.encode('utf',resolution=4) - eq_(utf1['keys'],[str(int32)]) - max_neg = -(int32) - grid = gen_grid_for_id(max_neg) - eq_(grid.get_pixel(128,128),max_neg) - utf1 = grid.encode('utf',resolution=4) - eq_(utf1['keys'],[str(max_neg)]) - - def test_64bit_int_id(): - int64 = 0x7FFFFFFFFFFFFFFF - grid = gen_grid_for_id(int64) - eq_(grid.get_pixel(128,128),int64) - utf1 = grid.encode('utf',resolution=4) - eq_(utf1['keys'],[str(int64)]) - max_neg = -(int64) - grid = gen_grid_for_id(max_neg) - eq_(grid.get_pixel(128,128),max_neg) - utf1 = grid.encode('utf',resolution=4) - eq_(utf1['keys'],[str(max_neg)]) - - def test_id_zero(): - grid = gen_grid_for_id(0) - eq_(grid.get_pixel(128,128),0) - utf1 = grid.encode('utf',resolution=4) - eq_(utf1['keys'],['0']) - - line_expected = {"keys": ["", "1"], "data": {"1": {"Name": "1"}}, "grid": [" !", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", "!! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! "]} - - def test_line_rendering(): - ds = mapnik.MemoryDatasource() - context = mapnik.Context() - context.push('Name') - pixel_key = 1 - f = mapnik.Feature(context,pixel_key) - f['Name'] = str(pixel_key) - f.geometry = mapnik.Geometry.from_wkt('LINESTRING (30 10, 10 30, 40 40)') - ds.add_feature(f) - s = mapnik.Style() - r = mapnik.Rule() - symb = mapnik.LineSymbolizer() - r.symbols.append(symb) - s.rules.append(r) - lyr = mapnik.Layer('Places') - lyr.datasource = ds - lyr.styles.append('places_labels') - width,height = 256,256 - m = mapnik.Map(width,height) - m.append_style('places_labels',s) - m.layers.append(lyr) - m.zoom_all() - #mapnik.render_to_file(m,'test.png') - grid = mapnik.Grid(m.width,m.height,key='__id__') - mapnik.render_layer(m,grid,layer=0,fields=['Name']) - utf1 = grid.encode() - eq_(utf1,line_expected,show_grids('line',utf1,line_expected)) - - point_expected = {"data": {"1": {"Name": "South East"}, "2": {"Name": "South West"}, "3": {"Name": "North West"}, "4": {"Name": "North East"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !!!! #### ", " !!!! #### ", " !!!! #### ", " !!!! #### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$$$ %%%% ", " $$$$ %%%% ", " $$$$ %%%% ", " $$$$ %%%% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "3", "4", "2", "1"]} - - def test_point_symbolizer_grid(): - width,height = 256,256 - sym = mapnik.PointSymbolizer() - sym.file = '../data/images/dummy.png' - m = create_grid_map(width,height,sym) - ul_lonlat = mapnik.Coord(142.30,-38.20) - lr_lonlat = mapnik.Coord(143.40,-38.80) - m.zoom_to_box(mapnik.Box2d(ul_lonlat,lr_lonlat)) - grid = mapnik.Grid(m.width,m.height) - mapnik.render_layer(m,grid,layer=0,fields=['Name']) - utf1 = grid.encode() - eq_(utf1,point_expected,show_grids('point-sym',utf1,point_expected)) - - - # should throw because this is a mis-usage - # https://github.com/mapnik/mapnik/issues/1325 - @raises(RuntimeError) - def test_render_to_grid_multiple_times(): - # create map with two layers - m = mapnik.Map(256,256) - s = mapnik.Style() - r = mapnik.Rule() - sym = mapnik.MarkersSymbolizer() - sym.allow_overlap = True - r.symbols.append(sym) - s.rules.append(r) - m.append_style('points',s) - - # NOTE: we use a csv datasource here - # because the memorydatasource fails silently for - # queries requesting fields that do not exist in the datasource - ds1 = mapnik.Datasource(**{"type":"csv","inline":''' - wkt,Name - "POINT (143.10 -38.60)",South East'''}) - lyr1 = mapnik.Layer('One') - lyr1.datasource = ds1 - lyr1.styles.append('points') - m.layers.append(lyr1) - - ds2 = mapnik.Datasource(**{"type":"csv","inline":''' - wkt,Value - "POINT (142.48 -38.60)",South West'''}) - lyr2 = mapnik.Layer('Two') - lyr2.datasource = ds2 - lyr2.styles.append('points') - m.layers.append(lyr2) - - ul_lonlat = mapnik.Coord(142.30,-38.20) - lr_lonlat = mapnik.Coord(143.40,-38.80) - m.zoom_to_box(mapnik.Box2d(ul_lonlat,lr_lonlat)) - grid = mapnik.Grid(m.width,m.height) - mapnik.render_layer(m,grid,layer=0,fields=['Name']) - # should throw right here since Name will be a property now on the `grid` object - # and it is not found on the second layer - mapnik.render_layer(m,grid,layer=1,fields=['Value']) - grid.encode() - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/render_test.py b/tests/python_tests/render_test.py deleted file mode 100644 index df2713464..000000000 --- a/tests/python_tests/render_test.py +++ /dev/null @@ -1,241 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from nose.tools import eq_,raises -import tempfile -import os, mapnik -from utilities import execution_path, run_all - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -def test_simplest_render(): - m = mapnik.Map(256, 256) - im = mapnik.Image(m.width, m.height) - eq_(im.painted(),False) - eq_(im.is_solid(),True) - mapnik.render(m, im) - eq_(im.painted(),False) - eq_(im.is_solid(),True) - s = im.tostring() - eq_(s, 256 * 256 * '\x00\x00\x00\x00') - -def test_render_image_to_string(): - im = mapnik.Image(256, 256) - im.fill(mapnik.Color('black')) - eq_(im.painted(),False) - eq_(im.is_solid(),True) - s = im.tostring() - eq_(s, 256 * 256 * '\x00\x00\x00\xff') - -def test_non_solid_image(): - im = mapnik.Image(256, 256) - im.fill(mapnik.Color('black')) - eq_(im.painted(),False) - eq_(im.is_solid(),True) - # set one pixel to a different color - im.set_pixel(0,0,mapnik.Color('white')) - eq_(im.painted(),False) - eq_(im.is_solid(),False) - -def test_non_solid_image_view(): - im = mapnik.Image(256, 256) - im.fill(mapnik.Color('black')) - view = im.view(0,0,256,256) - eq_(view.is_solid(),True) - # set one pixel to a different color - im.set_pixel(0,0,mapnik.Color('white')) - eq_(im.is_solid(),False) - # view, since it is the exact dimensions of the image - # should also be non-solid - eq_(view.is_solid(),False) - # but not a view that excludes the single diff pixel - view2 = im.view(1,1,256,256) - eq_(view2.is_solid(),True) - -def test_setting_alpha(): - w,h = 256,256 - im1 = mapnik.Image(w,h) - # white, half transparent - c1 = mapnik.Color('rgba(255,255,255,.5)') - im1.fill(c1) - eq_(im1.painted(),False) - eq_(im1.is_solid(),True) - # pure white - im2 = mapnik.Image(w,h) - c2 = mapnik.Color('rgba(255,255,255,1)') - im2.fill(c2) - im2.set_alpha(c1.a/255.0) - eq_(im2.painted(),False) - eq_(im2.is_solid(),True) - eq_(len(im1.tostring('png32')), len(im2.tostring('png32'))) - -def test_render_image_to_file(): - im = mapnik.Image(256, 256) - im.fill(mapnik.Color('black')) - if mapnik.has_jpeg(): - im.save('test.jpg') - im.save('test.png', 'png') - if os.path.exists('test.jpg'): - os.remove('test.jpg') - else: - return False - if os.path.exists('test.png'): - os.remove('test.png') - else: - return False - -def get_paired_images(w,h,mapfile): - tmp_map = 'tmp_map.xml' - m = mapnik.Map(w,h) - mapnik.load_map(m,mapfile) - im = mapnik.Image(w,h) - m.zoom_all() - mapnik.render(m,im) - mapnik.save_map(m,tmp_map) - m2 = mapnik.Map(w,h) - mapnik.load_map(m2,tmp_map) - im2 = mapnik.Image(w,h) - m2.zoom_all() - mapnik.render(m2,im2) - os.remove(tmp_map) - return im,im2 - -def test_render_from_serialization(): - try: - im,im2 = get_paired_images(100,100,'../data/good_maps/building_symbolizer.xml') - eq_(im.tostring('png32'),im2.tostring('png32')) - - im,im2 = get_paired_images(100,100,'../data/good_maps/polygon_symbolizer.xml') - eq_(im.tostring('png32'),im2.tostring('png32')) - except RuntimeError, e: - # only test datasources that we have installed - if not 'Could not create datasource' in str(e): - raise RuntimeError(e) - -def test_render_points(): - if not mapnik.has_cairo(): return - # create and populate point datasource (WGS84 lat-lon coordinates) - ds = mapnik.MemoryDatasource() - context = mapnik.Context() - context.push('Name') - f = mapnik.Feature(context,1) - f['Name'] = 'Westernmost Point' - f.geometry = mapnik.Geometry.from_wkt('POINT (142.48 -38.38)') - ds.add_feature(f) - - f = mapnik.Feature(context,2) - f['Name'] = 'Southernmost Point' - f.geometry = mapnik.Geometry.from_wkt('POINT (143.10 -38.60)') - ds.add_feature(f) - - # create layer/rule/style - s = mapnik.Style() - r = mapnik.Rule() - symb = mapnik.PointSymbolizer() - symb.allow_overlap = True - r.symbols.append(symb) - s.rules.append(r) - lyr = mapnik.Layer('Places','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs') - lyr.datasource = ds - lyr.styles.append('places_labels') - # latlon bounding box corners - ul_lonlat = mapnik.Coord(142.30,-38.20) - lr_lonlat = mapnik.Coord(143.40,-38.80) - # render for different projections - projs = { - 'google': '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over', - 'latlon': '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs', - 'merc': '+proj=merc +datum=WGS84 +k=1.0 +units=m +over +no_defs', - 'utm': '+proj=utm +zone=54 +datum=WGS84' - } - for projdescr in projs.iterkeys(): - m = mapnik.Map(1000, 500, projs[projdescr]) - m.append_style('places_labels',s) - m.layers.append(lyr) - dest_proj = mapnik.Projection(projs[projdescr]) - src_proj = mapnik.Projection('+init=epsg:4326') - tr = mapnik.ProjTransform(src_proj,dest_proj) - m.zoom_to_box(tr.forward(mapnik.Box2d(ul_lonlat,lr_lonlat))) - # Render to SVG so that it can be checked how many points are there with string comparison - svg_file = os.path.join(tempfile.gettempdir(), 'mapnik-render-points-%s.svg' % projdescr) - mapnik.render_to_file(m, svg_file) - num_points_present = len(ds.all_features()) - svg = open(svg_file,'r').read() - num_points_rendered = svg.count('=1,True) - del ds - - eq_(os.path.exists(index),True) - os.unlink(index) - - def test_geometry_round_trip(): - test_db = '/tmp/mapnik-sqlite-point.db' - ogr_metadata = True - - # create test db - conn = sqlite3.connect(test_db) - cur = conn.cursor() - cur.execute(''' - CREATE TABLE IF NOT EXISTS point_table - (id INTEGER PRIMARY KEY AUTOINCREMENT, geometry BLOB, name varchar) - ''') - # optional: but nice if we want to read with ogr - if ogr_metadata: - cur.execute('''CREATE TABLE IF NOT EXISTS geometry_columns ( - f_table_name VARCHAR, - f_geometry_column VARCHAR, - geometry_type INTEGER, - coord_dimension INTEGER, - srid INTEGER, - geometry_format VARCHAR )''') - cur.execute('''INSERT INTO geometry_columns - (f_table_name, f_geometry_column, geometry_format, - geometry_type, coord_dimension, srid) VALUES - ('point_table','geometry','WKB', 1, 1, 4326)''') - conn.commit() - cur.close() - - # add a point as wkb (using mapnik) to match how an ogr created db looks - x = -122 # longitude - y = 48 # latitude - wkt = 'POINT(%s %s)' % (x,y) - # little endian wkb (mapnik will auto-detect and ready either little or big endian (XDR)) - wkb = mapnik.Geometry.from_wkt(wkt).to_wkb(mapnik.wkbByteOrder.NDR) - values = (None,sqlite3.Binary(wkb),"test point") - cur = conn.cursor() - cur.execute('''INSERT into "point_table" (id,geometry,name) values (?,?,?)''',values) - conn.commit() - cur.close() - conn.close() - - def make_wkb_point(x,y): - import struct - byteorder = 1; # little endian - endianess = '' - if byteorder == 1: - endianess = '<' - else: - endianess = '>' - geom_type = 1; # for a point - return struct.pack('%sbldd' % endianess, byteorder, geom_type, x, y) - - # confirm the wkb matches a manually formed wkb - wkb2 = make_wkb_point(x,y) - eq_(wkb,wkb2) - - # ensure we can read this data back out properly with mapnik - ds = mapnik.Datasource(**{'type':'sqlite','file':test_db, 'table':'point_table'}) - fs = ds.featureset() - feat = fs.next() - eq_(feat.id(),1) - eq_(feat['name'],'test point') - geom = feat.geometry; - eq_(geom.to_wkt(),'POINT(-122 48)') - del ds - - # ensure it matches data read with just sqlite - conn = sqlite3.connect(test_db) - cur = conn.cursor() - cur.execute('''SELECT * from point_table''') - conn.commit() - result = cur.fetchone() - cur.close() - feat_id = result[0] - eq_(feat_id,1) - name = result[2] - eq_(name,'test point') - geom_wkb_blob = result[1] - eq_(str(geom_wkb_blob),geom.to_wkb(mapnik.wkbByteOrder.NDR)) - new_geom = mapnik.Geometry.from_wkb(str(geom_wkb_blob)) - eq_(new_geom.to_wkt(),geom.to_wkt()) - conn.close() - os.unlink(test_db) - -if __name__ == "__main__": - setup() - returncode = run_all(eval(x) for x in dir() if x.startswith("test_")) - exit(returncode) diff --git a/tests/python_tests/sqlite_test.py b/tests/python_tests/sqlite_test.py deleted file mode 100644 index 204df6538..000000000 --- a/tests/python_tests/sqlite_test.py +++ /dev/null @@ -1,459 +0,0 @@ -#!/usr/bin/env python - -from nose.tools import eq_, raises -from utilities import execution_path, run_all -import os -import mapnik - - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -if 'sqlite' in mapnik.DatasourceCache.plugin_names(): - - def test_attachdb_with_relative_file(): - # The point table and index is in the qgis_spatiallite.sqlite - # database. If either is not found, then this fails - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - table='point', - attachdb='scratch@qgis_spatiallite.sqlite' - ) - fs = ds.featureset() - feature = fs.next() - eq_(feature['pkuid'],1) - - def test_attachdb_with_multiple_files(): - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - table='attachedtest', - attachdb='scratch1@:memory:,scratch2@:memory:', - initdb=''' - create table scratch1.attachedtest (the_geom); - create virtual table scratch2.idx_attachedtest_the_geom using rtree(pkid,xmin,xmax,ymin,ymax); - insert into scratch2.idx_attachedtest_the_geom values (1,-7799225.5,-7778571.0,1393264.125,1417719.375); - ''' - ) - fs = ds.featureset() - feature = None - try : - feature = fs.next() - except StopIteration: - pass - # the above should not throw but will result in no features - eq_(feature,None) - - def test_attachdb_with_absolute_file(): - # The point table and index is in the qgis_spatiallite.sqlite - # database. If either is not found, then this fails - ds = mapnik.SQLite(file=os.getcwd() + '/../data/sqlite/world.sqlite', - table='point', - attachdb='scratch@qgis_spatiallite.sqlite' - ) - fs = ds.featureset() - feature = fs.next() - eq_(feature['pkuid'],1) - - def test_attachdb_with_index(): - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - table='attachedtest', - attachdb='scratch@:memory:', - initdb=''' - create table scratch.attachedtest (the_geom); - create virtual table scratch.idx_attachedtest_the_geom using rtree(pkid,xmin,xmax,ymin,ymax); - insert into scratch.idx_attachedtest_the_geom values (1,-7799225.5,-7778571.0,1393264.125,1417719.375); - ''' - ) - - fs = ds.featureset() - feature = None - try : - feature = fs.next() - except StopIteration: - pass - eq_(feature,None) - - def test_attachdb_with_explicit_index(): - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - table='attachedtest', - index_table='myindex', - attachdb='scratch@:memory:', - initdb=''' - create table scratch.attachedtest (the_geom); - create virtual table scratch.myindex using rtree(pkid,xmin,xmax,ymin,ymax); - insert into scratch.myindex values (1,-7799225.5,-7778571.0,1393264.125,1417719.375); - ''' - ) - fs = ds.featureset() - feature = None - try: - feature = fs.next() - except StopIteration: - pass - eq_(feature,None) - - def test_attachdb_with_sql_join(): - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - table='(select * from world_merc INNER JOIN business on world_merc.iso3 = business.ISO3 limit 100)', - attachdb='busines@business.sqlite' - ) - eq_(len(ds.fields()),29) - eq_(ds.fields(),['OGC_FID', 'fips', 'iso2', 'iso3', 'un', 'name', 'area', 'pop2005', 'region', 'subregion', 'lon', 'lat', 'ISO3:1', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010']) - eq_(ds.field_types(),['int', 'str', 'str', 'str', 'int', 'str', 'int', 'int', 'int', 'int', 'float', 'float', 'str', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int']) - fs = ds.featureset() - feature = fs.next() - eq_(feature.id(),1) - expected = { - 1995:0, - 1996:0, - 1997:0, - 1998:0, - 1999:0, - 2000:0, - 2001:0, - 2002:0, - 2003:0, - 2004:0, - 2005:0, - 2006:0, - 2007:0, - 2008:0, - 2009:0, - 2010:0, - # this appears to be sqlites way of - # automatically handling clashing column names - 'ISO3:1':'ATG', - 'OGC_FID':1, - 'area':44, - 'fips':u'AC', - 'iso2':u'AG', - 'iso3':u'ATG', - 'lat':17.078, - 'lon':-61.783, - 'name':u'Antigua and Barbuda', - 'pop2005':83039, - 'region':19, - 'subregion':29, - 'un':28 - } - for k,v in expected.items(): - try: - eq_(feature[str(k)],v) - except: - #import pdb;pdb.set_trace() - print 'invalid key/v %s/%s for: %s' % (k,v,feature) - - def test_attachdb_with_sql_join_count(): - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - table='(select * from world_merc INNER JOIN business on world_merc.iso3 = business.ISO3 limit 100)', - attachdb='busines@business.sqlite' - ) - eq_(len(ds.fields()),29) - eq_(ds.fields(),['OGC_FID', 'fips', 'iso2', 'iso3', 'un', 'name', 'area', 'pop2005', 'region', 'subregion', 'lon', 'lat', 'ISO3:1', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010']) - eq_(ds.field_types(),['int', 'str', 'str', 'str', 'int', 'str', 'int', 'int', 'int', 'int', 'float', 'float', 'str', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int']) - eq_(len(ds.all_features()),100) - - def test_attachdb_with_sql_join_count2(): - ''' - sqlite3 world.sqlite - attach database 'business.sqlite' as business; - select count(*) from world_merc INNER JOIN business on world_merc.iso3 = business.ISO3; - ''' - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - table='(select * from world_merc INNER JOIN business on world_merc.iso3 = business.ISO3)', - attachdb='busines@business.sqlite' - ) - eq_(len(ds.fields()),29) - eq_(ds.fields(),['OGC_FID', 'fips', 'iso2', 'iso3', 'un', 'name', 'area', 'pop2005', 'region', 'subregion', 'lon', 'lat', 'ISO3:1', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010']) - eq_(ds.field_types(),['int', 'str', 'str', 'str', 'int', 'str', 'int', 'int', 'int', 'int', 'float', 'float', 'str', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int']) - eq_(len(ds.all_features()),192) - - def test_attachdb_with_sql_join_count3(): - ''' - select count(*) from (select * from world_merc where 1=1) as world_merc INNER JOIN business on world_merc.iso3 = business.ISO3; - ''' - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - table='(select * from (select * from world_merc where !intersects!) as world_merc INNER JOIN business on world_merc.iso3 = business.ISO3)', - attachdb='busines@business.sqlite' - ) - eq_(len(ds.fields()),29) - eq_(ds.fields(),['OGC_FID', 'fips', 'iso2', 'iso3', 'un', 'name', 'area', 'pop2005', 'region', 'subregion', 'lon', 'lat', 'ISO3:1', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010']) - eq_(ds.field_types(),['int', 'str', 'str', 'str', 'int', 'str', 'int', 'int', 'int', 'int', 'float', 'float', 'str', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int']) - eq_(len(ds.all_features()),192) - - def test_attachdb_with_sql_join_count4(): - ''' - select count(*) from (select * from world_merc where 1=1) as world_merc INNER JOIN business on world_merc.iso3 = business.ISO3; - ''' - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - table='(select * from (select * from world_merc where !intersects! limit 1) as world_merc INNER JOIN business on world_merc.iso3 = business.ISO3)', - attachdb='busines@business.sqlite' - ) - eq_(len(ds.fields()),29) - eq_(ds.fields(),['OGC_FID', 'fips', 'iso2', 'iso3', 'un', 'name', 'area', 'pop2005', 'region', 'subregion', 'lon', 'lat', 'ISO3:1', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010']) - eq_(ds.field_types(),['int', 'str', 'str', 'str', 'int', 'str', 'int', 'int', 'int', 'int', 'float', 'float', 'str', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int']) - eq_(len(ds.all_features()),1) - - def test_attachdb_with_sql_join_count5(): - ''' - select count(*) from (select * from world_merc where 1=1) as world_merc INNER JOIN business on world_merc.iso3 = business.ISO3; - ''' - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - table='(select * from (select * from world_merc where !intersects! and 1=2) as world_merc INNER JOIN business on world_merc.iso3 = business.ISO3)', - attachdb='busines@business.sqlite' - ) - # nothing is able to join to business so we don't pick up business schema - eq_(len(ds.fields()),12) - eq_(ds.fields(),['OGC_FID', 'fips', 'iso2', 'iso3', 'un', 'name', 'area', 'pop2005', 'region', 'subregion', 'lon', 'lat']) - eq_(ds.field_types(),['int', 'str', 'str', 'str', 'int', 'str', 'int', 'int', 'int', 'int', 'float', 'float']) - eq_(len(ds.all_features()),0) - - def test_subqueries(): - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - table='world_merc', - ) - fs = ds.featureset() - feature = fs.next() - eq_(feature['OGC_FID'],1) - eq_(feature['fips'],u'AC') - eq_(feature['iso2'],u'AG') - eq_(feature['iso3'],u'ATG') - eq_(feature['un'],28) - eq_(feature['name'],u'Antigua and Barbuda') - eq_(feature['area'],44) - eq_(feature['pop2005'],83039) - eq_(feature['region'],19) - eq_(feature['subregion'],29) - eq_(feature['lon'],-61.783) - eq_(feature['lat'],17.078) - - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - table='(select * from world_merc)', - ) - fs = ds.featureset() - feature = fs.next() - eq_(feature['OGC_FID'],1) - eq_(feature['fips'],u'AC') - eq_(feature['iso2'],u'AG') - eq_(feature['iso3'],u'ATG') - eq_(feature['un'],28) - eq_(feature['name'],u'Antigua and Barbuda') - eq_(feature['area'],44) - eq_(feature['pop2005'],83039) - eq_(feature['region'],19) - eq_(feature['subregion'],29) - eq_(feature['lon'],-61.783) - eq_(feature['lat'],17.078) - - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - table='(select OGC_FID,GEOMETRY from world_merc)', - ) - fs = ds.featureset() - feature = fs.next() - eq_(feature['OGC_FID'],1) - eq_(len(feature),1) - - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - table='(select GEOMETRY,OGC_FID,fips from world_merc)', - ) - fs = ds.featureset() - feature = fs.next() - eq_(feature['OGC_FID'],1) - eq_(feature['fips'],u'AC') - - # same as above, except with alias like postgres requires - # TODO - should we try to make this work? - #ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - # table='(select GEOMETRY,rowid as aliased_id,fips from world_merc) as table', - # key_field='aliased_id' - # ) - #fs = ds.featureset() - #feature = fs.next() - #eq_(feature['aliased_id'],1) - #eq_(feature['fips'],u'AC') - - ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', - table='(select GEOMETRY,OGC_FID,OGC_FID as rowid,fips from world_merc)', - ) - fs = ds.featureset() - feature = fs.next() - eq_(feature['rowid'],1) - eq_(feature['fips'],u'AC') - - def test_empty_db(): - ds = mapnik.SQLite(file='../data/sqlite/empty.db', - table='empty', - ) - fs = ds.featureset() - feature = None - try: - feature = fs.next() - except StopIteration: - pass - eq_(feature,None) - - @raises(RuntimeError) - def test_that_nonexistant_query_field_throws(**kwargs): - ds = mapnik.SQLite(file='../data/sqlite/empty.db', - table='empty', - ) - eq_(len(ds.fields()),25) - eq_(ds.fields(),['OGC_FID', 'scalerank', 'labelrank', 'featurecla', 'sovereignt', 'sov_a3', 'adm0_dif', 'level', 'type', 'admin', 'adm0_a3', 'geou_dif', 'name', 'abbrev', 'postal', 'name_forma', 'terr_', 'name_sort', 'map_color', 'pop_est', 'gdp_md_est', 'fips_10_', 'iso_a2', 'iso_a3', 'iso_n3']) - eq_(ds.field_types(),['int', 'int', 'int', 'str', 'str', 'str', 'float', 'float', 'str', 'str', 'str', 'float', 'str', 'str', 'str', 'str', 'str', 'str', 'float', 'float', 'float', 'float', 'str', 'str', 'float']) - query = mapnik.Query(ds.envelope()) - for fld in ds.fields(): - query.add_property_name(fld) - # also add an invalid one, triggering throw - query.add_property_name('bogus') - ds.features(query) - - def test_intersects_token1(): - ds = mapnik.SQLite(file='../data/sqlite/empty.db', - table='(select * from empty where !intersects!)', - ) - fs = ds.featureset() - feature = None - try : - feature = fs.next() - except StopIteration: - pass - eq_(feature,None) - - def test_intersects_token2(): - ds = mapnik.SQLite(file='../data/sqlite/empty.db', - table='(select * from empty where "a"!="b" and !intersects!)', - ) - fs = ds.featureset() - feature = None - try : - feature = fs.next() - except StopIteration: - pass - eq_(feature,None) - - def test_intersects_token3(): - ds = mapnik.SQLite(file='../data/sqlite/empty.db', - table='(select * from empty where "a"!="b" and !intersects!)', - ) - fs = ds.featureset() - feature = None - try : - feature = fs.next() - except StopIteration: - pass - eq_(feature,None) - - # https://github.com/mapnik/mapnik/issues/1537 - # this works because key_field is manually set - def test_db_with_one_text_column(): - # form up an in-memory test db - wkb = '010100000000000000000000000000000000000000' - ds = mapnik.SQLite(file=':memory:', - table='test1', - initdb=''' - create table test1 (alias TEXT,geometry BLOB); - insert into test1 values ("test",x'%s'); - ''' % wkb, - extent='-180,-60,180,60', - use_spatial_index=False, - key_field='alias' - ) - eq_(len(ds.fields()),1) - eq_(ds.fields(),['alias']) - eq_(ds.field_types(),['str']) - fs = ds.all_features() - eq_(len(fs),1) - feat = fs[0] - eq_(feat.id(),0) # should be 1? - eq_(feat['alias'],'test') - eq_(feat.geometry.to_wkt(),'POINT(0 0)') - - def test_db_with_one_untyped_column(): - # form up an in-memory test db - wkb = '010100000000000000000000000000000000000000' - ds = mapnik.SQLite(file=':memory:', - table='test1', - initdb=''' - create table test1 (geometry BLOB, untyped); - insert into test1 values (x'%s', 'untyped'); - ''' % wkb, - extent='-180,-60,180,60', - use_spatial_index=False, - key_field='rowid' - ) - - # ensure the untyped column is found - eq_(len(ds.fields()),2) - eq_(ds.fields(),['rowid', 'untyped']) - eq_(ds.field_types(),['int', 'str']) - - def test_db_with_one_untyped_column_using_subquery(): - # form up an in-memory test db - wkb = '010100000000000000000000000000000000000000' - ds = mapnik.SQLite(file=':memory:', - table='(SELECT rowid, geometry, untyped FROM test1)', - initdb=''' - create table test1 (geometry BLOB, untyped); - insert into test1 values (x'%s', 'untyped'); - ''' % wkb, - extent='-180,-60,180,60', - use_spatial_index=False, - key_field='rowid' - ) - - # ensure the untyped column is found - eq_(len(ds.fields()),3) - eq_(ds.fields(),['rowid', 'untyped', 'rowid']) - eq_(ds.field_types(),['int', 'str', 'int']) - - - def test_that_64bit_int_fields_work(): - ds = mapnik.SQLite(file='../data/sqlite/64bit_int.sqlite', - table='int_table', - use_spatial_index=False - ) - eq_(len(ds.fields()),3) - eq_(ds.fields(),['OGC_FID','id','bigint']) - eq_(ds.field_types(),['int','int','int']) - fs = ds.featureset() - feat = fs.next() - eq_(feat.id(),1) - eq_(feat['OGC_FID'],1) - eq_(feat['bigint'],2147483648) - feat = fs.next() - eq_(feat.id(),2) - eq_(feat['OGC_FID'],2) - eq_(feat['bigint'],922337203685477580) - - - def test_null_id_field(): - # silence null key warning: https://github.com/mapnik/mapnik/issues/1889 - default_logging_severity = mapnik.logger.get_severity() - mapnik.logger.set_severity(mapnik.severity_type.None) - # form up an in-memory test db - wkb = '010100000000000000000000000000000000000000' - # note: the osm_id should be declared INTEGER PRIMARY KEY - # but in this case we intentionally do not make this a valid pkey - # otherwise sqlite would turn the null into a valid, serial id - ds = mapnik.SQLite(file=':memory:', - table='test1', - initdb=''' - create table test1 (osm_id INTEGER,geometry BLOB); - insert into test1 values (null,x'%s'); - ''' % wkb, - extent='-180,-60,180,60', - use_spatial_index=False, - key_field='osm_id' - ) - fs = ds.featureset() - feature = None - try : - feature = fs.next() - except StopIteration: - pass - eq_(feature,None) - mapnik.logger.set_severity(default_logging_severity) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/style_test.py b/tests/python_tests/style_test.py deleted file mode 100644 index 7bc782a4b..000000000 --- a/tests/python_tests/style_test.py +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from nose.tools import eq_ -from utilities import run_all -import mapnik - -def test_style_init(): - s = mapnik.Style() - eq_(s.filter_mode,mapnik.filter_mode.ALL) - eq_(len(s.rules),0) - eq_(s.opacity,1) - eq_(s.comp_op,None) - eq_(s.image_filters,"") - eq_(s.image_filters_inflate,False) - -if __name__ == "__main__": - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/topojson_plugin_test.py b/tests/python_tests/topojson_plugin_test.py deleted file mode 100644 index a5f3e573d..000000000 --- a/tests/python_tests/topojson_plugin_test.py +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from nose.tools import eq_,assert_almost_equal -from utilities import execution_path, run_all -import os, mapnik - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -if 'topojson' in mapnik.DatasourceCache.plugin_names(): - - def test_topojson_init(): - # topojson tests/data/json/escaped.geojson -o tests/data/json/escaped.topojson --properties - # topojson version 1.4.2 - ds = mapnik.Datasource(type='topojson',file='../data/json/escaped.topojson') - e = ds.envelope() - assert_almost_equal(e.minx, -81.705583, places=7) - assert_almost_equal(e.miny, 41.480573, places=6) - assert_almost_equal(e.maxx, -81.705583, places=5) - assert_almost_equal(e.maxy, 41.480573, places=3) - - def test_topojson_properties(): - ds = mapnik.Datasource(type='topojson',file='../data/json/escaped.topojson') - f = ds.features_at_point(ds.envelope().center()).features[0] - eq_(len(ds.fields()),7) - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - - eq_(f['name'], u'Test') - eq_(f['int'], 1) - eq_(f['description'], u'Test: \u005C') - eq_(f['spaces'], u'this has spaces') - eq_(f['double'], 1.1) - eq_(f['boolean'], True) - eq_(f['NOM_FR'], u'Qu\xe9bec') - eq_(f['NOM_FR'], u'Québec') - - ds = mapnik.Datasource(type='topojson',file='../data/json/escaped.topojson') - f = ds.all_features()[0] - eq_(len(ds.fields()),7) - - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - - eq_(f['name'], u'Test') - eq_(f['int'], 1) - eq_(f['description'], u'Test: \u005C') - eq_(f['spaces'], u'this has spaces') - eq_(f['double'], 1.1) - eq_(f['boolean'], True) - eq_(f['NOM_FR'], u'Qu\xe9bec') - eq_(f['NOM_FR'], u'Québec') - - def test_geojson_from_in_memory_string(): - ds = mapnik.Datasource(type='topojson',inline=open('../data/json/escaped.topojson','r').read()) - f = ds.all_features()[0] - eq_(len(ds.fields()),7) - - desc = ds.describe() - eq_(desc['geometry_type'],mapnik.DataGeometryType.Point) - - eq_(f['name'], u'Test') - eq_(f['int'], 1) - eq_(f['description'], u'Test: \u005C') - eq_(f['spaces'], u'this has spaces') - eq_(f['double'], 1.1) - eq_(f['boolean'], True) - eq_(f['NOM_FR'], u'Qu\xe9bec') - eq_(f['NOM_FR'], u'Québec') - -# @raises(RuntimeError) - def test_that_nonexistant_query_field_throws(**kwargs): - ds = mapnik.Datasource(type='topojson',file='../data/json/escaped.topojson') - eq_(len(ds.fields()),7) - # TODO - this sorting is messed up - eq_(ds.fields(),['name', 'int', 'description', 'spaces', 'double', 'boolean', 'NOM_FR']) - eq_(ds.field_types(),['str', 'int', 'str', 'str', 'float', 'bool', 'str']) -# TODO - should topojson plugin throw like others? -# query = mapnik.Query(ds.envelope()) -# for fld in ds.fields(): -# query.add_property_name(fld) -# # also add an invalid one, triggering throw -# query.add_property_name('bogus') -# fs = ds.features(query) - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/python_tests/utilities.py b/tests/python_tests/utilities.py deleted file mode 100644 index fe02c7d63..000000000 --- a/tests/python_tests/utilities.py +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from nose.plugins.errorclass import ErrorClass, ErrorClassPlugin -from nose.tools import assert_almost_equal - -import os, sys, traceback -import mapnik - -HERE = os.path.dirname(__file__) - -def execution_path(filename): - return os.path.join(os.path.dirname(sys._getframe(1).f_code.co_filename), filename) - -class Todo(Exception): - pass - -class TodoPlugin(ErrorClassPlugin): - name = "todo" - - todo = ErrorClass(Todo, label='TODO', isfailure=False) - -def contains_word(word, bytestring_): - """ - Checks that a bytestring contains a given word. len(bytestring) should be - a multiple of len(word). - - >>> contains_word("abcd", "abcd"*5) - True - - >>> contains_word("ab", "ba"*5) - False - - >>> contains_word("ab", "ab"*5+"a") - Traceback (most recent call last): - ... - AssertionError: len(bytestring_) not multiple of len(word) - """ - n = len(word) - assert len(bytestring_)%n == 0, "len(bytestring_) not multiple of len(word)" - chunks = [bytestring_[i:i+n] for i in xrange(0, len(bytestring_), n)] - return word in chunks - -def pixel2channels(pixel): - alpha = (pixel >> 24) & 0xff - red = pixel & 0xff - green = (pixel >> 8) & 0xff - blue = (pixel >> 16) & 0xff - return red,green,blue,alpha - -def pixel2rgba(pixel): - return 'rgba(%s,%s,%s,%s)' % pixel2channels(pixel) - -def get_unique_colors(im): - pixels = [] - for x in range(im.width()): - for y in range(im.height()): - pixel = im.get_pixel(x,y) - if pixel not in pixels: - pixels.append(pixel) - pixels = sorted(pixels) - return map(pixel2rgba,pixels) - -def run_all(iterable): - failed = 0 - for test in iterable: - try: - test() - sys.stderr.write("\x1b[32m✓ \x1b[m" + test.__name__ + "\x1b[m\n") - except: - exc_type, exc_value, exc_tb = sys.exc_info() - failed += 1 - sys.stderr.write("\x1b[31m✘ \x1b[m" + test.__name__ + "\x1b[m\n") - for mline in traceback.format_exception_only(exc_type, exc_value): - for line in mline.rstrip().split("\n"): - sys.stderr.write(" \x1b[31m" + line + "\x1b[m\n") - sys.stderr.write(" Traceback:\n") - for mline in traceback.format_tb(exc_tb): - for line in mline.rstrip().split("\n"): - if not 'utilities.py' in line and not 'trivial.py' in line and not line.strip() == 'test()': - sys.stderr.write(" " + line + "\n") - sys.stderr.flush() - return failed - -def side_by_side_image(left_im, right_im): - width = left_im.width() + 1 + right_im.width() - height = max(left_im.height(), right_im.height()) - im = mapnik.Image(width, height) - im.composite(left_im,mapnik.CompositeOp.src_over,1.0,0,0) - if width > 80: - im.composite(mapnik.Image.open(HERE+'/images/expected.png'),mapnik.CompositeOp.difference,1.0,0,0) - im.composite(right_im,mapnik.CompositeOp.src_over,1.0,left_im.width() + 1, 0) - if width > 80: - im.composite(mapnik.Image.open(HERE+'/images/actual.png'),mapnik.CompositeOp.difference,1.0,left_im.width() + 1, 0) - return im - -def assert_box2d_almost_equal(a, b, msg=None): - msg = msg or ("%r != %r" % (a, b)) - assert_almost_equal(a.minx, b.minx, msg=msg) - assert_almost_equal(a.maxx, b.maxx, msg=msg) - assert_almost_equal(a.miny, b.miny, msg=msg) - assert_almost_equal(a.maxy, b.maxy, msg=msg) diff --git a/tests/python_tests/webp_encoding_test.py b/tests/python_tests/webp_encoding_test.py deleted file mode 100644 index f14bfc490..000000000 --- a/tests/python_tests/webp_encoding_test.py +++ /dev/null @@ -1,159 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import os, mapnik -from nose.tools import raises,eq_ -from utilities import execution_path, run_all - -def setup(): - # All of the paths used are relative, if we run the tests - # from another directory we need to chdir() - os.chdir(execution_path('.')) - -if mapnik.has_webp(): - tmp_dir = '/tmp/mapnik-webp/' - if not os.path.exists(tmp_dir): - os.makedirs(tmp_dir) - - opts = [ - 'webp', - 'webp:method=0', - 'webp:method=6', - 'webp:quality=64', - 'webp:alpha=false', - 'webp:partitions=3', - 'webp:preprocessing=1', - 'webp:partition_limit=50', - 'webp:pass=10', - 'webp:alpha_quality=50', - 'webp:alpha_filtering=2', - 'webp:alpha_compression=0', - 'webp:autofilter=0', - 'webp:filter_type=1:autofilter=1', - 'webp:filter_sharpness=4', - 'webp:filter_strength=50', - 'webp:sns_strength=50', - 'webp:segments=3', - 'webp:target_PSNR=.5', - 'webp:target_size=100' - ] - - - def gen_filepath(name,format): - return os.path.join('images/support/encoding-opts',name+'-'+format.replace(":","+")+'.webp') - - def test_quality_threshold(): - im = mapnik.Image(256,256) - im.tostring('webp:quality=99.99000') - im.tostring('webp:quality=0') - im.tostring('webp:quality=0.001') - - @raises(RuntimeError) - def test_quality_threshold_invalid(): - im = mapnik.Image(256,256) - im.tostring('webp:quality=101') - - @raises(RuntimeError) - def test_quality_threshold_invalid2(): - im = mapnik.Image(256,256) - im.tostring('webp:quality=-1') - - generate = os.environ.get('UPDATE') - - def test_expected_encodings(): - fails = [] - try: - for opt in opts: - im = mapnik.Image(256,256) - expected = gen_filepath('blank',opt) - actual = os.path.join(tmp_dir,os.path.basename(expected)) - if generate or not os.path.exists(expected): - print 'generating expected image %s' % expected - im.save(expected,opt) - im.save(actual,opt) - try: - expected_bytes = mapnik.Image.open(expected).tostring() - except RuntimeError: - # this will happen if libweb is old, since it cannot open images created by more recent webp - print 'warning, cannot open webp expected image (your libwebp is likely too old)' - continue - if mapnik.Image.open(actual).tostring() != expected_bytes: - fails.append('%s (actual) not == to %s (expected)' % (actual,expected)) - - for opt in opts: - im = mapnik.Image(256,256) - im.fill(mapnik.Color('green')) - expected = gen_filepath('solid',opt) - actual = os.path.join(tmp_dir,os.path.basename(expected)) - if generate or not os.path.exists(expected): - print 'generating expected image %s' % expected - im.save(expected,opt) - im.save(actual,opt) - try: - expected_bytes = mapnik.Image.open(expected).tostring() - except RuntimeError: - # this will happen if libweb is old, since it cannot open images created by more recent webp - print 'warning, cannot open webp expected image (your libwebp is likely too old)' - continue - if mapnik.Image.open(actual).tostring() != expected_bytes: - fails.append('%s (actual) not == to %s (expected)' % (actual,expected)) - - for opt in opts: - im = mapnik.Image.open('images/support/transparency/aerial_rgba.png') - expected = gen_filepath('aerial_rgba',opt) - actual = os.path.join(tmp_dir,os.path.basename(expected)) - if generate or not os.path.exists(expected): - print 'generating expected image %s' % expected - im.save(expected,opt) - im.save(actual,opt) - try: - expected_bytes = mapnik.Image.open(expected).tostring() - except RuntimeError: - # this will happen if libweb is old, since it cannot open images created by more recent webp - print 'warning, cannot open webp expected image (your libwebp is likely too old)' - continue - if mapnik.Image.open(actual).tostring() != expected_bytes: - fails.append('%s (actual) not == to %s (expected)' % (actual,expected)) - # disabled to avoid failures on ubuntu when using old webp packages - #eq_(fails,[],'\n'+'\n'.join(fails)) - except RuntimeError, e: - print e - - def test_transparency_levels(): - try: - # create partial transparency image - im = mapnik.Image(256,256) - im.fill(mapnik.Color('rgba(255,255,255,.5)')) - c2 = mapnik.Color('rgba(255,255,0,.2)') - c3 = mapnik.Color('rgb(0,255,255)') - for y in range(0,im.height()/2): - for x in range(0,im.width()/2): - im.set_pixel(x,y,c2) - for y in range(im.height()/2,im.height()): - for x in range(im.width()/2,im.width()): - im.set_pixel(x,y,c3) - - t0 = tmp_dir + 'white0-actual.webp' - - # octree - format = 'webp' - expected = 'images/support/transparency/white0.webp' - if generate or not os.path.exists(expected): - im.save('images/support/transparency/white0.webp') - im.save(t0,format) - im_in = mapnik.Image.open(t0) - t0_len = len(im_in.tostring(format)) - try: - expected_bytes = mapnik.Image.open(expected).tostring(format) - except RuntimeError: - # this will happen if libweb is old, since it cannot open images created by more recent webp - print 'warning, cannot open webp expected image (your libwebp is likely too old)' - return - eq_(t0_len,len(expected_bytes)) - except RuntimeError, e: - print e - - -if __name__ == "__main__": - setup() - exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) diff --git a/tests/run_tests.py b/tests/run_tests.py deleted file mode 100755 index edf797465..000000000 --- a/tests/run_tests.py +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env python - -import sys - -try: - import nose -except ImportError, e: - sys.stderr.write("Unable to run python tests: the third party 'nose' module is required\nTo install 'nose' do:\n\tsudo pip install nose (or on debian systems: apt-get install python-nose): %s\n" % e) - sys.exit(1) - -import mapnik -from python_tests.utilities import TodoPlugin -from nose.plugins.doctests import Doctest - -import nose, sys, os, getopt - -def usage(): - print("test.py -h | --help") - print("test.py [-q | -v] [-p | --prefix ]") - -def main(): - try: - opts, args = getopt.getopt(sys.argv[1:], "hvqp:", ["help", "prefix="]) - except getopt.GetoptError,err: - print(str(err)) - usage() - sys.exit(2) - - prefix = None - verbose = False - quiet = False - - for o, a in opts: - if o == "-q": - quiet = True - elif o == "-v": - verbose = True - elif o in ("-h", "--help"): - usage() - sys.exit() - elif o in ("-p", "--prefix"): - prefix = a - else: - assert False, "Unhandled option" - - if quiet and verbose: - usage() - sys.exit(2) - - if prefix: - # Allow python to find libraries for testing on the buildbot - sys.path.insert(0, os.path.join(prefix, "lib/python%s/site-packages" % sys.version[:3])) - - import mapnik - - if not quiet: - print("- mapnik path: %s" % mapnik.__file__) - if hasattr(mapnik,'_mapnik'): - print("- _mapnik.so path: %s" % mapnik._mapnik.__file__) - if hasattr(mapnik,'inputpluginspath'): - print ("- Input plugins path: %s" % mapnik.inputpluginspath) - if os.environ.has_key('MAPNIK_INPUT_PLUGINS_DIRECTORY'): - print ("- MAPNIK_INPUT_PLUGINS_DIRECTORY env: %s" % os.environ.get('MAPNIK_INPUT_PLUGINS_DIRECTORY')) - if hasattr(mapnik,'fontscollectionpath'): - print("- Font path: %s" % mapnik.fontscollectionpath) - if os.environ.has_key('MAPNIK_FONT_DIRECTORY'): - print ("- MAPNIK_FONT_DIRECTORY env: %s" % os.environ.get('MAPNIK_FONT_DIRECTORY')) - print('') - print("- Running nosetests:") - print('') - - argv = [__file__, '--exe', '--with-todo', '--with-doctest', '--doctest-tests'] - - if not quiet: - argv.append('-v') - - if verbose: - # 3 * '-v' gets us debugging information from nose - argv.append('-v') - argv.append('-v') - - dirname = os.path.dirname(sys.argv[0]) - argv.extend(['-w', os.path.join(dirname,'python_tests')]) - - if not nose.run(argv=argv, plugins=[TodoPlugin(), Doctest()]): - sys.exit(1) - else: - sys.exit(0) - -if __name__ == "__main__": - main() diff --git a/tests/visual_tests/.gitignore b/tests/visual_tests/.gitignore deleted file mode 100644 index a39b72071..000000000 --- a/tests/visual_tests/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*-out.xml diff --git a/tests/visual_tests/clean.sh b/tests/visual_tests/clean.sh deleted file mode 100755 index d5ae9e4de..000000000 --- a/tests/visual_tests/clean.sh +++ /dev/null @@ -1,2 +0,0 @@ -rm -f xml_output/*-out.xml - diff --git a/tests/visual_tests/compare.py b/tests/visual_tests/compare.py deleted file mode 100644 index 30ccfc260..000000000 --- a/tests/visual_tests/compare.py +++ /dev/null @@ -1,57 +0,0 @@ -# -*- coding: utf-8 -*- - -import mapnik -import os -from unittest import TestCase - -try: - import json -except ImportError: - import simplejson as json - -# compare two images and return number of different pixels -def compare(actual, expected, alpha=True): - im1 = mapnik.Image.open(actual) - im2 = mapnik.Image.open(expected) - pixels = im1.width() * im1.height() - delta_pixels = (im2.width() * im2.height()) - pixels - if delta_pixels != 0: - return delta_pixels - return im1.compare(im2, 0, alpha) - -def compare_grids(actual, expected, threshold=0, alpha=True): - global errors - global passed - im1 = json.loads(open(actual).read()) - im2 = json.loads(open(expected).read()) - # TODO - real diffing - if not im1['data'] == im2['data']: - return 99999999 - if not im1['keys'] == im2['keys']: - return 99999999 - grid1 = im1['grid'] - grid2 = im2['grid'] - try: - assertSequenceEqual(grid1, grid2) - return 0 - except: - # dimensions must be exact - width1 = len(grid1[0]) - width2 = len(grid2[0]) - if not width1 == width2: - return 99999999 - height1 = len(grid1) - height2 = len(grid2) - if not height1 == height2: - return 99999999 - diff = 0; - for y in range(0,height1-1): - row1 = grid1[y] - row2 = grid2[y] - if row1 == row2: - continue; - #width = min(len(row1),len(row2)) - for w in range(0,width1): - if row1[w] != row2[w]: - diff += 1 - return diff diff --git a/tests/visual_tests/data/Yosemite_L9.tfw b/tests/visual_tests/data/Yosemite_L9.tfw deleted file mode 100644 index 700a71cec..000000000 --- a/tests/visual_tests/data/Yosemite_L9.tfw +++ /dev/null @@ -1,6 +0,0 @@ -191.092170573681 -0.000000000000 -0.000000000000 --191.092170573681 --13383825.126807762310 -4651869.862067188136 diff --git a/tests/visual_tests/data/Yosemite_L9.tif b/tests/visual_tests/data/Yosemite_L9.tif deleted file mode 100644 index a3fcc36b8..000000000 Binary files a/tests/visual_tests/data/Yosemite_L9.tif and /dev/null differ diff --git a/tests/visual_tests/data/aerial_rgba.tiff b/tests/visual_tests/data/aerial_rgba.tiff deleted file mode 100644 index bccfd575d..000000000 Binary files a/tests/visual_tests/data/aerial_rgba.tiff and /dev/null differ diff --git a/tests/visual_tests/data/bug1532.csv b/tests/visual_tests/data/bug1532.csv deleted file mode 100644 index f38b6c9a0..000000000 --- a/tests/visual_tests/data/bug1532.csv +++ /dev/null @@ -1,5 +0,0 @@ -wrap|type|wkt -no|point|POINT(0.28436221472838974 0.2614258628766519) -yes|point|POINT(0.1306627157552161 0.2589062249349994) -no|line|LINESTRING(0.48404558019763577 0.22552097681732494, 0.7876650822675934 0.22426115456321344) -yes|line|LINESTRING(0.48341566421823756 0.32315682259650147, 0.7870351662881953 0.3218970105980799) diff --git a/tests/visual_tests/data/bug1533.csv b/tests/visual_tests/data/bug1533.csv deleted file mode 100644 index 5c38f1799..000000000 --- a/tests/visual_tests/data/bug1533.csv +++ /dev/null @@ -1,5 +0,0 @@ -wkt -"LINESTRING(0.8511083807156015 0.03967486460801543, 0.5994991376749135 0.2096131480715248)" -"LINESTRING(0.27084293293759165 0.26302812355087024, 0.04604697152647152 0.05893796680132844)" -"LINESTRING(0.07145061369178042 0.3118185090592599, 0.3750701157617382 0.3105586956821123)" -"LINESTRING(0.8179010492787097 0.3099287889371784, 0.514281547208752 0.3111886023894954)" diff --git a/tests/visual_tests/data/charplacement.dbf b/tests/visual_tests/data/charplacement.dbf deleted file mode 100644 index c143baa95..000000000 Binary files a/tests/visual_tests/data/charplacement.dbf and /dev/null differ diff --git a/tests/visual_tests/data/charplacement.shp b/tests/visual_tests/data/charplacement.shp deleted file mode 100644 index ccdfcf4bc..000000000 Binary files a/tests/visual_tests/data/charplacement.shp and /dev/null differ diff --git a/tests/visual_tests/data/charplacement.shx b/tests/visual_tests/data/charplacement.shx deleted file mode 100644 index 65b8dab8f..000000000 Binary files a/tests/visual_tests/data/charplacement.shx and /dev/null differ diff --git a/tests/visual_tests/data/crossing-lines.csv b/tests/visual_tests/data/crossing-lines.csv deleted file mode 100644 index 3b51da020..000000000 --- a/tests/visual_tests/data/crossing-lines.csv +++ /dev/null @@ -1,7 +0,0 @@ -i|wkt -1|LINESTRING(10 0, 20 0) -1|LINESTRING(10 10, 20 10) -1|LINESTRING(15 5, 20 5) -1|LINESTRING(15 5, 20 5) -1|LINESTRING(10 5, 15 5) -1|LINESTRING(10 5, 15 5) diff --git a/tests/visual_tests/data/displacement.dbf b/tests/visual_tests/data/displacement.dbf deleted file mode 100644 index 06ec3206c..000000000 Binary files a/tests/visual_tests/data/displacement.dbf and /dev/null differ diff --git a/tests/visual_tests/data/displacement.shp b/tests/visual_tests/data/displacement.shp deleted file mode 100644 index 899b16370..000000000 Binary files a/tests/visual_tests/data/displacement.shp and /dev/null differ diff --git a/tests/visual_tests/data/displacement.shx b/tests/visual_tests/data/displacement.shx deleted file mode 100644 index 359820de4..000000000 Binary files a/tests/visual_tests/data/displacement.shx and /dev/null differ diff --git a/tests/visual_tests/data/grouped-rendering.sqlite b/tests/visual_tests/data/grouped-rendering.sqlite deleted file mode 100644 index 277c0f561..000000000 Binary files a/tests/visual_tests/data/grouped-rendering.sqlite and /dev/null differ diff --git a/tests/visual_tests/data/heat.tif b/tests/visual_tests/data/heat.tif deleted file mode 100644 index 5ea60e3aa..000000000 Binary files a/tests/visual_tests/data/heat.tif and /dev/null differ diff --git a/tests/visual_tests/data/heat_nodata.tif b/tests/visual_tests/data/heat_nodata.tif deleted file mode 100644 index ed6d71ea7..000000000 Binary files a/tests/visual_tests/data/heat_nodata.tif and /dev/null differ diff --git a/tests/visual_tests/data/heat_rgb.tif b/tests/visual_tests/data/heat_rgb.tif deleted file mode 100644 index c9ad3b57b..000000000 Binary files a/tests/visual_tests/data/heat_rgb.tif and /dev/null differ diff --git a/tests/visual_tests/data/hex.dbf b/tests/visual_tests/data/hex.dbf deleted file mode 100644 index 193ea6e87..000000000 Binary files a/tests/visual_tests/data/hex.dbf and /dev/null differ diff --git a/tests/visual_tests/data/hex.prj b/tests/visual_tests/data/hex.prj deleted file mode 100644 index eb0befd98..000000000 --- a/tests/visual_tests/data/hex.prj +++ /dev/null @@ -1 +0,0 @@ -PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3857"],AXIS["X",EAST],AXIS["Y",NORTH]] \ No newline at end of file diff --git a/tests/visual_tests/data/hex.shp b/tests/visual_tests/data/hex.shp deleted file mode 100644 index 094a86793..000000000 Binary files a/tests/visual_tests/data/hex.shp and /dev/null differ diff --git a/tests/visual_tests/data/hex.shx b/tests/visual_tests/data/hex.shx deleted file mode 100644 index ad2bdf266..000000000 Binary files a/tests/visual_tests/data/hex.shx and /dev/null differ diff --git a/tests/visual_tests/data/issue_2062.csv b/tests/visual_tests/data/issue_2062.csv deleted file mode 100644 index b5c83d4c5..000000000 --- a/tests/visual_tests/data/issue_2062.csv +++ /dev/null @@ -1,2 +0,0 @@ -wkt|label -MULTIPOLYGON(((3374339.0308 9614469.7032,3374761.9885 9614805.7929,3375232.1178 9615288.0913,3375279.0182 9615430.8428,3375325.4605 9615478.5458,3375464.7696 9615812.4503,3375509.248 9616050.1907,3375651.8417 9616138.5065,3375745.1157 9616196.5034,3375837.6017 9616434.9537,3375881.2206 9616765.8431,3376215.0666 9616723.4935,3376219.5797 9616246.8132,3376127.0851 9616008.3738,3376034.5957 9615769.9412,3376086.023 9615486.3237,3376278.4008 9615155.3065,3376425.5209 9614779.3724,3376574.6654 9614210.4834,3376673.7918 9613783.6821,3377057.5552 9613360.4741,3377105.6004 9613313.0683,3377201.4682 9613126.6887,3377202.2128 9613124.6897,3378316.5976 9610951.5909,3378461.5944 9610763.6,3378509.6172 9610716.2035,3378653.3424 9610528.4383,3378842.3887 9610528.1179,3379032.571 9610583.7369,3379128.2948 9610533.5671,3379366.5276 9610393.2721,3379510.3241 9610297.8384,3379651.6118 9610348.3482,3380076.9509 9610589.0568,3380267.5361 9610591.9492,3380457.6508 9610451.7766,3380747.0083 9609980.7715,3380748.1929 9609933.3219,3380894.0701 9609554.6462,3380941.738 9609506.76,3381226.8918 9609652.4143,3381320.4985 9609607.393,3381415.8699 9609463.5446,3381417.4189 9609461.6862,3381420.5934 9609134.0118,3381564.215 9608946.2184,3381755.8291 9608850.7661,3382087.4089 9608811.088,3382466.0385 9608953.9589,3382608.5689 9608953.9991,3382941.3626 9608911.9436,3383038.3592 9608673.7356,3382945.5439 9608387.7463,3382758.8533 9608149.9264,3382810.1545 9607819.1637,3383002.4576 9607347.6291,3383003.7612 9607345.9497,3383051.4051 9607298.0659,3383195.2052 9607110.1141,3383340.001 9606970.1918,3383719.3937 9606877.295,3383908.7311 9606927.5301,3383956.5675 9606927.5314,3384100.1445 9606784.8394,3384290.4448 9606739.7498,3384622.277 9606789.9758,3384858.2713 9606935.6672,3385092.1349 9607173.9013,3385282.6907 9607226.8667,3385376.9741 9607176.1901,3385423.9338 9607179.0078,3385664.1782 9606991.1258,3385805.6257 9606991.1496,3386185.2602 9607044.2548,3386327.7589 9607044.23,3386470.2999 9606951.723,3386330.0118 9606713.5629,3386189.7901 9606520.4937,3386141.8331 9606567.907,3386092.5697 9606806.2542,3386091.9367 9606808.9004,3385618.5514 9606752.9595,3385571.9805 9606658.1504,3385574.2106 9606419.973,3385717.6961 9606232.1788,3385766.4749 9606136.8621,3385719.9219 9605994.0159,3385626.4478 9605946.5843,3385246.7927 9605896.4254,3384777.0164 9605369.94,3384730.2199 9605369.9178,3384683.6664 9605275.1224,3384732.8078 9605132.2676,3384781.6705 9604944.5047,3384686.8788 9604941.7011,3384544.4649 9604986.7728,3384353.1291 9605174.5278,3384020.3668 9605174.5051,3383879.861 9605028.9949,3383835.296 9604552.9755,3383887.6154 9604272.5397,3384124.8144 9604225.1954,3384503.2259 9604322.8067,3384644.6706 9604373.0222,3384882.0401 9604328.4396,3385024.3649 9604375.8246,3385260.0926 9604473.5836,3385544.0199 9604523.7622,3386162.0112 9604386.6323,3386352.4609 9604389.3799,3386399.1307 9604436.7801,3386540.4343 9604484.1649,3386727.5379 9604772.4315,3386963.5136 9604775.3802,3387155.0194 9604724.9455,3387486.6535 9604732.9296,3387819.5233 9604690.5078,3388055.6369 9604735.5353,3388434.2691 9604883.8081,3388905.9622 9605169.3043,3389094.3347 9605264.5103,3389142.0034 9605314.8246,3389376.724 9605504.9905,3389753.1441 9605888.5717,3390272.9623 9606084.3001,3390555.9346 9606274.8722,3390933.3112 9606563.1411,3391073.1445 9606800.9128,3391118.9994 9606991.659,3390835.0416 9606943.7805,3390456.5832 9606748.0213,3390080.4196 9606462.4819,3389891.3844 9606364.8276,3389796.4141 9606364.3849,3389795.2866 9606459.861,3389795.4604 9606462.6462,3390219.6032 9606843.4397,3390594.6583 9607176.4202,3390642.4283 9607271.8296,3390640.2593 9607557.4318,3390828.44 9607652.8229,3390924.1399 9607652.7303,3391208.2109 9607658.3032,3391350.4786 9607610.2985,3391494.2048 9607515.3397,3391686.6988 9607234.6656,3391735.8081 9607044.3371,3391642.346 9606901.5242,3391406.3126 9606708.6403,3391283.9919 9606560.0065,3391172.2724 9606422.554,3391170.7058 9606420.7876,3390893.247 9605711.4114,3390800.5252 9605378.073,3390707.1791 9605280.3602,3390518.1629 9605182.7369,3390376.5802 9605039.5014,3390281.95 9605087.6011,3390279.5158 9605325.2514,3390185.1178 9605325.1313,3389807.6724 9605082.1199,3389618.5093 9604986.7802,3389619.644 9604939.3628,3389525.1757 9604841.0211,3389527.0684 9604656.2062,3389244.6842 9604415.7742,3388961.6476 9604222.4085,3388914.8072 9604079.798,3388917.1173 9603844.4916,3388918.5284 9603843.4597,3389012.9699 9603749.6687,3389155.4109 9603701.5639,3389487.0831 9603754.5334,3389724.4688 9603754.8954,3389867.8136 9603659.5344,3389962.5311 9603471.6666,3389964.5634 9603328.9897,3389919.1605 9603188.9823,3389778.0143 9603091.3368,3389730.9982 9603043.4824,3389589.5544 9602900.9382,3389448.2619 9602800.4935,3389305.7586 9602755.5112,3389213.4145 9602612.7312,3389213.2725 9602517.5124,3389308.9456 9602425.0052,3389594.024 9602332.2601,3389783.3018 9602377.228,3389973.6372 9602382.8528,3390115.0277 9602382.788,3390306.6552 9602242.6485,3390448.9933 9602197.494,3390638.1043 9602292.7764,3390779.8079 9602390.7137,3390873.2844 9602486.0841,3391062.5724 9602531.0232,3391252.6568 9602440.7388,3391680.3371 9602301.0818,3391775.8896 9602255.9212,3391777.0861 9602113.1297,3391635.8493 9601970.475,3391636.8038 9601827.8683,3391685.7365 9601732.3969,3391686.8455 9601592.5923,3391545.4633 9601447.1494,3391404.4265 9601399.6928,3391167.008 9601349.2433,3391071.8089 9601302.4547,3391026.9393 9601159.1877,3391028.1294 9601016.4327,3390981.195 9600921.249,3390934.4226 9600921.2625,3390839.9129 9600825.9541,3390840.8024 9600730.7194,3391078.1944 9600688.7763,3391079.1605 9600686.6147,3391126.0126 9600591.2289,3391175.0202 9600448.4304,3391270.8748 9600355.7622,3391317.3995 9600355.9255,3391409.827 9600641.1893,3391553.5173 9600596.468,3391697.2361 9600310.891,3392032.0481 9599983.0367,3392127.8744 9599792.8824,3392130.1852 9599602.7594,3392036.6242 9599364.9255,3392038.6149 9599319.8194,3391849.6158 9599079.799,3391851.8443 9598844.6586,3391997.6752 9598463.7382,3392142.4782 9598183.9562,3392144.6326 9597898.7065,3392003.459 9597756.1436,3391861.7455 9597705.6207,3391862.9213 9597562.9355,3392006.3848 9597423.0759,3391960.9493 9597137.7656,3392199.1107 9597000.627,3392388.3708 9597095.6201,3392435.1224 9597095.5982,3392436.5321 9596908.3834,3392437.4947 9596858.225,3392343.4828 9596762.6451,3392341.899 9596760.8949,3392298.1665 9596667.804,3392060.0881 9596665.2583,3391966.7267 9596572.1144,3391965.1428 9596570.364,3391920.9158 9596332.2021,3391826.2201 9596237.1319,3391590.2387 9596142.155,3391496.9839 9596044.5797,3391545.8892 9595904.831,3391736.3 9595764.8274,3391736.9304 9595762.1849,3391785.0994 9595526.9989,3391834.1396 9595336.9869,3391976.6714 9595244.359,3392309.5509 9595199.3671,3392449.7131 9595294.5676,3392591.0792 9595436.908,3392731.5986 9595630.0451,3392826.0485 9595677.2854,3393063.3992 9595680.3502,3393158.8198 9595489.818,3393160.1086 9595445.2451,3393018.8026 9595299.9548,3392877.0969 9595157.1427,3392880.6372 9594874.6183,3392880.5483 9594824.5147,3392928.6196 9594684.6438,3393024.2763 9594493.9615,3393026.0202 9594493.4124,3393215.462 9594402.0563,3393452.7371 9594357.1232,3393641.9993 9594312.4173,3393737.9187 9594217.5026,3393881.3277 9593982.4084,3393836.3802 9593842.265,3393835.2849 9593840.1586,3393695.4766 9593602.2249,3393507.5236 9593409.7105,3393556.1976 9593219.2493,3393650.9253 9593174.6473,3393888.1643 9593129.7091,3394030.6675 9593085.0322,3394269.056 9592897.4789,3394269.9886 9592847.3625,3394508.121 9592659.9872,3394698.4116 9592519.9789,3394887.7965 9592522.3846,3395171.8794 9592570.3272,3395266.2568 9592525.2286,3395314.1039 9592477.8425,3394608.1828 9591997.2114,3394420.1428 9591759.771,3394469.3357 9591477.3952,3394519.5237 9591382.5163,3394945.8352 9591147.5259,3395325.1768 9591105.3391,3396364.8225 9591305.845,3396601.079 9591305.8545,3396743.3622 9591258.3629,3396791.6904 9591258.592,3397219.0247 9590976.1627,3397646.4793 9590791.7525,3398262.0722 9590606.8859,3398830.9988 9590614.6373,3398974.5836 9590519.6112,3399117.1682 9590377.3319,3399451.8896 9589907.449,3399642.441 9589764.9043,3399690.5357 9589765.2813,3400020.9341 9589766.6874,3400115.727 9589675.404,3400068.7268 9589627.7002,3399975.1391 9589482.5574,3400023.3726 9589390.5047,3400072.1685 9589247.8803,3400213.5271 9589203.1614,3400545.1098 9589253.0969,3400639.8433 9589205.468,3400972.7811 9588970.8679,3401068.4639 9588783.6843,3400928.3402 9588641.4191,3400882.6325 9588403.7806,3401118.5654 9588403.8381,3401355.7713 9588403.6825,3401686.5142 9588361.8393,3401734.266 9588361.723,3402159.5685 9588411.9173,3402301.7581 9588411.614,3402585.8591 9588366.8561,3402916.7105 9588417.212,3403060.0665 9588277.175,3403249.1446 9588232.2851,3403437.4892 9588277.3555,3403674.5415 9588232.1643,3403865.0903 9588090.2342,3404669.8206 9588002.9921,3404859.2001 9588005.8248,3405236.67 9588195.6656,3405425.7374 9588197.9901,3405662.705 9588103.346,3405851.9318 9588150.6282,3406040.2727 9588200.7398,3406277.1523 9588250.8552,3406514.3559 9588156.0065,3407699.9037 9587694.3296,3407746.6039 9587694.2202,3407889.1841 9587644.0692,3408078.3299 9587694.2671,3408221.0688 9587646.9015,3408458.2339 9587504.7306,3408599.5399 9587507.1371,3408740.7994 9587601.9446,3408786.4765 9587839.691,3408927.7434 9587934.4996,3409165.0887 9587842.3557,3409260.7879 9587794.6076,3409450.9188 9587512.378,3409502.1606 9586945.2718,3409548.8504 9586897.8822,3409643.6066 9586898.094,3409738.4148 9586992.8173,3409831.7089 9587087.9272,3409974.2118 9587087.971,3410068.8826 9586947.8654,3410164.8925 9586853.3242,3410400.7014 9586995.734,3410495.2915 9586950.9623,3410448.6572 9586808.4813,3410212.6379 9586713.5103,3410118.98 9586570.675,3410166.8988 9586428.557,3410215.8856 9586241.292,3410262.5778 9586241.1681,3410308.3085 9586478.8462,3410355.1978 9586570.9463,3410449.5754 9586615.7908,3410545.2173 9586478.6025,3410640.2002 9586431.3572,3410686.6811 9586478.6626,3410733.5109 9586573.7165,3410733.3305 9586668.4035,3410828.084 9586668.6016,3410970.6744 9586433.6249,3411065.4254 9586433.8203,3411302.4973 9586389.0651,3411444.9531 9586341.8312,3411492.738 9586199.0638,3411635.4308 9586012.0007,3411542.7513 9585774.6424,3411542.7948 9585632.0602,3411590.7024 9585537.2131,3411827.7656 9585539.7087,3411873.7417 9585729.927,3411920.2327 9585916.8642,3411966.8984 9585966.9359,3412012.4944 9586201.8183,3412107.2393 9586299.4742,3412201.8667 9586344.1176,3412296.4216 9586299.3428,3412439.1205 9586062.0569,3412581.3868 9585969.8377,3412676.1328 9585970.0143,3412817.4119 9586064.7304,3412913.2518 9586019.7283,3412913.0461 9585969.6879,3413056.7516 9585639.9946,3413199.4024 9585545.2954,3413436.2536 9585405.3317,3413720.3371 9585408.1103,3413909.4997 9585407.9418,3414145.655 9585458.3184,3414334.8321 9585458.1591,3414477.2745 9585410.8645,3414762.5139 9585083.9494,3414856.9332 9585083.6064,3415093.07 9585179.0672,3415186.1602 9585274.2703,3415187.4109 9585275.5328,3415279.8337 9585463.6213,3415374.4449 9585558.4386,3415515.6891 9585605.855,3415610.4499 9585605.9839,3415798.5964 9585748.3961,3415893.1959 9585893.4297,3416034.6623 9586035.9986,3416128.0964 9586077.8476,3416223.0069 9586130.9797,3416317.4352 9586223.0323,3416458.7143 9586270.4231,3416648.0139 9586225.7161,3416885.0508 9586180.7997,3416979.6216 9586228.3569,3417121.0813 9586228.3055,3417310.4098 9586326.1904,3417451.8712 9586326.1334,3417594.1302 9586230.8812,3418214.4826 9585194.9764,3418214.4895 9585144.7629,3418262.1485 9585052.1926,3418263.6344 9584862.6405,3418122.169 9584720.1203,3417885.9588 9584577.4994,3417791.5039 9584435.3058,3417839.1629 9584387.856,3418028.4747 9584340.1739,3418359.4229 9584533.0913,3418689.8109 9584675.4894,3419161.8102 9584820.5799,3419349.9984 9584962.8944,3419444.6489 9585057.658,3419396.5874 9585102.5107,3419065.0392 9585150.1682,3418734.2411 9585289.6749,3418495.9268 9585476.7783,3418353.5749 9585666.7236,3418305.401 9585856.4678,3418256.6419 9586186.3754,3418067.9626 9586235.0362,3417923.949 9586421.1072,3418113.1919 9586613.6628,3418301.0491 9586800.6951,3418490.2557 9586850.6315,3418821.0124 9586850.9311,3418914.6461 9586995.9822,3418915.4974 9587038.3009,3418915.3441 9587040.5973,3418961.2999 9587278.2677,3418914.5697 9587420.4111,3418771.0179 9587465.6952,3418676.312 9587512.8631,3418627.8747 9587654.078,3418437.9478 9587750.242,3418012.7878 9587747.3376,3417870.2548 9587792.5782,3417727.6882 9587934.6523,3417726.686 9588077.3054,3417726.7573 9588079.4368,3417632.2482 9588312.0663,3417488.5575 9588502.2818,3417299.0397 9588549.3335,3417204.127 9588499.8124,3417158.9121 9588311.8025,3417111.1608 9588312.0093,3417016.3367 9588214.3837,3416875.0225 9588166.9895,3416780.5204 9588309.3297,3416636.8946 9588639.2277,3416587.9019 9588971.5528,3416633.5059 9589301.2464,3416680.1922 9589396.4694,3416869.6658 9589491.4378,3416963.0659 9589586.4998,3417009.1113 9589729.524,3417009.6509 9589731.3111,3417008.4678 9589871.2417,3416960.6618 9590013.4556,3417054.2751 9590203.7532,3417338.1639 9590346.4699,3417479.3917 9590488.623,3417573.0029 9590678.9411,3417571.6752 9590821.1883,3417571.7444 9590868.4706,3417570.9757 9591056.1884,3417807.6032 9591153.6182,3417853.0909 9591341.5212,3418042.6198 9591391.3347,3418137.8804 9591342.3174,3418139.6221 9591341.7632,3418281.0398 9591061.3945,3418518.019 9591013.6213,3418707.4164 9591013.9873,3418707.305 9591108.7481,3418516.8739 9591203.8202,3418517.1153 9591299.0506,3418421.4457 9591581.438,3418229.9103 9591863.7684,3418324.2275 9591961.1152,3418371.0589 9592196.1327,3418086.0098 9592336.093,3417517.265 9592475.8547,3417326.8396 9592618.2252,3417136.5056 9592761.2216,3416850.3878 9593278.4867,3416802.6739 9593325.9904,3416754.4194 9593465.6732,3416517.5819 9593608.6734,3416280.2273 9593703.24,3416184.7787 9593843.4163,3416088.8311 9594128.1913,3415946.6388 9594268.5308,3415755.9252 9594360.8009,3415472.1376 9594313.2189,3415281.936 9594265.9685,3415093.8518 9594265.9606,3414951.1029 9594310.532,3414951.139 9594357.8516,3415187.1568 9594548.4079,3415186.0327 9594690.5539,3414996.6656 9594690.7524,3414854.4702 9594735.6402,3414853.2434 9594925.939,3414994.5053 9595068.2281,3415184.0293 9595116.0009,3415469.0277 9595073.847,3415658.1783 9595073.8029,3415751.4742 9595120.9827,3415799.456 9595216.0807,3415845.0221 9595498.744,3415939.8717 9595549.1565,3416082.2906 9595498.9854,3416176.8057 9595548.914,3416175.5746 9595596.4509,3416223.5825 9595641.2647,3416222.6017 9595876.6053,3416315.8914 9595974.0742,3416838.1934 9595932.0952,3417026.2267 9596119.4049,3417262.2938 9596217.4314,3417734.1563 9596740.1864,3417685.0314 9596882.7667,3417542.8217 9596977.999,3417400.4452 9597070.4356,3417398.7948 9597071.6508,3417352.1331 9597117.6666,3417304.4463 9597257.7295,3417446.9502 9597355.4345,3417777.3582 9597402.9809,3417824.3449 9597498.1279,3418153.6277 9598021.0471,3418249.3851 9598068.6258,3418626.9181 9598116.4537,3418769.4512 9598214.1474,3418768.3101 9598309.0351,3418767.1696 9598499.4313,3419099.0735 9598594.7176,3419193.7285 9598499.4757,3419338.2262 9598169.2059,3419769.2275 9597081.1175,3419912.5321 9596845.7861,3420007.1589 9596750.5585,3420055.2747 9596750.8292,3420292.2513 9596608.3092,3420623.9291 9596468.1692,3420766.6064 9596468.0105,3420861.2519 9596518.5524,3420954.6678 9596607.9088,3420954.8328 9596610.7033,3420954.634 9596848.5123,3420902.5486 9597987.1002,3420995.9303 9598129.7417,3421090.2491 9598129.5053,3421185.9913 9597939.3622,3421281.9841 9597799.3472,3421237.527 9596996.5461,3421238.1672 9596993.887,3421286.5638 9596803.659,3421524.448 9596518.255,3421666.6979 9596378.4203,3421762.6515 9596188.1383,3421525.6689 9596093.0669,3421479.2291 9595998.2617,3421481.3741 9595430.3131,3421623.8509 9595335.514,3422191.5015 9595388.0208,3422997.5257 9595200.6037,3423045.4081 9595201.0227,3423471.5254 9595105.5465,3423945.9823 9595108.5384,3424180.825 9595108.1384,3424276.6452 9595251.09,3424228.8707 9595396.4155,3424464.6789 9595538.9364,3424370.1738 9595631.2394,3424037.2229 9595771.0648,3423799.0832 9596386.3535,3423560.5566 9596719.0184,3423464.9926 9597001.683,3423511.7964 9597096.9711,3423557.4958 9597477.4547,3423651.7805 9597617.2303,3423793.3134 9597714.8734,3424030.4186 9597715.0496,3424125.0092 9597619.7623,3424220.891 9597477.6042,3424315.4274 9597477.1647,3424456.8931 9597717.7986,3424646.1017 9597717.5461,3424693.7967 9597669.9666,3424740.442 9597622.4315,3424741.8956 9597479.8658,3424647.1849 9597337.4905,3424647.1496 9597292.2989,3424885.6754 9597149.905,3424932.3357 9597102.3584,3425169.243 9596819.6612,3425456.5705 9596157.0051,3425457.5799 9596111.7765,3425458.6485 9596110.2588,3425648.0224 9595871.3726,3425790.4524 9595636.4899,3425744.4141 9595496.1755,3425743.5357 9595493.907,3425697.0117 9595353.9546,3425839.6983 9595164.1001,3426076.7786 9595021.2644,3426171.3999 9595021.45,3426360.3381 9595166.4232,3426455.1857 9595166.4399,3426738.8413 9595119.0089,3426975.9771 9595166.4243,3427165.2234 9595261.5768,3427306.7575 9595359.1264,3427354.625 9595454.3394,3427401.2812 9595641.6125,3427637.3796 9595737.1982,3427637.3855 9595832.0088,3427588.192 9596069.624,3427114.2144 9596399.7671,3427019.4847 9596492.292,3427160.9341 9596542.5266,3427397.8915 9596447.1378,3427539.7565 9596493.4128,3427541.7038 9596494.1636,3427635.048 9596637.5254,3427539.3436 9596875.2112,3427632.8744 9597062.9441,3427632.5857 9597112.7619,3428009.2305 9597966.2396,3428150.4079 9598061.1969,3428529.021 9598251.5502,3428670.435 9598251.478,3428813.46 9598108.6581,3428956.5328 9597826.4367,3429053.4143 9597210.6072,3429196.0575 9597020.6438,3429242.9684 9596880.2153,3429242.8943 9596878.0813,3429244.909 9596737.9785,3429245.0189 9596690.4769,3429246.0911 9596170.3005,3429249.4222 9595412.1324,3429156.0111 9594889.5819,3429155.7275 9594844.5719,3428967.6605 9594366.4364,3429063.4837 9594131.5981,3429111.3016 9594086.8105,3429207.1859 9594086.75,3429252.6018 9594274.1868,3429534.2968 9595031.818,3429675.9567 9595226.2591,3429864.7794 9595272.084,3430244.5491 9595272.4333,3430480.5754 9595367.2715,3430810.1164 9595652.7363,3431095.006 9595702.7223,3431568.1536 9595655.1937,3431993.3152 9595702.9212,3432231.4139 9595797.665,3432420.7162 9595990.4909,3432560.9379 9596130.5743,3432797.9875 9596228.2855,3433035.5246 9596276.0129,3433367.2251 9596276.0224,3433508.4339 9596370.8641,3433745.4803 9596561.2517,3434265.2522 9596798.7894,3434313.3687 9596798.9763,3434739.6612 9596944.3226,3435354.129 9597181.8891,3435448.6985 9597229.4719,3435448.5472 9597324.4828,3435306.1547 9597321.7578,3434643.8205 9597274.3175,3434075.0689 9597129.1737,3433649.6057 9596891.2173,3433224.4111 9596510.7583,3433129.8725 9596560.9353,3433080.8176 9596891.2991,3432891.6914 9596986.5736,3432843.7682 9597078.9197,3432985.0757 9597553.9635,3433267.9218 9598029.5315,3433457.2307 9598029.7349,3433599.4961 9598217.2756,3433693.2601 9598362.5712,3433787.9183 9598362.6687,3433883.4662 9598124.8593,3433978.1217 9598124.9544,3434120.4167 9598219.7648,3434214.3576 9598362.74,3434308.9338 9598410.3443,3434404.3669 9598362.4093,3434404.2998 9598174.8415,3434357.6804 9598124.6316,3434357.6143 9597937.0701,3434264.3235 9597839.6144,3434168.7235 9597792.0451,3433836.8799 9597839.5771,3433742.3126 9597791.9714,3433648.6591 9597604.2752,3433743.1536 9597366.5388,3433886.0234 9597319.3051,3434027.1786 9597319.3199,3434311.1162 9597461.9354,3434596.1739 9597557.0048,3434926.404 9597606.9845,3435447.8664 9597702.4047,3435496.4562 9597702.2381,3435779.3819 9597844.8561,3436016.683 9597940.1835,3436252.5018 9597940.2299,3436394.9409 9597939.9917,3436536.4783 9598082.7945,3436632.0945 9598130.3379,3436868.0052 9598082.8418,3436915.9265 9597987.5117,3436869.0902 9597942.5791,3436677.7727 9597895.0231,3436442.7739 9597657.0986,3436301.4125 9597511.9885,3436207.0051 9597467.2081,3436253.6755 9597372.0885,3436490.5276 9597372.0824,3436679.9092 9597467.0576,3436774.5575 9597467.1204,3437106.2562 9597612.3078,3437390.0762 9597707.4938,3437721.9172 9597752.5343,3438005.9379 9597850.4815,3438195.9357 9597850.0623,3438243.0279 9597850.258,3438621.4639 9597992.9589,3439095.686 9598088.1429,3439284.942 9598135.7221,3439236.9085 9598040.5567,3439048.8154 9597897.9108,3438811.5388 9597755.1636,3438385.5513 9597612.6282,3438101.602 9597422.6449,3438006.9903 9597282.3801,3437912.8465 9596996.478,3437912.0588 9596994.8706,3437770.8 9596711.7275,3437629.5385 9596616.9549,3437535.0277 9596521.9009,3437441.9333 9596381.2691,3437440.7143 9596378.5209,3437393.6293 9596284.1492,3437393.5457 9596238.9505,3437251.0413 9596048.7485,3437061.7515 9595906.3096,3436636.5012 9595761.0742,3436447.4526 9595618.4605,3436399.5828 9595573.5861,3436352.715 9595430.8993,3436447.481 9595335.9806,3436684.4835 9595193.4933,3436922.6378 9595150.8644,3437064.1134 9595151.2933,3437064.168 9595148.3335,3437064.0458 9595098.0629,3437063.9874 9594863.0928,3437112.0013 9594768.4516,3437206.3485 9594720.5407,3437587.2062 9594673.014,3437633.0079 9594673.4257,3437916.7555 9594628.4028,3438059.4511 9594535.9406,3438391.0266 9594248.2169,3438628.3806 9594108.3085,3438438.7545 9593965.4744,3438250.9344 9593825.6859,3438250.6129 9593635.446,3438535.9292 9593255.7076,3438535.9878 9593208.2294,3438724.9682 9593112.8751,3439387.3685 9593020.3225,3439530.0814 9592975.9781,3439813.8426 9592830.857,3440004.1206 9592643.2757,3440193.5049 9592690.617,3440288.0518 9592738.1136,3440429.472 9592975.6954,3440761.2713 9593070.8515,3441139.7524 9593400.7741,3441186.2584 9593400.6392,3441470.2796 9593543.5861,3441707.1687 9593638.2234,3442038.2076 9593688.6671,3442512.0072 9593780.8095,3442795.8974 9593926.0311,3442937.6116 9593878.7089,3443222.5517 9593783.6646,3443411.7988 9593736.1551,3443838.0735 9593783.8652,3443884.7249 9593833.99,3444405.6679 9593878.6909,3444689.4697 9593926.0892,3444926.7836 9593834.146,3445210.6301 9593786.5614,3445398.7954 9593834.0029,3445588.944 9594071.3066,3445683.6247 9594306.3756,3445778.2197 9594353.8192,3445826.341 9594306.4527,3445921.0253 9594116.47,3446109.8755 9594071.3755,3446394.0461 9594071.7116,3446488.4547 9594163.8369,3446725.6896 9594309.2613,3446820.404 9594544.325,3446725.7614 9594639.3534,3446536.2178 9594544.0037,3446299.4282 9594591.7885,3446156.6556 9594686.709,3446062.3765 9594826.7408,3446016.6182 9595016.9811,3446062.0166 9595206.8286,3446014.1762 9595489.1996,3445824.9969 9595724.4447,3445610.8529 9595834.2904,3445445.5419 9595917.417,3445067.2189 9595964.8924,3444829.7958 9596059.8278,3444733.8689 9596199.605,3444734.1824 9596247.5833,3444640.7216 9596437.3961,3444544.7101 9596627.6397,3444213.1282 9597053.1077,3443975.8617 9597195.3713,3443692.2856 9597240.4553,3443217.6886 9597240.085,3443076.4492 9597335.2543,3442886.0562 9597430.3193,3442839.5285 9597430.464,3442649.0593 9597620.5397,3442648.9556 9597950.8014,3442554.2293 9598045.8277,3442412.0133 9598046.0073,3442317.4338 9597950.9892,3442174.6186 9597998.3611,3442032.1531 9598090.7605,3441748.4121 9598090.5859,3441464.4466 9598090.5679,3441321.962 9598138.4057,3441227.4436 9598233.2525,3441416.4898 9598280.9497,3441795.0785 9598328.4863,3441889.6964 9598376.0024,3441985.6042 9598518.9921,3442032.2539 9598848.9759,3442885.0747 9599229.7077,3443168.7402 9599229.196,3443595.0185 9599089.3642,3443643.148 9599089.4958,3443879.0171 9599089.3079,3444069.3799 9599089.2321,3444211.8587 9598996.7699,3444353.121 9598801.4445,3444590.4015 9598759.2634,3444922.2923 9598759.4634,3445064.565 9598664.2097,3445396.4089 9598429.1208,3445491.1081 9598334.0566,3445633.3288 9598333.8233,3446154.5189 9598333.8893,3446249.2086 9598238.8177,3446297.1223 9598239.1193,3446344.9553 9598096.2206,3446390.9778 9597958.3197,3446390.8994 9597956.1856,3446391.5333 9597433.2477,3446487.2447 9597385.6443,3446723.3995 9597338.3621,3446865.8343 9597385.433,3447150.8876 9597528.3959,3447292.0662 9597433.1675,3447481.3803 9597338.033,3447765.5809 9596913.082,3447955.6025 9596579.9224,3447955.8014 9596535.2018,3448287.6387 9596202.7695,3448380.9192 9595822.2896,3448572.4538 9595777.3455,3448619.2052 9595634.517,3448572.469 9595539.8731,3448667.101 9595444.8108,3448761.7291 9595397.2414,3448998.8632 9595492.3379,3449093.49 9595444.7643,3449234.8559 9595349.35,3449377.3787 9595349.5507,3449519.8923 9595444.7149,3449519.8945 9595492.2083,3449708.9078 9595539.7083,3449851.6551 9595444.7141,3450040.902 9595397.0397,3450276.7773 9595492.3134,3450419.5134 9595492.3099,3450561.6709 9595397.0046,3450628.7374 9595286.5626,3450703.3317 9595159.5704,3450846.8674 9595064.6965,3450988.1888 9595114.6878,3451082.8328 9595209.5669,3451271.8639 9595634.8402,3451366.4796 9595587.2392,3451603.836 9595492.1061,3451745.2641 9595542.7474,3451887.8412 9595587.4188,3451934.3743 9595634.7167,3452030.1783 9595730.204,3452219.4709 9595824.9626,3452456.4304 9595967.6412,3452597.7645 9596060.0143,3452740.2857 9596060.1371,3452929.682 9595920.1779,3453356.0611 9595397.3022,3453545.4083 9595209.8504,3453829.3444 9595064.6751,3453878.3283 9595159.8466,3453734.5104 9595540.0785,3453782.1348 9595682.3201,3453924.7028 9595777.412,3454160.8189 9595777.4065,3454208.7056 9595777.6426,3454443.5893 9595822.4068,3454634.9711 9595967.4846,3454776.4607 9595967.6058,3454966.7872 9595774.9778,3455061.4168 9595774.8283,3455297.2175 9596012.6317,3455393.2021 9595965.4126,3455582.3583 9595822.6141,3455771.5817 9595774.8043,3456055.5658 9595774.9844,3456198.0822 9595775.0465,3456576.591 9595632.5463,3456765.7759 9595537.2398,3456860.3172 9595442.0825,3457002.8717 9595489.6239,3457049.7084 9595489.8917,3457240.1951 9595585.142,3457381.2942 9595537.2448,3457665.23 9595252.232,3457618.3834 9595064.7963,3457570.4072 9594969.6,3457333.4623 9594922.0825,3457096.4543 9594541.9612,3457001.7948 9594494.6475,3456764.5833 9594544.5563,3456291.4109 9594779.3916,3456102.398 9594779.5516,3455913.0726 9594544.5539,3455913.0351 9594497.067,3455911.9244 9594494.9688,3455865.0808 9594401.8683,3455865.0436 9594354.3826,3456102.2388 9594164.1656,3456338.3273 9593976.9546,3456575.5256 9593927.0623,3456907.2728 9593974.2576,3457001.7267 9594069.2329,3457238.6725 9594401.8451,3457428.0038 9594589.3058,3457665.5028 9594637.1311,3457900.9417 9594496.3903,3457902.343 9594495.3479,3458138.4775 9594209.3198,3458138.6046 9594164.6281,3458279.697 9593926.6246,3458469.0988 9593784.2797,3458659.4579 9593784.5094,3459036.777 9593781.6355,3459273.989 9593736.7581,3459416.3578 9593641.8016,3459794.7072 9593309.1113,3459984.1302 9593214.2219,3460268.0485 9593214.2414,3460552.0111 9593261.7429,3460646.2561 9593306.3953,3461072.8244 9593258.7425,3461451.3192 9593118.8593,3461829.6613 9592884.0094,3462065.7961 9592691.3949,3462444.2869 9592593.8592,3462824.2228 9592641.4711,3463059.9141 9592593.9287,3463249.1067 9592496.1811,3463343.7214 9592403.7818,3463342.687 9592118.6407,3462964.3497 9591931.6878,3462964.3442 9591789.1146,3463105.7572 9591646.521,3463010.9942 9591456.0705,3462632.4855 9591648.7176,3462396.5563 9591696.4357,3462302.1175 9591791.6063,3462348.5178 9591886.4688,3462491.3516 9592026.5167,3462585.6962 9592169.0385,3462585.648 9592261.2029,3462444.4901 9592311.4669,3462255.2117 9592311.2764,3462112.6091 9592216.3769,3461923.2434 9592168.7215,3461733.9918 9592218.9487,3461544.926 9592263.9141,3461402.4967 9592454.0149,3461260.8331 9592551.4209,3461119.693 9592644.0467,3460929.1632 9592501.4534,3460740.1227 9592551.4932,3460456.065 9592599.1306,3460410.612 9592599.3265,3460029.8859 9592551.4705,3459699.323 9592599.3241,3459320.6664 9592741.3957,3459131.6402 9592884.2182,3458942.1894 9593169.1722,3458705.1155 9593169.3509,3458659.535 9593214.2227,3458421.1288 9593311.8784,3458184.101 9593359.5207,3457853.4214 9593169.0579,3456906.064 9592981.7946,3456669.2381 9592981.7337,3456431.6692 9592791.4639,3456195.7999 9592696.4048,3455910.8694 9592696.2781,3455864.3568 9592746.9306,3455627.1903 9592839.1778,3455437.7623 9592981.4375,3455059.1273 9593123.9978,3454918.0548 9593171.8384,3454634.0662 9593409.1917,3454207.4404 9593409.0484,3454159.9328 9593456.7713,3454018.5032 9593456.6256,3453686.5115 9593691.5668,3453591.9789 9593834.1455,3453592.0531 9593976.5935,3453875.7169 9594259.1416,3453923.816 9594309.6436,3453781.1555 9594354.2483,3453639.8617 9594309.4033,3453545.4423 9594214.3857,3453354.8074 9594166.7323,3453118.8903 9593976.5988,3452928.4359 9593884.2333,3452739.4613 9593884.3014,3452455.4596 9593929.3697,3452218.416 9594071.8098,3452076.9763 9594071.6303,3452029.1942 9594072.0419,3452028.84 9594024.0785,3452029.1776 9593789.2774,3452123.7522 9593694.1988,3452266.1992 9593599.3677,3452312.8951 9593504.0422,3452312.8598 9593409.083,3452455.5061 9593219.1152,3452692.5618 9593171.6404,3453117.8913 9592838.9342,3453118.0003 9592699.3014,3452976.5193 9592556.7152,3452834.0358 9592509.1235,3452739.4622 9592556.7208,3452692.4443 9592699.0116,3452595.7901 9592746.6904,3452360.9402 9592509.0657,3452171.3585 9592036.2425,3452170.4734 9592033.9777,3451839.7122 9591988.8678,3451697.5833 9591989.1898,3451697.6118 9592084.13,3451697.4654 9592176.2793,3451886.771 9592271.6576,3451934.4905 9592321.6912,3452076.8049 9592461.4643,3452030.1604 9592699.1967,3451934.5506 9592746.8197,3451745.2444 9592746.399,3451650.5012 9592838.6681,3451698.589 9592984.1389,3451840.0745 9593126.742,3451933.2895 9593265.0117,3451934.3037 9593266.4504,3451934.704 9593456.8461,3451793.0611 9593551.8019,3451698.4701 9593599.3938,3451650.6236 9593694.1051,3451650.4085 9593789.2487,3451698.3905 9593976.4702,3451698.1947 9594071.6036,3451698.5471 9594119.5674,3451366.8975 9594357.0677,3451317.9766 9594494.229,3451224.0451 9594591.7412,3451035.0468 9594639.271,3450892.3152 9594591.798,3450751.0553 9594401.4821,3450656.59 9594261.918,3450656.5645 9594119.4642,3450703.2635 9593929.1743,3450628.5244 9593818.0838,3450608.4847 9593789.1257,3450324.8857 9593789.2495,3450278.0393 9593646.4988,3450228.8735 9593504.0126,3450229.0738 9593171.4802,3450229.2607 9593126.7811,3450228.8921 9592888.9186,3450182.3657 9592699.2043,3449993.0793 9592698.7292,3449993.06 9592508.8334,3450229.0553 9592414.01,3450561.9497 9592271.3496,3450628.6431 9592181.6671,3450703.1799 9592083.9701,3450628.6714 9591933.3081,3450608.801 9591894.0097,3450561.9575 9591846.2499,3450278.1921 9591799.07,3450041.1559 9591798.9969,3449709.3128 9591846.6405,3449519.8043 9591893.8036,3449330.7792 9592034.083,3449283.9616 9592033.7708,3448904.1641 9592321.4468,3448480.4 9592271.4514,3448241.9377 9592226.367,3448100.5437 9591941.3101,3448100.572 9591703.9671,3448194.7043 9591420.915,3448194.6255 9591418.7829,3448195.2767 9591326.2968,3448100.528 9591276.1098,3447958.0293 9591326.3295,3447626.5215 9591608.7523,3447484.8795 9591608.6734,3447296.7601 9591608.7481,3447246.5762 9591608.7328,3447058.6811 9591608.6357,3446681.3806 9591656.2759,3445921.924 9591988.7245,3445543.34 9592128.5102,3445306.5903 9592223.7212,3445164.9381 9592223.6022,3445117.4091 9592223.7928,3445022.8186 9592223.8271,3444597.4751 9592081.3482,3444454.7771 9592081.2637,3444217.8171 9592221.1212,3444028.636 9592221.1674,3443839.3772 9592081.1093,3443792.5114 9592031.1634,3443649.9827 9591890.7882,3443366.1135 9591793.1067,3443035.5025 9591748.3011,3442655.9243 9591701.0793,3442561.3758 9591653.6175,3442561.4285 9591650.6589,3442562.5329 9591511.1697,3442703.9066 9591415.9219,3442609.1538 9591321.177,3442513.2428 9591273.2702,3442419.7662 9591178.3122,3442420.8884 9591083.3376,3442420.982 9590753.4121,3442562.4942 9590611.3623,3442658.3886 9590563.7028,3442894.0395 9590516.0975,3443083.4738 9590376.4775,3443131.4156 9590326.3616,3443320.4858 9590186.2739,3443557.8433 9589996.5346,3443841.4637 9589856.4242,3444173.3084 9589761.5643,3444504.0467 9589761.6477,3444883.3063 9589808.9503,3445498.056 9589856.8273,3445544.767 9589856.5012,3445829.8278 9589904.2654,3446018.9407 9589951.6331,3446160.5061 9590094.107,3446444.1335 9590331.2506,3446633.4049 9590376.3086,3446870.8305 9590331.6334,3447011.9127 9590236.4932,3447296.9107 9589906.8649,3447297.0222 9589619.179,3447343.7201 9589431.9878,3447486.0449 9589289.2,3447675.4991 9589289.553,3447722.2068 9589289.2145,3447911.5357 9589244.4276,3448006.1058 9589149.4583,3448196.4815 9588772.4688,3448243.2663 9588484.4878,3448148.7277 9588389.6666,3448054.1912 9588294.8455,3447911.5562 9588294.8215,3447391.6245 9588344.7429,3446966.3928 9588344.8334,3446823.7823 9588249.9006,3446778.3521 9588250.0203,3446398.8435 9588107.4492,3446256.0409 9588057.143,3446020.2161 9588152.4525,3445167.5421 9588484.663,3444931.211 9588481.7976,3444695.3114 9588389.5877,3444411.7445 9588247.3371,3444316.9664 9588057.1082,3444363.721 9587869.9756,3444554.1286 9587774.8251,3444790.0059 9587775.1047,3445073.9408 9587632.5044,3445357.6023 9587537.5169,3446068.0608 9587542.7512,3446209.6248 9587490.3274,3446257.348 9587350.6042,3446209.5406 9587255.4456,3445925.3713 9587255.2694,3445878.9166 9587207.9935,3445830.89 9587113.0009,3445973.5216 9587018.2022,3446162.6044 9586970.6747,3446162.4912 9586878.1006,3446068.1223 9586828.4149,3445926.6727 9586735.5703,3445644.0325 9586780.9544,3445216.4212 9586875.4242,3444885.794 9586875.3696,3444507.5451 9586685.9167,3444318.2016 9586590.6229,3444270.142 9586590.4955,3444080.8978 9586495.8571,3443844.7991 9586495.7178,3443371.9262 9586587.8796,3442236.3083 9586872.626,3442188.5845 9586872.9657,3441716.6491 9586967.96,3441337.9139 9586962.5454,3441148.6925 9586920.3427,3440959.6186 9586727.8018,3440723.4152 9586445.4686,3440676.6654 9586160.6992,3440676.9452 9585876.1226,3440724.663 9585498.8366,3440819.3345 9585169.1887,3441009.6766 9584884.6338,3440915.1822 9584697.2459,3440773.9125 9584599.9002,3440631.3107 9584647.1551,3440394.3252 9584884.5661,3440299.6705 9585166.7856,3440204.9114 9585403.8864,3440251.5626 9585923.4575,3440391.8239 9586397.8324,3440675.8042 9586727.9224,3440675.7108 9586822.7916,3440391.7831 9586962.2656,3439965.3859 9587107.2887,3439918.6896 9587107.5828,3439397.7535 9587200.042,3438639.6122 9587339.6689,3438403.6635 9587482.1878,3438356.7387 9587576.6732,3438403.4131 9587671.9284,3439065.7882 9587576.9963,3439397.6204 9587531.9317,3439823.151 9587577.1988,3440296.0183 9587817.1332,3440767.9237 9587817.092,3440815.99 9587817.2403,3441194.445 9587769.671,3441620.9202 9587769.6689,3441856.8344 9587819.6055,3442045.9967 9587724.727,3442377.8534 9587535.0889,3442613.8374 9587490.1227,3442945.5543 9587534.7054,3443040.0596 9587582.1352,3443086.8527 9587582.4831,3443608.1097 9587490.2625,3443749.0736 9587537.5488,3443938.4364 9587677.3662,3443984.0666 9587770.4926,3443985.1921 9587772.5767,3443985.3312 9587914.7359,3443512.3293 9588009.8812,3442659.2478 9588244.3085,3442376.5621 9588339.1787,3442282.0143 9588339.1811,3441571.783 9588621.5685,3440719.0579 9589046.5831,3440483.2599 9589236.4624,3440483.2122 9589283.9137,3439914.0636 9589613.3687,3439250.679 9589895.8045,3438872.0817 9589990.7404,3438636.1219 9590085.8625,3438588.2673 9590085.5353,3438446.9589 9590225.8535,3438351.1824 9590368.2173,3438397.4643 9590650.5585,3438303.1156 9590650.3487,3437972.4739 9590510.591,3437404.8999 9590273.3336,3437121.089 9590222.9148,3436837.156 9589940.6524,3436744.7715 9589747.9,3436743.6056 9589560.6078,3436602.3435 9589323.0774,3436460.725 9589180.6195,3436366.4344 9589228.4841,3436318.5141 9589275.595,3436270.687 9589323.3655,3435939.0826 9589700.6063,3435797.4911 9589655.8278,3435465.5228 9589510.4651,3435229.692 9589510.5756,3434897.9262 9589602.7568,3434614.0968 9589555.2129,3434427.2146 9589317.8765,3434140.9114 9589365.4788,3433999.5761 9589222.7976,3433906.1786 9588940.434,3433764.695 9588848.1766,3433716.828 9588842.7323,3433479.8295 9588795.5555,3433526.9626 9588655.7466,3433527.5984 9588653.0895,3433575.6203 9588465.9714,3433671.2757 9588370.4875,3433812.6407 9588278.3932,3433812.641 9588180.7137,3433813.1192 9588038.2173,3433813.8696 9587851.0589,3433719.273 9587756.2451,3433435.4926 9587708.6865,3433152.6267 9587613.7987,3433152.7149 9587566.3587,3433248.3431 9587141.4818,3433248.1943 9586996.5617,3433201.7009 9586809.3725,3433106.767 9586714.0994,3432776.5296 9586571.8989,3432681.603 9586476.6243,3432492.6609 9586477.0489,3432445.8396 9586569.2094,3432255.3819 9586806.8433,3432018.315 9586851.5506,3431687.4459 9586851.1407,3431546.2862 9586709.1273,3431404.7239 9586521.5123,3431310.0802 9586376.4799,3431215.554 9586376.3541,3431168.7623 9586424.0297,3431215.6206 9586613.8311,3431214.6316 9586756.6438,3431169.0108 9586851.5461,3431136.1748 9586880.171,3431118.5873 9586896.0759,3431073.1203 9586801.418,3431026.2954 9586519.0552,3430931.6085 9586328.8835,3430979.542 9586281.8243,3431122.0863 9586139.3862,3431075.4632 9586047.0523,3430885.9064 9586091.6131,3430554.272 9586139.0985,3430413.1606 9586091.7735,3430414.0052 9585807.0343,3430414.1085 9585759.6065,3430366.2611 9585664.5426,3430225.0542 9585664.6441,3429940.8151 9585849.0289,3429844.0872 9585849.7886,3429751.752 9585664.4656,3429657.0094 9585664.4872,3429562.5334 9585709.4731,3429468.0072 9585614.6387,3429374.512 9585519.7737,3429231.9235 9585519.423,3428994.6569 9585801.6496,3428758.915 9585706.8644,3428710.842 9585706.659,3428617.4809 9585564.3766,3428522.6867 9585424.5836,3428381.4125 9585374.452,3428191.0866 9585517.0789,3428096.3377 9585611.7693,3427955.0816 9585561.615,3427860.2796 9585421.8281,3427671.2419 9585469.5663,3427529.8573 9585561.5174,3427387.2599 9585609.2067,3427246.0539 9585609.2566,3427207.2819 9585570.1363,3427104.4664 9585463.9354,3426915.0893 9585416.5046,3426867.5976 9585416.589,3426583.4646 9585369.1531,3426442.718 9585275.6451,3426441.2411 9585274.5501,3426301.8586 9584941.9315,3426538.0984 9584897.2675,3426538.9404 9584754.6588,3426492.0707 9584612.3005,3426587.0507 9584517.4765,3426822.8396 9584425.0738,3427155.683 9584143.128,3427582.0239 9583953.0564,3427723.6059 9583860.9598,3427771.2068 9583813.4561,3427961.6145 9583528.781,3428531.6787 9582540.1827,3428484.8834 9582350.49,3427732.4605 9581683.5186,3427400.7014 9581591.3,3427353.0065 9581591.5525,3427164.9388 9581399.1387,3427163.7251 9581396.3948,3427195.5002 9581249.9506,3427212.6189 9581164.54,3427309.6345 9580598.0741,3427404.1205 9580455.5887,3427641.3296 9580313.3201,3428066.7121 9580221.4049,3428209.067 9580081.4541,3428305.0116 9579892.029,3428492.7843 9579797.1229,3428540.6964 9579702.0895,3428543.0547 9579562.8083,3428731.1546 9579420.3505,3428731.2671 9579372.9656,3428731.2293 9579327.8755,3428731.959 9579325.8815,3428779.2868 9579135.952,3428873.8063 9579043.6347,3429016.0433 9578996.1436,3429441.5219 9578996.4637,3429630.5932 9578951.5019,3430434.4947 9578527.5805,3430718.3344 9578435.1734,3430859.7248 9578292.93,3430955.5332 9578245.4722,3431096.6181 9578245.3582,3431144.6307 9578245.5631,3431332.7469 9578340.2559,3431475.048 9578342.8775,3431616.8884 9578248.3134,3431664.533 9578153.4482,3431712.4808 9577631.9018,3431854.9628 9577352.7768,3431950.4682 9576878.3771,3431951.5906 9576830.9781,3432093.309 9576596.786,3432235.5809 9576501.8897,3432519.4836 9576407.1533,3432660.72 9576312.2838,3432850.3212 9576125.6538,3433181.9751 9575983.2393,3433371.0475 9575890.8486,3433560.4367 9575701.4417,3433749.4791 9575603.967,3434032.3655 9575603.7737,3434221.7014 9575514.7993,3434316.1778 9575419.515,3434364.1948 9575277.7941,3434222.9867 9575182.7722,3433797.697 9575182.7013,3433419.134 9575324.8882,3433136.3843 9575464.6611,3432898.9742 9575653.8716,3432804.8055 9575604.1118,3432710.9124 9575461.7479,3432521.9529 9575511.8376,3432332.5434 9575603.7245,3432284.6774 9575698.7384,3432001.9384 9575648.5597,3431765.7757 9575698.5678,3431434.0389 9575790.7724,3431246.0231 9575790.657,3431198.3418 9575790.9456,3430915.501 9575693.5206,3430821.8061 9575553.9188,3430680.5725 9575269.7463,3430539.2649 9575127.4839,3430539.3027 9575222.0172,3430539.2462 9575224.9686,3430538.1175 9575361.8268,3430490.1675 9575598.7239,3430443.1974 9575598.484,3430350.175 9575411.8344,3430162.575 9575031.7034,3429877.9698 9575032.3177,3429877.6527 9575030.3696,3429832.4882 9574793.1433,3429880.2712 9574464.0455,3429974.8138 9574181.8967,3430022.7094 9574037.4546,3429929.2899 9573897.6962,3429741.1691 9573755.8494,3429835.6572 9573660.6546,3430118.5133 9573521.6766,3430166.4061 9573521.2286,3430213.0589 9573471.5192,3430214.2491 9573331.7471,3430073.5324 9572999.323,3430073.2341 9572997.3618,3430027.1582 9572765.9714,3429980.4887 9572529.2116,3430076.4399 9571963.2598,3430313.2934 9571489.6225,3430550.4422 9571065.9631,3430646.2052 9570831.7035,3430646.1748 9570689.2449,3430646.0339 9570642.098,3430647.589 9570405.4279,3430647.502 9570265.9272,3430742.1763 9570218.571,3430790.0616 9570266.0872,3431024.8653 9570502.7254,3431166.0471 9570502.4446,3431355.1702 9570407.8815,3431450.0285 9570363.2861,3431496.6864 9570408.0741,3431589.0444 9570597.2276,3431779.4298 9570599.8634,3431874.2696 9570550.1866,3432062.3934 9570647.5431,3432298.1349 9570552.6941,3432440.8832 9570458.1751,3432487.4299 9570363.4553,3432440.6722 9570268.5799,3432252.5533 9570268.653,3431968.553 9570318.4444,3431733.8567 9570123.9073,3431544.6426 9570078.9785,3431356.4389 9569842.1254,3431357.6334 9569652.9804,3431452.1475 9569607.911,3431592.5983 9569705.5551,3431734.89 9569652.8257,3431876.3903 9569750.4205,3432112.4439 9569794.9118,3432395.0644 9569797.7385,3432772.5455 9569987.1184,3433055.4338 9569989.7292,3433244.2635 9569896.7761,3433291.3826 9569845.2484,3433291.1784 9569563.323,3433245.3942 9569373.9614,3433057.649 9569184.7866,3432915.9398 9569092.46,3432726.8011 9569092.5895,3432396.08 9569326.6646,3432253.629 9569279.2162,3432113.6074 9569134.7521,3431926.5704 9568758.2626,3431831.962 9568663.863,3431737.2922 9568711.2355,3431642.7431 9568898.064,3431547.9275 9568850.3286,3431407.6303 9568661.0186,3431359.8901 9568521.8419,3431361.0335 9568474.4854,3431219.4614 9568424.2102,3430747.6473 9568329.9472,3430746.0419 9568329.6789,3430606.3893 9568329.5765,3430606.1851 9568424.1976,3430605.1882 9568566.6416,3430746.4103 9568803.2311,3430934.439 9568944.9551,3430934.7986 9569039.8981,3430839.9964 9569040.1125,3430369.0223 9568895.0328,3430085.33 9568895.1299,3429896.0277 9569034.8467,3429706.5261 9569131.8276,3429565.3481 9569132.0967,3429564.2473 9569130.0021,3429518.4624 9569034.4376,3429566.4109 9568892.2291,3429662.2792 9568753.1717,3429614.2324 9568608.4162,3429474.0715 9568371.7827,3429143.5136 9568184.8316,3428813.7562 9568087.3844,3428671.4584 9567992.5734,3428626.8668 9567758.8392,3428578.9539 9567661.2385,3428438.6804 9567569.302,3428296.5014 9567569.5797,3428155.0204 9567474.9013,3427920.104 9567377.2306,3427683.0263 9567424.9815,3427637.2646 9567377.3771,3427637.6198 9567235.467,3427685.2473 9567140.7735,3427685.1479 9567045.6909,3427591.6316 9566951.2343,3427449.1891 9566906.6659,3427214.2511 9566951.3766,3427025.0378 9566998.6749,3426789.1452 9566951.1063,3426647.6911 9566856.4098,3426554.0221 9566759.1614,3426648.9247 9566477.8387,3426932.6328 9566291.1413,3427027.5459 9566149.2493,3427028.2563 9566054.3147,3427028.378 9566007.0198,3426981.7058 9565817.7637,3427029.4262 9565536.3932,3427030.6133 9565300.2397,3427030.2043 9565297.6367,3426983.8519 9565110.3448,3427031.7628 9564971.1778,3427078.4607 9564923.6707,3427221.0521 9564876.6056,3427267.7484 9564829.0981,3427222.2429 9564592.5451,3427222.166 9564403.0939,3427270.0993 9564169.5584,3427459.473 9564122.108,3427552.8381 9564263.8111,3427599.3905 9564405.9171,3427598.5212 9564784.8366,3427645.253 9564876.7189,3427692.1709 9564971.3702,3427737.4556 9565302.5126,3427832.3176 9565397.3932,3427927.9988 9565350.0575,3427973.6486 9565302.5876,3427974.5815 9565113.0862,3427929.05 9564500.4159,3428024.2143 9564266.1198,3428024.943 9564264.13,3428119.423 9563888.0288,3428167.3204 9563843.2598,3428499.6638 9563041.2311,3428500.3923 9563039.2416,3428405.7343 9562947.168,3428217.4279 9562852.3012,3428076.1292 9562852.7097,3427981.5602 9562897.0529,3427793.3677 9562991.5715,3427698.6322 9562991.7495,3427462.6916 9562852.1475,3427274.4954 9562847.2014,3427182.298 9562752.587,3427039.6111 9562613.1803,3426898.3271 9562565.6529,3426851.4778 9562515.998,3426805.0099 9562423.9631,3426758.0728 9562279.2904,3426853.9227 9561764.4254,3426854.7571 9561622.2846,3426809.4894 9561527.9284,3426666.9562 9561480.6139,3426477.5764 9561477.9968,3426384.1528 9561383.5874,3426290.5617 9561291.4803,3426242.6253 9561291.2612,3426195.7621 9561196.6372,3426243.0895 9561052.1701,3426244.6202 9561050.316,3426338.5886 9560912.8282,3426339.6415 9560818.4424,3426196.9963 9560818.384,3425962.346 9560815.7601,3425915.5265 9560771.1804,3425915.3507 9560629.0905,3426009.9447 9560581.8538,3426245.983 9560537.0086,3426292.8305 9560487.2344,3426386.3775 9560300.7214,3426293.9934 9560206.296,3426057.922 9560206.1865,3425822.1344 9560250.8451,3425633.9923 9560250.9446,3425492.5312 9560203.5741,3425493.666 9559872.6276,3425258.6146 9559683.1261,3425165.0754 9559496.7046,3425166.0675 9559446.6438,3425119.7883 9559213.0699,3425119.6444 9559070.9974,3425167.2564 9558837.1539,3425215.1278 9558648.0966,3425357.887 9558506.6168,3425687.3838 9558508.9388,3426064.7743 9558367.1361,3426253.9419 9558272.6942,3426442.0221 9558133.3198,3427008.6677 9557994.1109,3427384.8685 9557899.5283,3427338.1774 9557807.7354,3427151.0578 9557618.5567,3427056.746 9557477.0139,3427057.6791 9557382.0311,3427104.6708 9557335.0531,3427152.2492 9557240.4959,3427058.6951 9557148.4517,3427058.8934 9557003.9689,3427389.7483 9556675.8895,3427531.8296 9556489.1679,3427720.1067 9556536.7337,3427908.0505 9556583.8172,3428427.0251 9556208.3345,3428428.1683 9556066.7836,3428333.4029 9555972.0355,3428240.1275 9555924.7829,3428004.0576 9555971.9565,3427816.0094 9555972.1064,3427863.7155 9555593.8962,3427863.9989 9555549.4497,3427816.9642 9555452.1479,3427675.9116 9555499.594,3427534.2185 9555591.0201,3427251.5706 9555641.3349,3427204.6641 9555591.0739,3427347.1865 9555357.6392,3427347.3037 9555216.1498,3427253.7067 9555168.4131,3426877.4537 9555026.6968,3426689.3883 9554882.5601,3426594.8421 9554929.7803,3426593.4434 9554930.8113,3426405.5151 9555118.6468,3426216.3888 9555355.2147,3426121.6137 9555636.0747,3425980.1949 9555683.0281,3425649.6175 9555822.2617,3425556.116 9555775.1582,3425415.7173 9555538.5729,3425087.3335 9555207.8002,3424852.6017 9555066.1254,3424804.4763 9555066.0629,3424616.5523 9554968.9193,3424474.0044 9554968.831,3424428.3421 9555110.489,3424380.5843 9555300.0897,3424239.0246 9555394.234,3424097.742 9555388.8519,3424002.9732 9555297.0058,3423909.5903 9555296.9307,3423813.8613 9555580.5838,3423672.377 9555625.3618,3423531.0859 9555625.048,3423484.4774 9555578.1871,3423486.5335 9555388.9178,3423390.8281 9555344.1528,3422966.821 9555341.8484,3422779.8328 9555152.6496,3422874.3767 9555060.5508,3422968.7822 9555060.6078,3422922.4677 9554730.1291,3423018.0729 9554493.7379,3423017.9663 9554401.7688,3422829.9137 9554351.8231,3422783.1049 9554446.4514,3422639.4918 9554774.7221,3422451.1064 9554963.4624,3422356.8537 9554961.1134,3422168.5655 9554866.3798,3422263.0181 9554727.2515,3422452.5232 9554585.531,3422547.1144 9554399.1883,3422548.3544 9554257.6746,3422501.4239 9554210.339,3422406.8445 9554207.5128,3422312.322 9554349.5888,3422264.2235 9554490.8181,3421888.1178 9554443.7968,3421794.8025 9554349.4428,3421795.6126 9554065.4943,3421937.0089 9554018.6378,3422031.7945 9553971.313,3422078.3635 9553831.9468,3421984.9783 9553690.5562,3421891.3539 9553595.7216,3421750.023 9553548.3308,3421702.2411 9553548.728,3421608.6347 9553548.8052,3421515.2585 9553498.7146,3421516.09 9553309.7101,3421374.766 9553262.3147,3421186.707 9553215.2677,3421139.9248 9553120.7371,3421140.2329 9553026.3217,3421234.7005 9552887.2282,3421423.8586 9552839.9937,3421659.6947 9552745.3474,3421753.6073 9552700.8416,3421801.4628 9552651.1184,3421802.2865 9552417.2185,3421802.495 9552275.7887,3421756.7535 9552136.314,3421756.8895 9551947.854,3421758.1086 9551711.514,3421758.0167 9551664.4942,3421804.7293 9551569.2529,3421804.6573 9551567.1326,3421805.7386 9551427.9745,3421854.7835 9550910.882,3421714.4487 9550816.4507,3421526.3617 9550863.6483,3421195.8088 9550955.5912,3420772.6922 9550811.4445,3420491.199 9550811.478,3420161.5699 9550716.5637,3420208.7286 9550577.5723,3420208.5463 9550574.8095,3420210.6252 9550433.5081,3420070.2374 9550197.175,3420165.0028 9550008.6776,3420164.9266 9549916.7668,3420024.7869 9549775.1342,3420025.7332 9549633.2358,3420072.7209 9549586.3501,3420684.7688 9549541.4453,3421155.656 9549449.7969,3421155.8097 9549402.6136,3421156.7373 9549260.7228,3421063.265 9549121.6975,3420922.0959 9549025.0223,3420969.9902 9548791.3718,3420971.1006 9548697.1492,3420829.8554 9548649.7756,3420734.9581 9548694.2752,3420450.9813 9549022.0099,3420216.4229 9549069.3273,3419886.6399 9548974.59,3419699.787 9548783.3722,3419466.9129 9548547.1083,3419324.8248 9548547.3942,3419229.9198 9548641.8291,3419040.6336 9548922.2528,3418898.1883 9549016.9052,3418851.3638 9549016.5998,3418616.479 9549108.2956,3418333.7563 9549108.4766,3418051.9136 9549105.8287,3417910.8406 9549106.0604,3417863.9354 9549198.4703,3417862.7394 9549200.7976,3417860.5534 9549528.1798,3417954.2748 9549858.8889,3418094.4536 9550047.5677,3418376.0459 9550236.5036,3418657.7763 9550381.1724,3418751.0707 9550522.5346,3418796.8259 9550664.1141,3418796.7356 9550853.1825,3418702.3617 9550897.9855,3418514.2562 9550945.1143,3417150.4747 9550562.2229,3417103.6419 9550561.9072,3416257.5378 9550276.1275,3416069.4519 9550273.2304,3415691.8144 9550506.6684,3415457.1452 9550506.866,3415362.5474 9550506.9009,3415314.5149 9550645.6946,3415267.4808 9550879.3442,3415265.9496 9550881.1935,3415220.1556 9550929.33,3415078.7032 9550973.9298,3414983.8919 9550929.2298,3414938.5743 9550693.2395,3414796.9251 9550643.1498,3414656.862 9550501.4102,3414421.9691 9550501.7427,3414232.8366 9550640.7181,3414138.0449 9550687.93,3414091.1616 9550640.5841,3413808.4069 9550640.5945,3413527.0735 9550638.1035,3413386.6548 9550540.7698,3413339.7922 9550401.4897,3412963.6661 9550257.2866,3412776.5012 9550210.2154,3412354.7465 9549924.387,3412260.0236 9549876.7212,3412165.3603 9549971.5699,3412259.1013 9550113.3119,3412211.0342 9550252.0989,3412069.7386 9550299.4186,3411881.553 9550252.3552,3411834.722 9550252.0094,3411646.7475 9550296.691,3411362.7698 9550482.7766,3411081.221 9550388.4625,3410846.2252 9550244.0486,3409058.3417 9550190.2889,3409056.7404 9550190.0171,3408822.4306 9550327.95,3408867.9333 9550611.4529,3409149.6663 9550658.6687,3409338.9052 9550566.8228,3409433.6832 9550611.5862,3409338.0009 9550661.5473,3409102.9696 9550752.9906,3409101.8425 9550894.91,3409053.0141 9551081.2437,3409194.2613 9551222.8845,3409240.001 9551417.2541,3409235.4001 9552073.3371,3409141.7946 9552259.2709,3409374.3109 9552498.2525,3409469.1735 9552498.1092,3409657.1524 9552545.4212,3409750.8727 9552640.2036,3409843.1458 9552876.4672,3409984.5235 9552876.1966,3410079.1795 9552784.2761,3410173.8588 9552595.3472,3410508.9779 9551703.046,3410651.5294 9551561.4847,3410886.2509 9551469.4942,3411074.3946 9551519.5299,3411309.4417 9551566.9694,3411497.2559 9551755.4848,3411683.1569 9551991.7368,3411966.1554 9552041.599,3412766.4244 9552044.5102,3413002.7194 9551952.7375,3413142.8144 9551952.6194,3413190.5518 9552002.2494,3413329.7359 9552238.8041,3413564.6664 9552380.4104,3413986.7549 9552663.977,3414128.0596 9552758.5369,3414174.6202 9552805.4186,3414313.8633 9553041.9698,3414407.4823 9553230.9574,3414452.9942 9553561.7568,3414734.495 9553703.2086,3414828.2842 9553797.9481,3414828.1306 9553892.209,3414497.5855 9554078.648,3414308.1326 9554217.8741,3414401.6106 9554409.1792,3414636.5126 9554456.7209,3415013.0233 9554598.6331,3415105.4101 9554645.8926,3415246.6296 9554834.7194,3415246.4431 9554881.939,3415151.9816 9554976.7251,3414821.2559 9555115.5059,3414585.2793 9555209.9862,3414302.5655 9555254.7524,3414114.483 9555207.5429,3413738.35 9555205.0768,3413549.0975 9555252.149,3413030.385 9555202.3109,3412373.3986 9555102.6552,3411902.4677 9555102.3892,3411854.5663 9555102.0857,3411712.9908 9555099.6104,3411430.6301 9555191.8313,3410865.1584 9555378.2326,3410675.6945 9555375.4159,3410394.0222 9555328.0568,3410347.4979 9555328.181,3410439.8497 9555514.5392,3410485.4829 9555609.2057,3410485.3004 9555703.4771,3410391.6367 9555753.4156,3410250.275 9555750.7503,3410016.7126 9555656.4633,3409874.1113 9555701.0449,3409731.7022 9555842.5115,3409684.9509 9555842.7964,3409733.0032 9555559.1613,3409781.8421 9555372.7048,3409781.8457 9555228.6159,3409641.5989 9555180.9621,3409453.3196 9555133.8101,3409170.641 9555133.4955,3408888.8008 9554989.2091,3408889.0222 9554941.9891,3408702.0186 9554847.5599,3408371.3809 9554844.7739,3407993.8933 9555031.2653,3407712.5811 9554984.2946,3407429.505 9554981.3195,3407192.6832 9555168.0503,3406907.5076 9555495.9571,3406672.652 9555587.872,3406389.7838 9555490.5909,3406296.1679 9555443.4334,3405731.7625 9555393.3671,3405544.0769 9555346.4245,3405355.5603 9555154.6105,3405264.4461 9554824.0818,3405168.6647 9554776.3422,3404934.9415 9554729.1412,3404793.622 9554824.0626,3404650.0302 9555010.3851,3404556.4055 9555057.3089,3404369.4505 9554915.7371,3404180.274 9554771.4549,3403946.3791 9554721.4614,3403482.264 9553681.7777,3403533.3107 9553072.8294,3402041.767 9551038.9385,3402463.7015 9551136.2511,3403029.1427 9551188.4274,3403381.1313 9551281.9941,3403732.637 9551377.3527,3403733.7039 9551375.8476,3403828.3933 9551238.4655,3403782.8888 9551049.7748,3403595.9769 9550813.5666,3403455.4439 9550716.2239,3403361.9912 9550624.1582,3403266.568 9550763.5066,3402515.1914 9550572.0795,3402515.8173 9550385.7822,3402894.5529 9550196.521,3402895.5701 9550007.7717,3402708.4314 9549818.777,3401632.2169 9549010.805,3401491.9127 9548869.2282,3401398.6584 9548774.8805,3401356.157 9548116.4285,3401169.2298 9547972.161,3401216.9051 9547833.1696,3401075.293 9547787.265,3400791.7955 9548066.4153,3400319.7764 9548297.115,3400224.0606 9548483.5577,3400316.2509 9548719.6254,3400878.5299 9549147.113,3401111.0705 9549477.7861,3401719.9705 9549858.1687,3401672.1345 9549952.4924,3401155.8258 9549808.6468,3400684.9682 9549897.5376,3400544.6838 9549755.913,3400592.646 9549569.7061,3400498.8363 9549475.0242,3399275.3905 9549558.9369,3398994.982 9549462.0578,3398759.127 9549414.9616,3398384.9637 9549081.6982,3397915.1949 9548984.6251,3397494.5949 9548651.394,3397121.2754 9548131.8578,3396418.1311 9547747.4312,3396139.9177 9547371.535,3396001.6412 9547040.7144,3395579.623 9546849.4573,3394830.4126 9546419.3309,3394783.8085 9546277.9071,3394926.3096 9546186.028,3394739.4078 9546091.5743,3394456.9493 9546181.7723,3394454.7482 9546182.6591,3394266.3098 9546369.5209,3394263.8003 9546697.0649,3394961.864 9547596.6036,3395241.225 9548024.4158,3395522.8818 9548074.1901,3396088.5624 9547888.0598,3396790.8834 9548412.572,3397164.7761 9548648.458,3397210.3399 9548792.8827,3397211.4987 9548837.5595,3396880.1009 9548976.6685,3396833.3233 9549023.8951,3396971.4065 9549307.3173,3396874.3954 9549824.1737,3396918.943 9550107.4078,3397528.7278 9550298.738,3397622.4733 9550440.4767,3397855.2039 9550729.1729,3398886.9806 9551156.723,3399307.5728 9551581.9597,3399496.8585 9551584.3817,3399591.485 9551442.8042,3399591.6299 9551301.7094,3399591.697 9551298.7681,3399685.9984 9551256.4817,3399874.3912 9551256.6514,3399829.8723 9550928.4652,3399878.799 9550645.3871,3400114.8596 9550553.527,3400491.2265 9550603.2896,3400726.1056 9550745.0819,3400819.5315 9550842.2405,3401053.1118 9551078.2647,3400627.1031 9551359.1466,3400579.1315 9551545.401,3401846.0836 9552028.3747,3402362.5178 9552311.8292,3402549.3695 9552500.4198,3402544.9725 9553017.9388,3402873.1121 9553256.3967,3403430.9689 9554296.02,3403523.3848 9554626.982,3403522.2305 9554766.036,3403426.4849 9554999.7435,3403098.1288 9554905.342,3402863.0663 9554810.5888,3402582.4935 9554527.053,3402441.2059 9554477.1867,3402205.3205 9554521.9483,3402017.0966 9554474.6292,3401781.1711 9554377.6062,3401408.1846 9554043.8629,3401268.0946 9553996.7303,3401258.2176 9554001.7945,3401173.1945 9554043.8141,3401265.7732 9554185.7917,3401359.2613 9554282.978,3401304.2946 9554336.2611,3401264.7197 9554374.6528,3401029.7204 9554374.5998,3400370.6175 9554366.8332,3400369.5696 9554508.6599,3400404.9427 9554544.2446,3400463.1179 9554602.9186,3400654.4973 9554682.6835,3400696.7227 9554700.2291,3400743.5122 9554794.7337,3400742.4471 9554983.611,3400631.3376 9555010.0005,3400554.6449 9555028.5461,3400459.7731 9555028.5724,3400458.3286 9555031.077,3400411.9131 9555122.9441,3400504.4474 9555312.0098,3400645.8898 9555406.6608,3401020.7515 9555642.9192,3401155.7713 9555712.6123,3401395.9158 9555836.9938,3401771.0962 9556025.9913,3402005.9395 9556168.0067,3402028.0396 9556191.6168,3402052.6103 9556217.759,3402080.9199 9556246.2281,3402192.7825 9556359.6659,3402238.5382 9556501.2773,3402281.8121 9556574.5099,3402378.7802 9556737.9505,3402377.5937 9556877.027,3402140.5068 9557160.7505,3402186.3415 9557350.0933,3402253.0657 9557484.3269,3402278.7809 9557536.4194,3402369.8235 9558056.0274,3402464.0441 9558199.8111,3402555.9114 9558340.2562,3402728.4074 9558426.6881,3402744.2108 9558434.6535,3402777.3392 9558469.016,3402837.7432 9558531.8953,3402978.8535 9558588.48,3403072.3493 9558626.3848,3403165.7292 9558720.8457,3403164.7457 9558862.7467,3403116.7873 9559049.2146,3403067.9302 9559285.5792,3403066.6727 9559474.7553,3403206.8622 9559521.894,3403397.4136 9559382.9574,3403538.9067 9559335.7269,3403725.8016 9559385.5505,3403913.7955 9559572.149,3404241.3451 9560000.4298,3404379.1731 9560567.8448,3404471.5626 9560662.3444,3404847.8234 9560851.4667,3404894.8705 9560901.7154,3405033.5865 9561089.0114,3405034.9233 9561090.9286,3405174.9358 9561283.076,3405126.1028 9561608.6448,3404982.7388 9561889.808,3404746.5572 9562031.841,3404462.7791 9562076.1919,3404227.6386 9562026.196,3403946.0627 9561837.1124,3403712.5025 9561645.4305,3403618.7009 9561408.5297,3403525.2948 9561266.9539,3403384.9929 9561172.068,3403243.7213 9561172.0462,3403054.5064 9561311.4527,3402913.244 9561264.3409,3402772.8028 9561119.5807,3402726.1335 9561027.7698,3402868.6345 9560885.6776,3402915.3094 9560746.4625,3402777.3436 9560415.2455,3402731.5581 9560273.5582,3402779.3546 9560084.2935,3402780.6185 9559895.101,3402641.4512 9559847.9249,3402591.229 9559847.8004,3402309.8501 9559895.4178,3402121.8922 9559892.6742,3401886.5628 9559747.9712,3401559.6134 9559369.9419,3401336.3749 9559209.1542,3401231.3248 9559133.3604,3401089.686 9559130.6996,3400995.2381 9559175.9939,3400900.6163 9559319.8662,3400934.5743 9559570.8099,3400944.9045 9559647.9451,3400978.9905 9559705.5082,3401085.1623 9559884.7463,3401271.1769 9560121.3442,3401223.2973 9560215.7889,3401145.7141 9560215.4245,3401129.6183 9560215.631,3400941.7169 9560118.693,3400750.1112 9560494.3469,3400889.2557 9560825.3771,3401077.3079 9560967.1202,3401169.589 9561201.4738,3401170.1235 9561203.2546,3401259.9783 9561723.9952,3401306.4985 9561771.0239,3401491.5967 9562386.4438,3401725.2856 9562623.0005,3402006.6975 9562767.3757,3402241.9536 9562909.3557,3402336.4305 9562956.7467,3402334.13 9563146.0491,3402239.5011 9563237.8507,3402144.7628 9563237.7321,3401579.5933 9563327.3271,3401909.0362 9563285.1442,3402145.0814 9563285.309,3402142.8019 9563616.5895,3402189.3975 9563758.4845,3402139.2691 9564039.3632,3402044.8798 9564181.7037,3402086.6959 9564888.6275,3401991.3756 9565122.956,3401422.4127 9565496.3844,3401234.1955 9565448.7954,3400998.2201 9565351.42,3400809.9897 9565303.8357,3400668.8698 9565396.3472,3400620.7778 9565488.0904,3400666.5195 9565727.7075,3400761.2567 9565774.9904,3400995.9022 9565824.8114,3401183.0602 9565919.5649,3401417.7255 9566111.3945,3401511.465 9566253.5853,3401699.6833 9566348.2914,3401745.97 9566300.6051,3401608.2591 9565827.5837,3401749.5835 9565829.1006,3402080.156 9565832.516,3402456.4476 9565977.0612,3402551.2482 9565930.0471,3402929.5586 9565743.3544,3403260.1312 9565695.9893,3403494.9479 9565748.5204,3403541.6778 9565793.2603,3403919.3718 9565938.1754,3404343.3084 9566082.5203,3404718.4463 9566177.1082,3404907.588 9566179.7525,3404954.5925 9566135.1332,3405096.9169 9565993.0636,3405004.6336 9565756.3057,3404628.3994 9565519.7679,3404299.9436 9565327.9251,3404254.35 9565185.9691,3404302.3216 9564952.2233,3404398.0394 9564857.4006,3404774.0141 9564907.1083,3405292.931 9564957.0609,3405527.8339 9565099.3332,3405715.1292 9565335.963,3405713.6096 9565477.6969,3405618.222 9565667.2628,3405759.3141 9565761.6631,3405899.8048 9565998.5872,3405992.1155 9566235.3434,3406133.4766 9566282.4349,3406180.0605 9566282.3347,3406369.4405 9566237.6493,3406558.6419 9566095.9439,3406935.0179 9566146.0401,3407359.1385 9566337.9948,3407500.3206 9566340.2484,3407689.6413 9566340.5253,3407783.122 9566387.932,3408016.9893 9566813.7749,3408250.7176 9567003.3493,3408392.214 9567145.3247,3408485.5212 9567287.1417,3408768.3574 9567479.1207,3409003.2516 9567526.4334,3409144.6278 9567526.3555,3409145.6884 9567339.9096,3409052.2336 9567103.1945,3409100.9739 9566913.6668,3408960.9609 9566724.2021,3408866.3418 9566679.8102,3408866.9836 9566677.1636,3408914.2344 9566535.1531,3409010.0894 9566395.9249,3409009.9503 9566253.8995,3409009.8147 9566159.0074,3409106.5591 9565924.8352,3409060.1944 9565830.53,3408823.9211 9565874.9112,3408587.9799 9565919.7655,3408400.0483 9565919.947,3408353.1093 9565873.9183,3408351.8625 9565872.6583,3408307.791 9565493.9133,3408403.2775 9565307.1028,3408592.6245 9565262.3721,3408780.764 9565214.8972,3409015.7318 9565357.0743,3409250.5332 9565501.5507,3409250.469 9565546.5523,3409390.9314 9565688.5097,3409533.1485 9565690.6858,3409624.9922 9565645.0065,3409674.6535 9565501.9543,3409724.6028 9565362.3174,3409817.293 9565362.4191,3409958.5451 9565504.5127,3410146.6567 9565554.1903,3410335.8099 9565459.523,3410477.2738 9565507.192,3410523.8534 9565507.0668,3410522.9909 9565649.1058,3410192.3093 9565741.1099,3410144.2818 9565882.9756,3410191.022 9566024.8704,3410332.4943 9566072.5459,3410616.4376 9566025.0179,3410851.3124 9565933.0179,3410993.7156 9565793.6182,3411136.0955 9565654.2326,3411138.4618 9565275.3995,3411044.9932 9565038.7627,3411046.2149 9564944.3238,3411282.0661 9564805.1751,3411283.3009 9564757.8602,3411188.4201 9564710.0817,3411047.3002 9564662.9095,3411048.5218 9564568.4759,3411238.7213 9564284.4888,3411238.5321 9564239.6739,3411333.1042 9564097.705,3411475.802 9564005.9422,3411617.172 9563960.8296,3411805.3445 9564006.0452,3411899.7567 9564005.5726,3411994.6883 9563911.1817,3411995.726 9563819.0604,3411855.4751 9563629.8933,3411902.2251 9563535.4023,3411950.0437 9563487.9491,3412138.2666 9563396.0781,3412469.0139 9563348.8487,3412611.3711 9563256.5829,3412705.7089 9563161.8932,3412753.8792 9562972.7932,3412755.9917 9562641.3615,3412756.1294 9562597.036,3412570.1924 9562123.9578,3412383.2237 9561840.1482,3412150.6738 9561510.8313,3412149.111 9561509.0802,3412053.3513 9561411.9892,3411962.6945 9561319.1244,3411961.4477 9561317.8657,3411869.1327 9561130.5489,3411681.7962 9560941.2832,3411444.6265 9560985.7518,3411398.055 9560938.7862,3411351.1656 9560938.4372,3411304.45 9560843.7463,3411258.9254 9560704.7005,3410648.8174 9560181.7056,3410695.5484 9560087.2485,3410790.4316 9560090.0345,3411024.9578 9560231.5712,3411587.5221 9560657.5822,3411776.5488 9560799.2111,3412059.0168 9560801.902,3412154.1149 9560660.2936,3412438.7248 9560378.7403,3413335.0485 9560147.7996,3413569.9476 9560197.698,3413664.5046 9560292.0169,3413662.1978 9560384.3136,3413520.9566 9560573.6342,3413426.0349 9560670.9296,3413425.1181 9560996.3352,3413516.527 9561374.9693,3413892.7132 9561566.8175,3414127.7085 9561847.9402,3414267.9183 9562039.9659,3414737.7335 9562418.2334,3415630.3443 9562893.9451,3415865.3004 9563038.8242,3415912.08 9563083.4759,3416289.2586 9563322.4935,3416758.0779 9563606.5431,3417323.6992 9563798.3557,3417700.0257 9563942.9788,3417935.7937 9563895.7497,3418361.1617 9563709.0075,3418643.8954 9563664.1926,3418690.4648 9563664.0212,3419021.2786 9563617.182,3419398.5974 9563619.5617,3419539.9182 9563714.3398,3419681.1508 9563666.9792,3420106.4696 9563480.1522,3420390.5667 9563435.7135,3420530.6064 9563435.6468,3420954.9013 9563580.3788,3421189.5315 9563627.4796,3421378.0835 9563582.9717,3421568.4306 9563488.5195,3421709.5743 9563349.0251,3421804.2811 9563298.8726,3421898.9605 9563301.7093,3421945.1745 9563347.4945,3421946.7583 9563349.2306,3421896.8343 9563441.1463,3421756.4342 9563630.169,3421755.9694 9563766.9357,3421755.7987 9563769.2384,3421802.0423 9563961.5948,3421895.557 9564148.1731,3421941.0631 9564337.4576,3421893.5566 9564571.2999,3421893.1617 9564573.768,3421799.6043 9564526.5489,3421753.0553 9564337.3025,3421752.9485 9564195.1402,3421611.6274 9564195.4368,3421517.0723 9564384.8098,3421421.1508 9564618.7339,3421137.3596 9564805.209,3420615.1083 9565746.3764,3420520.3424 9565746.4711,3420427.181 9565746.835,3420332.3163 9565791.273,3420142.1445 9565980.6291,3419764.8162 9566025.4181,3419435.0245 9565977.8632,3419199.4595 9565883.446,3419153.4463 9565693.7906,3419201.5754 9565410.1818,3419297.6655 9565221.9012,3419722.5613 9564986.8072,3419770.2728 9564847.1926,3419725.8572 9564516.3414,3419536.5861 9564421.283,3419347.1435 9564468.5653,3419157.0854 9564563.4579,3419064.6338 9564608.2794,3418688.219 9564605.2158,3418544.6513 9564652.8172,3418544.5384 9564747.2236,3418591.3553 9564841.9255,3418874.1874 9564889.2006,3419062.3707 9564892.2038,3419110.2204 9564986.8751,3419061.136 9565126.0392,3419014.4509 9565220.6258,3418778.5955 9565220.7704,3418495.753 9565173.4898,3418448.8271 9565123.1242,3418024.9967 9564981.4914,3416941.5473 9564786.7589,3416893.9453 9564786.9498,3416328.3913 9564831.4796,3416092.1507 9564783.9598,3415998.8054 9564689.3872,3415858.6373 9564402.9296,3415671.55 9564166.2206,3415104.9456 9564071.4777,3414728.8466 9564163.7532,3414632.916 9564258.2084,3414584.9866 9564492.1704,3414537.0387 9564634.0368,3414536.0156 9564868.3421,3414724.285 9564965.676,3414960.1335 9564965.6487,3414912.3778 9565060.2386,3414768.709 9565483.5827,3414719.744 9565814.7992,3414813.3139 9565954.2136,3414907.6853 9565956.6535,3415097.1299 9565862.3494,3415190.6649 9565909.6543,3415142.5877 9566145.9641,3415236.3119 9566288.1767,3415471.0235 9566382.592,3415518.8027 9566430.1718,3415612.555 9566572.3717,3415516.6463 9566714.0038,3415422.2618 9566761.639,3415092.6232 9566569.4037,3414904.3425 9566569.2559,3414763.1897 9566614.2635,3414761.7657 9566708.9041,3414856.57 9566806.0792,3415136.9997 9566948.17,3415278.5951 9567135.0231,3415418.7312 9567374.4766,3415561.1501 9567374.2444,3415654.6645 9567374.4154,3415794.8766 9567610.9226,3415889.6319 9567705.9732,3416124.5901 9567753.0686,3416172.2083 9567802.9576,3416124.4501 9567897.5928,3415982.1141 9568037.1102,3415933.9882 9568176.2865,3416121.1415 9568508.2255,3416121.0303 9568557.6624,3416260.6532 9568746.7529,3416213.4412 9568886.7251,3416070.9365 9569028.5539,3415788.3884 9569120.9433,3415598.8672 9569260.3187,3415503.321 9569449.6228,3415454.3406 9569683.8056,3415311.959 9569873.4369,3415358.434 9570110.0258,3415311.2048 9570199.9265,3415026.6417 9570249.4714,3414932.2514 9570344.2831,3414884.2606 9570531.2896,3414930.0938 9570862.7158,3414928.6897 9570957.3997,3415022.3509 9571286.38,3415161.43 9571759.8696,3415160.269 9571996.7041,3414968.8334 9572420.6637,3414968.4927 9572562.5124,3415062.2663 9572657.6686,3415203.6708 9572610.3253,3415298.3261 9572515.3011,3415442.1076 9572233.8326,3415632.4942 9571952.2185,3415774.5354 9571857.1924,3415821.5442 9571904.6718,3415962.9619 9571999.6237,3416056.5359 9572004.8665,3416198.9272 9571860.1931,3416340.3748 9571859.9902,3416433.8033 9572004.761,3416529.4392 9571954.7439,3416624.2038 9571815.3484,3416718.6372 9571767.6649,3416860.1941 9571768.0976,3416907.0119 9571862.9175,3416858.9486 9572099.4375,3416903.3263 9572288.988,3416809.9804 9572383.8057,3416431.5676 9572520.5645,3416194.542 9572710.1685,3416051.8232 9572991.6261,3416003.8522 9573133.6727,3416004.2292 9573181.3297,3415813.4515 9573415.3427,3415718.851 9573557.5514,3415812.4735 9573604.9009,3416001.8942 9573557.8183,3416001.7719 9573652.3304,3416093.1731 9573889.4376,3416282.1605 9574078.7421,3416564.8616 9574173.6875,3416707.5109 9574129.0368,3416755.4329 9573844.6225,3416898.0104 9573752.8026,3417133.8989 9573707.8231,3417369.9383 9573660.5448,3417795.0001 9573473.4374,3418080.2314 9573333.9977,3418221.4787 9573333.9275,3418410.7108 9573334.1344,3418457.3327 9573333.9638,3418552.1776 9573384.0222,3418694.8061 9573334.2836,3419073.3677 9573099.9477,3419213.2946 9573241.7665,3419260.1652 9573336.579,3419306.8536 9573478.7505,3419117.7004 9573620.9005,3418739.1605 9573902.4189,3418168.1354 9574418.604,3418074.4985 9574605.2179,3418121.2658 9574703.0339,3418309.2882 9574892.343,3418402.8273 9575079.2651,3418401.7555 9575316.2116,3418401.9214 9575364.0485,3418256.1843 9576072.2847,3418254.8218 9576451.192,3418159.1828 9576638.5927,3418112.2608 9576685.4827,3418016.7345 9576733.2591,3417780.5625 9576733.375,3417687.1109 9576635.723,3417639.2695 9576683.2847,3417591.1807 9576919.9848,3417259.6255 9577104.374,3417023.6204 9577057.0992,3416881.1526 9577151.7512,3416502.3392 9577386.1011,3416218.7171 9577528.6245,3416170.7424 9577620.6037,3416169.729 9577763.0668,3415554.1013 9578139.6151,3415506.0809 9578134.2376,3415317.6385 9578134.7581,3415271.2482 9577947.2228,3415604.2353 9577428.3339,3415559.7882 9577191.4276,3415275.9523 9577096.4498,3415228.8631 9576859.3245,3415372.5334 9576625.0491,3415608.8477 9576530.4371,3415655.2965 9576435.2381,3415609.8085 9576390.9506,3415373.7648 9576435.2307,3415042.0823 9576575.2683,3414852.7788 9576574.983,3414189.5027 9577186.2305,3414235.151 9577375.73,3414139.253 9577515.2701,3413761.7914 9577562.4625,3413336.6264 9577604.7414,3413288.5822 9577654.5915,3412864.6591 9577557.1584,3412674.0586 9577649.3029,3412247.8035 9577931.3468,3412152.0867 9578120.8449,3412104.2164 9578307.8764,3412009.7053 9578402.7632,3411820.3053 9578307.9968,3411727.9284 9578070.7352,3411350.8071 9577831.3065,3411162.4888 9577783.6983,3411021.1462 9577875.9218,3410877.5571 9577923.2992,3410830.9101 9577923.4264,3410641.4943 9577920.8959,3409979.0246 9578107.5159,3409931.2596 9578250.1104,3409882.1037 9578531.7523,3409834.3613 9578721.5553,3409691.9423 9578813.8104,3409692.0927 9578956.0897,3409641.6902 9579145.6726,3409500.3523 9579285.0783,3409168.8863 9579330.1792,3408979.6358 9579377.6219,3408931.3958 9579424.6709,3408695.9979 9579517.6163,3408694.2579 9579518.1675,3408457.4008 9579751.6599,3408362.4986 9579798.8212,3407982.8645 9579986.0166,3407841.698 9580030.8117,3407697.9255 9580267.8558,3407648.0458 9580504.99,3407788.3189 9580976.678,3408023.0757 9581169.0718,3408165.479 9581216.3786,3408448.4525 9581169.2156,3408543.1649 9581216.6577,3408824.506 9581598.6651,3409012.895 9581646.353,3409012.6735 9581693.7527,3409247.5413 9581883.177,3409246.5188 9582120.8265,3409009.3547 9582260.1224,3408203.292 9582584.5955,3408013.979 9582726.5064,3407918.4343 9582869.3356,3407775.9446 9582961.5982,3407680.1846 9582961.4068,3406687.0345 9583193.3696,3406592.4745 9583285.3048,3406639.2604 9583380.3251,3406874.2134 9583570.5226,3406920.6687 9583665.0646,3406826.2749 9583712.5499,3406636.9708 9583709.7785,3406306.4432 9583567.9152,3406070.3082 9583567.5269,3405832.0333 9583612.3055,3405643.859 9583704.6105,3405501.4934 9583846.8691,3405120.808 9584221.375,3404930.3795 9584316.0368,3404787.8337 9584408.2659,3404787.9239 9584456.1649,3404739.9473 9584550.9575,3404502.978 9584690.6516,3404028.9838 9584780.3709,3403744.7583 9584872.5771,3403459.8921 9585014.657,3403082.2395 9584964.6092,3402702.7746 9585056.8511,3402372.0976 9585101.6712,3402134.9828 9585101.8563,3402039.3992 9585241.6956,3402040.4118 9585288.9128,3401990.2046 9585476.1447,3401848.0479 9585666.1174,3401420.4116 9585945.4692,3401372.5353 9585900.6303,3401328.0236 9585518.3348,3401092.2103 9585471.0232,3400949.338 9585610.6259,3400142.4823 9586077.6989,3400095.4559 9586077.2836,3399905.3126 9586125.0698,3399810.5939 9586077.4943,3399718.2406 9585839.9996,3399625.9703 9585508.0044,3399580.2667 9585317.723,3399485.8935 9585270.6305,3399391.0394 9585315.4288,3399247.5145 9585457.6381,3399104.795 9585457.5853,3399012.4414 9585362.5123,3398916.8897 9585407.8142,3398488.2455 9585832.2519,3398297.884 9586019.6441,3398202.1342 9586253.9729,3398245.4641 9586631.2793,3398195.5952 9586960.6209,3398195.4365 9586962.9171,3398099.7343 9587153.6345,3398099.5203 9587198.1148,3397957.0292 9587293.0397,3397814.6424 9587337.7483,3397864.8113 9586960.9562,3397770.0362 9586960.6212,3397723.3399 9586960.6734,3397389.5095 9587287.9952,3397152.2912 9587335.294,3396963.2452 9587332.7778,3396915.2294 9587380.2901,3396299.5469 9587612.4095,3395731.7289 9587559.4742,3395495.8904 9587511.9869,3395591.4627 9587369.407,3395828.9453 9587182.4824,3395784.2296 9587037.233,3395594.75 9586944.9292,3395312.4274 9586799.9999,3395217.4458 9586704.6305,3395171.889 9586562.1917,3394841.2453 9586512.1949,3394510.6055 9586462.1851,3394462.708 9586459.4682,3394369.2781 9586367.3255,3394183.3922 9585892.5566,3393571.0552 9585649.9668,3393428.6034 9585697.5436,3393379.6534 9585979.5029,3393237.1951 9586027.0788,3393190.5039 9586027.1051,3392953.3405 9585929.7331,3392905.469 9586024.2975,3392905.4077 9586119.4715,3392951.2624 9586306.6915,3392949.8381 9586401.4145,3392855.4226 9586401.4902,3392714.0697 9586401.7671,3392667.1964 9586306.7907,3392621.4858 9586069.3631,3392481.3909 9585924.217,3392481.3684 9585832.0148,3392718.4357 9585879.3592,3392765.1934 9585832.0868,3392767.4631 9585594.4333,3393005.6658 9585407.1495,3393101.4826 9585220.1544,3393149.1874 9585127.8951,3392913.2796 9585125.4764,3392485.7009 9585404.8003,3392296.6989 9585402.1767,3392060.6947 9585354.7831,3391872.5703 9585257.124,3391589.4757 9585067.014,3391449.4891 9584874.6284,3391262.4204 9584684.7347,3391072.9516 9584634.5253,3390694.6842 9584729.6006,3390457.7594 9584727.1373,3390316.1065 9584629.6188,3390222.5863 9584534.6622,3390129.394 9584392.2881,3390179.2207 9584154.8139,3390276.304 9583825.4648,3390087.9294 9583683.0111,3389758.3071 9583537.8402,3389476.8539 9583297.9588,3389430.2631 9583250.7322,3389243.1323 9582965.8815,3389106.2079 9582444.1285,3389061.7512 9582159.5474,3389159.655 9581782.5626,3389541.463 9581313.473,3389589.401 9581313.2633,3389779.5456 9581081.4415,3389783.0402 9580699.4767,3389927.86 9580420.2614,3390164.9395 9580233.2051,3390401.0362 9580188.3124,3390449.8407 9580093.1556,3390404.4081 9579998.6928,3390310.6839 9579856.11,3390074.7706 9579758.6998,3389886.644 9579706.1508,3389649.6509 9579851.0587,3389459.0851 9579943.1714,3389318.0142 9579893.2133,3389176.2931 9579798.0358,3389035.1222 9579843.1632,3388844.4963 9579890.3325,3388559.6917 9580077.381,3388417.2207 9580166.9609,3388415.5695 9580168.1671,3388180.0361 9580309.0468,3388036.3269 9580448.8419,3387846.078 9580683.5555,3387748.0702 9581010.4604,3387747.3307 9581012.4513,3387652.5102 9581202.8453,3387604.4772 9581250.2613,3387415.1056 9581199.9917,3387272.8098 9581200.1996,3387132.6425 9581197.4002,3386942.2543 9581337.1713,3386563.4619 9581381.6664,3386562.6473 9581429.4061,3386562.5459 9581476.6253,3386750.5801 9581571.4143,3387177.1361 9581576.8682,3387365.3084 9581624.4292,3387410.9401 9581766.614,3387409.6928 9581908.9785,3387361.5386 9582003.6344,3387360.7285 9582051.3785,3387407.2825 9582098.6225,3387549.7353 9582193.3411,3387783.6109 9582290.9235,3388066.5298 9582481.0905,3388300.2168 9582673.13,3388441.4163 9582768.045,3388534.1187 9583052.9454,3388768.635 9583245.1257,3389096.1 9583579.8365,3389284.4479 9583862.3807,3389889.8615 9584769.157,3390828.2527 9585578.5901,3391295.6309 9586198.1464,3391154.074 9586386.6056,3391153.0005 9586388.1167,3391151.0951 9586575.3946,3391289.9853 9586955.272,3391573.0677 9587100.4686,3391903.4526 9587102.8631,3392044.8361 9587150.5178,3392091.6361 9587292.7673,3391994.9192 9587530.5435,3392088.3502 9587767.9776,3392413.4886 9588334.9523,3392697.3282 9588435.3202,3392695.9006 9588530.0719,3392647.9922 9588527.3437,3392410.0412 9588812.5435,3392266.2584 9588996.8952,3391507.281 9589226.5502,3391085.0422 9588751.5528,3391134.4172 9588514.255,3391327.0574 9588234.6636,3391326.8922 9588139.6392,3391090.663 9588089.4075,3391045.2442 9587899.6548,3390951.6803 9587804.6623,3390476.5712 9587989.3545,3390429.644 9587989.5299,3390097.7422 9588033.9103,3389814.1078 9587984.1723,3389532.3181 9587838.6784,3389297.2539 9587648.8692,3389155.1507 9587693.9105,3389059.2346 9587788.697,3389010.0964 9587928.4148,3389103.707 9588073.4867,3389245.2332 9588216.2204,3389242.7073 9588403.2432,3389147.0315 9588545.789,3389192.9716 9588735.8866,3389238.3539 9588925.672,3389380.9402 9589020.4507,3389521.2172 9589023.2281,3389807.3272 9588835.8819,3389948.4947 9588835.8205,3390089.7951 9588930.8037,3390088.8248 9589121.0798,3389945.2433 9589260.9054,3389708.1611 9589355.7688,3389612.3277 9589495.5468,3389514.5906 9589780.5319,3389419.6346 9589825.2428,3389372.1229 9589873.0448,3389182.7299 9589917.7741,3388612.7653 9590054.6859,3388235.0872 9590004.5611,3388046.2514 9589957.3394,3387999.3846 9589954.5437,3387809.9914 9589906.9994,3387669.7003 9589669.6174,3387576.2202 9589619.5394,3387291.4254 9589759.3351,3387148.969 9589759.5548,3387008.4457 9589566.6476,3386867.2661 9589566.6584,3386818.3679 9589661.9217,3386817.0624 9589848.7781,3386815.904 9589944.0297,3386674.5646 9589941.2447,3386391.978 9589799.0803,3386344.0646 9589796.3144,3386293.996 9590081.2328,3386199.1734 9590128.7009,3386010.0881 9590125.9159,3385774.2192 9589983.7411,3385679.5922 9589980.9548,3385632.8794 9589980.9379,3385299.8819 9590118.079,3384871.1351 9590447.7951,3384442.6864 9590679.9892,3384440.4784 9590962.6195,3384486.2143 9591200.0934,3384577.0651 9591437.3201,3384577.1556 9591532.389,3384576.329 9591580.1976,3384527.0182 9591817.3669,3384430.4314 9591954.6965,3384241.1282 9591859.7668,3384052.9623 9591859.8684,3383910.4276 9591904.363,3383623.2172 9592281.7662,3383432.8703 9592374.2185,3383101.2058 9592419.471,3382862.7598 9592511.423,3382719.2557 9592743.9629,3382717.2285 9592839.1274,3382860.7659 9592838.9598,3383618.9647 9592659.6232,3383999.3871 9592617.2544,3384519.2131 9592619.8108,3385040.1454 9592530.0045,3385088.2361 9592530.4818,3385418.8923 9592583.2146,3385891.847 9592632.9865,3386127.945 9592683.5663,3386458.5526 9592828.565,3386599.8988 9592923.6491,3386789.2902 9592926.2428,3386884.71 9592831.1101,3387028.5 9592643.9728,3387217.6677 9592598.7666,3387407.117 9592646.3426,3387689.8379 9592744.1926,3387737.6142 9592744.158,3388161.8624 9592891.8919,3388349.8472 9593034.2595,3388443.4393 9593129.3525,3388489.9678 9593271.9224,3388487.9317 9593462.3417,3388345.4559 9593557.0181,3388249.6457 9593649.5624,3388296.3994 9593791.9789,3388295.2569 9593887.2844,3388341.8991 9593934.589,3388530.2443 9594077.4556,3388526.8304 9594502.1962,3388524.6852 9594739.9711,3388710.7306 9595122.9498,3388661.4493 9595310.1568,3388613.6775 9595310.183,3388285.3139 9594975.2376,3388143.934 9594880.1412,3388001.5245 9594927.5209,3387525.1164 9595252.3857,3387478.0405 9595251.8969,3387334.4867 9595394.5795,3387238.9872 9595439.6442,3387188.7905 9595820.1023,3387280.9832 9596007.138,3387326.6963 9596197.6129,3387372.3213 9596387.4315,3387228.8156 9596625.2813,3387039.3613 9596622.6825,3386711.2534 9596287.4327,3386473.8297 9596287.162,3386284.7182 9596379.5155,3386282.504 9596474.895,3386375.9571 9596567.2632,3386611.9448 9596712.5137,3386752.1695 9596855.0372,3386800.0222 9596905.1263,3386891.5105 9597283.1746,3387032.8532 9597333.2982,3387553.6741 9597383.1279,3388075.775 9597245.8995,3388453.3828 9597346.5346,3388501.1659 9597346.5095,3388830.7906 9597536.7403,3389208.9576 9597687.1248,3389727.9453 9597925.0728,3389869.084 9598067.6785,3389913.8828 9598400.7287,3389813.4595 9598920.6837,3389718.8927 9599109.1087,3389717.3473 9599110.966,3389525.1207 9599346.0649,3389144.3939 9599578.59,3388858.3829 9599813.8593,3388713.7083 9600049.0864,3388567.6667 9600474.433,3388374.1252 9600852.3127,3388279.2835 9600944.9138,3388279.5073 9600992.7605,3388041.3457 9601132.6456,3387804.2133 9601129.9204,3387614.9148 9601034.7667,3387380.1825 9600841.8875,3387190.7755 9600651.5342,3387051.8369 9600461.4034,3386863.5384 9600316.0722,3386627.2853 9600173.0548,3386532.6994 9600173.0709,3386202.0922 9600072.8029,3385870.5582 9600072.8302,3385585.6939 9600115.1088,3385299.5542 9600350.2519,3385202.4767 9600490.2362,3385154.5479 9600537.6031,3384720.3252 9601433.5936,3384524.4666 9602002.0833,3384477.9827 9602046.9376,3384281.8467 9602710.2085,3384090.3299 9602898.0616,3383751.9126 9603511.0414,3383750.7184 9603606.4778,3383607.3705 9603746.7844,3383465.9235 9603696.5692,3383326.7783 9603413.3626,3383233.218 9603220.5419,3383044.9004 9603029.9886,3382619.6266 9602929.4955,3382239.3464 9603022.3281,3382097.7196 9603022.4209,3382049.9049 9603022.4088,3381766.0101 9602921.9385,3381623.4854 9603014.31,3381382.7589 9603296.8766,3381192.5728 9603437.1067,3380861.0916 9603434.6148,3380671.6487 9603336.4843,3380673.9396 9603101.3836,3380628.1116 9602910.8491,3380582.6476 9602816.0383,3380347.752 9602578.0262,3380206.2338 9602620.1843,3379822.3451 9602903.1148,3379632.8872 9602903.1531,3379586.513 9602900.6218,3379115.3884 9602517.159,3378926.3481 9602514.7016,3378923.9814 9602654.5613,3379487.1605 9603278.4714,3379718.8915 9603849.7054,3380099.1901 9603711.9254,3380100.7595 9603616.9713,3380007.3021 9603474.2595,3379960.2801 9603331.1297,3380104.0604 9603236.4296,3380245.1269 9603286.2302,3380528.0273 9603527.0753,3380905.1844 9603672.2511,3381189.2441 9603770.4416,3380855.2625 9603955.2188,3380522.3317 9604000.3011,3380522.3775 9604095.5403,3380662.5062 9604285.6771,3380757.3678 9604428.8423,3380801.9441 9604526.5112,3380801.9745 9604571.5842,3380844.1381 9605095.0769,3380700.5174 9605187.4998,3380462.2703 9605279.8533,3380319.1565 9605420.6324,3380317.382 9605422.6543,3380173.9709 9605658.2107,3380173.9978 9605703.2908,3379979.4188 9606224.2348,3379976.8371 9606414.5333,3380164.982 9606557.364,3380448.9294 9606607.7487,3380638.0885 9606705.4604,3380681.3763 9607086.3816,3380821.5573 9607276.5965,3380868.6154 9607419.8016,3380771.8127 9607607.5875,3380581.4748 9607652.6004,3380202.6453 9607554.2637,3380012.4622 9607551.8545,3379678.4599 9607739.4828,3379583.9735 9607737.1021,3379584.1202 9607694.7949,3379582.7818 9607692.8608,3379492.5386 9607549.1448,3379399.9992 9607120.4595,3379260.1004 9606975.1477,3378834.764 9606829.9613,3378692.0987 9606827.0694,3378644.4331 9606874.9243,3378643.3181 9606969.5787,3378687.7021 9607207.8298,3378685.2748 9607395.8386,3378637.606 9607443.6973,3378495.1189 9607488.6791,3378400.3057 9607535.9955,3377723.2904 9608715.7299,3377529.823 9608951.3751,3377386.5215 9609186.8219,3377288.3558 9609470.1287,3377237.1367 9609847.9814,3377184.1897 9610271.53,3377183.7798 9610274.0118,3377039.9721 9610560.0562,3376848.5223 9610700.3543,3376371.1438 9610980.6648,3376323.0465 9611025.9117,3376227.3829 9611118.2012,3376080.6459 9611449.3023,3376080.1711 9611544.9859,3376081.1747 9611546.4376,3376315.2538 9611880.9085,3376263.9182 9612071.1724,3376072.494 9612303.8661,3376070.337 9612447.3705,3376163.6699 9612542.3838,3376353.9625 9612544.8844,3376399.9237 9612688.2611,3376351.8783 9612735.6584,3376065.8268 9612873.5604,3376018.1741 9612923.5803,3375970.0641 9612968.8378,3375872.3513 9613203.8408,3375727.5912 9613392.3348,3375536.1043 9613534.7787,3375487.5601 9613818.3916,3375486.815 9613820.3908,3375578.4012 9614056.4832,3375528.2528 9614244.4588,3375432.3951 9614387.8517,3375431.6521 9614434.987,3375431.5762 9614437.9546,3375286.9354 9614552.8328,3375144.3138 9614665.5082,3375002.4949 9614665.4777,3374766.9584 9614427.2466,3374342.7951 9614183.7867,3374344.9279 9613947.8406,3373968.4805 9613564.1,3373733.8559 9613418.4157,3373684.5141 9613466.0048,3373635.9471 9613609.1031,3373729.1824 9613752.2588,3373966.3161 9613850.2725,3374247.9089 9614135.7232,3374339.0308 9614469.7032),(3375758.7776 9614959.5792,3375662.9882 9615054.8813,3375377.7571 9615004.2936,3375331.2546 9614909.3145,3375380.1981 9614813.9424,3375713.1683 9614816.6231,3375758.7776 9614959.5792),(3381418.348 9604484.0576,3381275.9245 9604529.0692,3381180.1812 9604671.6698,3381084.5463 9604716.7218,3380943.067 9604621.3824,3380944.4322 9604571.6534,3380944.1992 9604478.723,3381087.8055 9604386.3052,3381278.2206 9604344.0997,3381419.9028 9604389.0928,3381418.348 9604484.0576),(3387230.6596 9601645.0916,3386844.2184 9602401.0214,3386606.2685 9602496.3156,3386133.1681 9602396.0276,3385611.9334 9602295.2394,3385472.0541 9602200.2897,3385424.0171 9602152.4559,3385330.5415 9602054.8915,3385284.8415 9601864.2469,3385380.8111 9601727.2357,3385477.4009 9601489.4014,3385483.9147 9600825.7297,3385533.0174 9600682.9603,3385628.8719 9600588.2201,3385818.2166 9600543.0282,3386151.0362 9600453.3526,3386340.1953 9600453.3418,3386625.2414 9600551.272,3386765.4517 9600598.6528,3386812.2186 9600741.2186,3386904.6191 9600979.1845,3387139.4079 9601217.1324,3387279.809 9601409.8609,3387230.6596 9601645.0916),(3388583.1899 9604076.9723,3388534.3439 9604267.6979,3388391.8913 9604267.7614,3388155.7371 9604119.4429,3387872.7905 9604024.2488,3387826.4543 9603929.3106,3387732.5115 9603786.2117,3387734.7949 9603500.7497,3387783.9704 9603310.5464,3387879.7351 9603263.1097,3387974.3966 9603313.2555,3388350.7514 9603601.3834,3388538.8826 9603839.3643,3388583.1899 9604076.9723),(3388511.1752 9596210.8704,3388510.1061 9596303.2488,3388178.4495 9596395.8878,3388033.6168 9596490.8291,3387845.421 9596488.0582,3387846.5646 9596440.6983,3387799.9159 9596345.3938,3387895.3625 9596250.2028,3388084.6953 9596205.6143,3388179.3326 9596110.2828,3388181.5468 9595970.5505,3388182.8211 9595827.8737,3388278.7485 9595687.9865,3388374.2963 9595687.9376,3388511.1752 9596210.8704),(3389644.3911 9596694.0326,3389596.6693 9596739.1012,3389454.1867 9596736.3877,3389406.1625 9596736.5972,3389312.9194 9596644.0828,3389266.1026 9596593.9705,3389409.5689 9596406.2089,3389550.9306 9596456.269,3389645.378 9596551.5333,3389644.3911 9596694.0326),(3390166.4307 9596459.215,3390165.4524 9596601.7127,3389976.051 9596649.3121,3389834.5225 9596601.5571,3389834.6768 9596551.2763,3389930.4378 9596456.541,3389930.4615 9596364.1867,3389930.5371 9596268.8877,3389980.4124 9596268.7739,3390072.9299 9596318.9116,3390166.4307 9596459.215),(3391108.372 9597180.3268,3391105.9629 9597417.7103,3390915.6661 9597555.4329,3390773.2463 9597602.8655,3390631.8747 9597460.4497,3390538.1832 9597409.7029,3390538.3615 9597315.0367,3390539.3981 9597174.6589,3390872.521 9597035.0317,3391014.8536 9597034.9252,3391108.372 9597180.3268),(3390462.8487 9595088.6906,3390273.2474 9595088.4799,3390178.8886 9595038.2546,3390179.766 9594943.1119,3390227.5562 9594850.7422,3390275.6697 9594803.2052,3390512.8833 9594853.6471,3390606.5193 9594948.74,3390462.8487 9595088.6906),(3391218.6402 9595284.0601,3391265.3817 9595429.4523,3391217.5995 9595521.8357,3391122.7488 9595521.4093,3390981.2318 9595376.2608,3390982.5957 9595236.4037,3391030.2239 9595141.2309,3391125.0703 9595141.6584,3391218.6402 9595284.0601),(3390747.7286 9589505.8986,3390700.0712 9589550.9136,3390510.9079 9589551.2041,3390370.4673 9589361.1527,3390370.2321 9589313.3849,3390323.9287 9589218.6729,3390420.5042 9588981.0103,3390468.2409 9588980.9737,3390607.3816 9589268.5669,3390748.9525 9589411.2989,3390747.7286 9589505.8986),(3391930.0026 9589516.7119,3391786.3529 9589703.866,3391692.9171 9589703.8827,3391598.3838 9589653.8769,3391599.2584 9589558.8264,3391695.152 9589371.7374,3391837.8484 9589326.9443,3392027.0071 9589374.5693,3392073.4712 9589419.0437,3391930.0026 9589516.7119),(3392689.0869 9589331.9835,3392688.2378 9589427.0505,3392498.9218 9589424.5947,3392357.5679 9589329.6602,3392358.8389 9589237.1945,3392406.3997 9589142.1085,3392454.3814 9589141.8816,3392642.7765 9589237.2708,3392689.0869 9589331.9835),(3389660.4096 9583914.9266,3389708.5491 9583820.2314,3389849.7113 9583778.0215,3389992.0454 9583869.9435,3389991.1671 9583964.9365,3389896.4325 9584012.4061,3389754.9644 9584009.8415,3389755.2922 9583962.427,3389660.4096 9583914.9266),(3389115.1262 9581453.0834,3388827.9877 9581874.7339,3388776.876 9582346.6638,3388680.9257 9582488.6,3388443.8059 9582486.2378,3388303.5042 9582388.4975,3388208.9812 9582341.4724,3388165.3426 9582106.4017,3387977.524 9581772.0649,3387978.3566 9581632.1754,3388027.4204 9581442.5474,3388218.7096 9581207.7782,3388407.1313 9581162.9741,3388833.443 9581168.5054,3389069.4545 9581310.8952,3389115.1262 9581453.0834),(3389265.2296 9580411.9624,3389076.18 9580459.4317,3388935.9944 9580362.3897,3388889.2614 9580317.4735,3388890.33 9580172.3523,3388984.9568 9580127.8733,3389174.1378 9580127.4541,3389266.7244 9580225.178,3389265.2296 9580411.9624),(3389930.0384 9580087.8897,3389785.2307 9580274.9624,3389692.7139 9580275.1136,3389693.042 9580227.7243,3389789.6695 9579993.1751,3389884.3605 9579945.7337,3389930.0384 9580087.8897),(3392709.5061 9586873.5201,3392567.1211 9586966.0506,3392425.4244 9586965.8409,3392235.0447 9587010.6766,3392188.3481 9587010.6971,3392047.1265 9586960.7499,3392000.186 9586913.0182,3392189.6062 9586820.9594,3392285.3678 9586681.2041,3392474.5367 9586633.6185,3392663.9015 9586734.0338,3392709.5061 9586873.5201),(3392194.1596 9586301.3117,3392051.5342 9586346.078,3391956.8565 9586298.4098,3392007.216 9586206.3934,3392100.6902 9586159.0893,3392243.0681 9586158.7968,3392290.0245 9586206.5084,3392194.1596 9586301.3117),(3393079.9276 9587867.7824,3392984.4062 9587963.0851,3392889.6202 9587962.6934,3392843.0041 9587915.4412,3392796.3698 9587868.2028,3392939.7681 9587630.3811,3393034.4563 9587585.8078,3393129.1541 9587633.4721,3393079.9276 9587867.7824),(3394082.1118 9586931.8768,3394126.6234 9587074.3557,3394078.5837 9587166.1646,3393982.8678 9587166.4724,3393795.8857 9587071.5835,3393749.1601 9587023.6962,3393655.657 9586881.477,3393655.7382 9586834.2079,3393751.2396 9586738.9123,3394035.2505 9586741.7311,3394128.8369 9586836.6738,3394082.1118 9586931.8768),(3399001.4637 9586876.7163,3398763.1538 9587108.7135,3398667.3479 9587108.416,3398573.9892 9587061.2738,3398573.7084 9587013.5218,3398623.0749 9586871.2707,3398813.2229 9586684.0131,3398907.6414 9586683.8686,3399001.4575 9586781.5317,3399001.4637 9586876.7163),(3400406.2925 9588778.372,3400310.6398 9588918.2641,3400122.4747 9588870.8068,3400122.1666 9588823.0565,3400170.2634 9588680.952,3400312.6155 9588683.475,3400359.3212 9588683.408,3400406.2925 9588778.372),(3399243.103 9586119.8436,3399195.3317 9586167.1962,3399053.4905 9586164.3107,3399005.7509 9586164.4115,3398959.0532 9586069.2959,3398961.3668 9585882.3324,3399056.0531 9585834.7586,3399196.1001 9585976.999,3399243.103 9586119.8436),(3401275.6293 9586230.3733,3401227.7277 9586370.1061,3401085.3066 9586417.8218,3400943.8439 9586417.595,3400943.9519 9586367.3729,3401087.3407 9586180.1795,3401229.9351 9586135.2423,3401276.7643 9586180.1249,3401275.6293 9586230.3733),(3403018.9369 9587229.9844,3402830.9714 9587185.3784,3402736.1936 9587185.1012,3402689.4616 9587042.7363,3402786.1025 9586902.8118,3403022.2892 9586760.8556,3403400.9198 9586765.9182,3403827.1286 9586673.5483,3403969.874 9586626.264,3404016.3138 9586720.8636,3403967.3483 9586910.8951,3403776.998 9587050.5265,3403634.5534 9587145.5625,3403586.725 9587238.0745,3403680.1454 9587427.6251,3403680.2295 9587475.5448,3403584.4951 9587570.4853,3403253.9792 9587567.9176,3403159.226 9587520.3713,3403112.6033 9587470.2382,3403113.4335 9587330.0553,3403018.9369 9587229.9844),(3411208.7752 9586151.7328,3411162.0924 9586194.0401,3410972.9124 9586194.1454,3410972.9678 9586149.0114,3411020.8845 9586054.1605,3411067.387 9586009.078,3411256.705 9586104.1448,3411208.7752 9586151.7328),(3408827.8852 9580982.1457,3408638.5978 9581076.822,3408497.2224 9581029.4961,3408450.6225 9580979.4259,3408545.25 9580792.2309,3408735.3393 9580792.1537,3408829.1815 9580842.4069,3408827.8852 9580982.1457),(3409344.607 9581598.9492,3409203.0397 9581548.8568,3409108.3851 9581456.3164,3409155.2492 9581361.5823,3409298.8649 9581364.3844,3409487.0573 9581506.6774,3409344.607 9581598.9492),(3412207.4611 9585210.4375,3412112.8955 9585352.6776,3412017.2394 9585400.4425,3411923.734 9585352.8047,3411923.5342 9585302.7691,3411971.5105 9585112.5971,3412114.1221 9585068.1361,3412160.8078 9585068.0017,3412207.4611 9585210.4375),(3409069.5605 9580086.0577,3409069.6782 9580181.1516,3409021.7693 9580228.6868,3408881.2761 9580225.7811,3408832.3645 9580181.0507,3408738.7525 9580083.4134,3408692.1391 9579944.0008,3408881.4062 9579943.7837,3409022.7658 9579991.096,3409069.5605 9580086.0577),(3413248.3067 9585168.2036,3413200.4195 9585263.0557,3413011.26 9585263.2078,3412965.6396 9585213.1045,3412917.5465 9585073.1767,3412965.4609 9585025.5859,3413106.8561 9584978.361,3413249.5069 9585073.4939,3413248.3067 9585168.2036),(3413582.3174 9584696.4399,3413534.4365 9584791.2874,3413392.1691 9584743.885,3413345.301 9584648.8852,3413440.9137 9584553.8558,3413488.8177 9584413.9029,3413630.004 9584414.0912,3413582.3174 9584696.4399),(3413113.8339 9583889.6376,3413019.0736 9583939.6707,3412877.6464 9583842.2109,3412829.9655 9583797.2737,3412831.0107 9583607.441,3412925.7305 9583607.6148,3413113.7888 9583750.0485,3413113.8339 9583889.6376),(3411203.7369 9578824.2382,3411109.0301 9578916.3474,3411014.1185 9578916.3316,3410730.4498 9578818.8647,3410353.0673 9578724.1248,3410259.6382 9578671.4319,3410306.4695 9578534.5962,3410449.7256 9578439.5314,3410732.9542 9578445.0488,3411015.4356 9578586.9652,3411156.9102 9578682.091,3411203.7369 9578824.2382),(3415895.7135 9585463.769,3415751.8138 9585416.1313,3415754.4218 9585323.9994,3415800.8572 9585181.4363,3415851.0142 9585136.5313,3415990.228 9585276.3681,3415895.7135 9585463.769),(3415805.3881 9584424.4445,3415616.062 9584472.0757,3415428.1349 9584424.8362,3415381.4761 9584374.7817,3415475.9927 9584329.9824,3415665.0917 9584282.5208,3415806.5601 9584329.7445,3415805.3881 9584424.4445),(3416513.371 9584664.4499,3416513.5714 9584759.6055,3416416.6004 9584949.5464,3416228.1938 9585041.619,3416133.6214 9584994.0752,3416087.0768 9584849.3565,3416134.7569 9584806.9999,3416229.5086 9584756.9244,3416278.3724 9584569.6537,3416419.9665 9584522.209,3416513.371 9584664.4499),(3421878.8532 9590982.2995,3421784.4618 9591030.0077,3421737.433 9590839.5664,3421785.2703 9590744.6082,3421833.4859 9590510.2099,3421833.0426 9590412.1982,3421645.1219 9590317.5899,3421597.1753 9590269.8844,3421598.2837 9590129.9453,3421693.1541 9590035.2696,3421883.3736 9589987.595,3422120.2606 9589752.5606,3422168.3561 9589752.8052,3422309.7069 9589800.132,3422450.9818 9589800.1676,3422592.5875 9589755.5241,3422735.9426 9589565.364,3422878.4068 9589517.895,3422973.1843 9589472.7968,3423019.9496 9589613.1418,3422972.1002 9589802.8406,3423017.5849 9590180.16,3422923.3279 9590325.4041,3422590.3156 9590465.2444,3422305.1371 9590697.2945,3422258.4208 9590697.4874,3422117.1311 9590697.4486,3422069.0491 9590697.19,3421878.8532 9590982.2995),(3422873.1515 9591032.6306,3422777.28 9591222.7861,3422682.7008 9591222.5613,3422587.8966 9591222.5009,3422587.8592 9591172.2581,3422683.8211 9590937.6014,3422731.4892 9590890.0793,3422872.8619 9590937.4041,3422873.1515 9591032.6306),(3427028.2753 9593793.4747,3426980.8278 9593983.7902,3427026.2195 9594316.3187,3426931.6975 9594411.5949,3426743.3543 9594313.6104,3426410.7718 9594408.7947,3426220.0162 9594503.6105,3426078.9313 9594548.6484,3425936.5483 9594548.7065,3425841.9463 9594453.7247,3425843.1147 9594266.2164,3425985.4668 9594121.0931,3426365.0114 9593790.7796,3426601.9869 9593650.9156,3426792.4724 9593651.0632,3426980.7573 9593698.7627,3427028.2753 9593793.4747),(3425439.1241 9588061.7202,3425438.0018 9588299.2846,3425437.9647 9588394.0089,3425436.8682 9588676.7016,3425483.4062 9588818.6678,3425483.4635 9589008.7638,3425198.6173 9589148.9227,3425102.7254 9589338.3948,3425197.2614 9589573.1976,3425196.3965 9589715.9039,3424817.9048 9589668.661,3424107.4119 9589760.5849,3423919.5205 9589663.0942,3423826.0426 9589568.1106,3423731.4226 9589380.7303,3423731.2637 9589238.0749,3423826.1008 9589143.3864,3424016.3684 9589051.1754,3424110.8638 9588956.0056,3424206.7125 9588671.1804,3424350.472 9588388.9076,3424634.1345 9588156.4262,3424919.1647 9587919.3098,3425108.4419 9587869.308,3425251.031 9587824.6001,3425392.367 9587871.8606,3425439.1241 9588061.7202),(3428734.1925 9593421.6359,3428733.7438 9593373.8422,3428592.3972 9593136.2242,3428499.2625 9592949.06,3428356.3695 9592851.1287,3427980.2129 9592191.2485,3427981.4259 9592046.0135,3427981.5428 9591998.5435,3428029.3041 9591903.5142,3428123.891 9591903.677,3428265.4161 9592046.335,3428546.8981 9592663.8145,3428688.4616 9592806.4665,3428829.6554 9592948.6664,3428876.443 9593231.3,3429017.9101 9593421.4371,3428970.0792 9593609.1543,3428734.1925 9593421.6359),(3423535.241 9590892.7844,3423536.4593 9590705.3716,3423629.7892 9590657.6898,3423725.8312 9590705.635,3423820.4535 9590847.8867,3423915.1329 9590895.3808,3424010.78 9590615.7485,3424105.4634 9590518.2462,3424245.8364 9590615.8274,3424245.5443 9590850.6554,3424102.9942 9591132.8286,3424102.1111 9591275.5667,3424007.2266 9591320.0296,3423912.7265 9591275.3123,3423676.776 9591082.7852,3423676.5211 9591037.7995,3423535.241 9590892.7844),(3423302.828 9589850.4132,3423303.7887 9589808.1827,3423255.8225 9589755.4011,3423257.2994 9589612.9951,3423398.3179 9589568.0377,3423446.3109 9589612.7846,3423493.141 9589808.4516,3423445.1756 9589900.6343,3423302.828 9589850.4132),(3419342.175 9586616.3774,3419152.8982 9586711.3601,3419010.0656 9586710.9959,3419010.2319 9586663.5622,3419060.4715 9586473.7189,3419106.923 9586423.501,3419296.4439 9586423.6877,3419342.175 9586616.3774),(3420608.5216 9589085.0685,3420514.046 9589177.2423,3420466.3087 9589177.4549,3420325.1187 9589082.6638,3420278.0699 9589032.1238,3420371.4984 9588939.9984,3420467.4835 9588892.5919,3420609.8588 9588939.8987,3420656.5916 9588989.9421,3420608.5216 9589085.0685),(3419762.685 9587945.3229,3419620.321 9587943.153,3419573.5271 9587942.6708,3419478.6603 9587845.0926,3419480.139 9587705.6824,3419668.1618 9587803.0829,3419763.0003 9587895.5839,3419762.685 9587945.3229),(3419379.6777 9588889.9554,3419190.4332 9588794.8743,3418906.6278 9588744.6717,3418860.0893 9588697.3976,3418765.2998 9588697.2736,3418669.6428 9588599.559,3418766.4873 9588365.1702,3418720.863 9588082.8098,3418768.7049 9587987.8876,3418911.3897 9587940.333,3419004.6291 9588082.7937,3419051.3936 9588225.2652,3419098.0965 9588225.0908,3419288.3882 9588037.6354,3419477.9447 9588037.8179,3419619.2811 9588180.5333,3419808.5797 9588322.8754,3419901.9203 9588512.6,3419948.5408 9588702.5223,3419899.6354 9588984.6571,3419757.0316 9589174.8871,3419614.719 9589174.8486,3419521.2515 9589032.5245,3419379.6777 9588889.9554),(3419945.2411 9589507.3993,3419896.2599 9589646.8558,3419849.3875 9589694.4888,3419754.9062 9589599.5021,3419754.8437 9589552.2143,3419755.006 9589504.7615,3419802.8481 9589364.6923,3419897.4888 9589412.2231,3419945.2411 9589507.3993),(3421453.8099 9590697.4597,3421358.9295 9590792.1415,3421216.7615 9590789.8193,3421217.5382 9590694.552,3421265.367 9590599.5797,3421406.8218 9590552.1926,3421501.6185 9590552.2667,3421453.8099 9590697.4597),(3428316.4411 9590768.754,3428221.8543 9590673.8509,3428222.0853 9590578.93,3428364.536 9590531.3584,3428553.5631 9590673.8905,3428646.9923 9590816.2961,3428647.346 9590911.5208,3428599.5971 9591006.5406,3428504.7767 9591006.5627,3428457.9507 9590911.3856,3428411.1256 9590816.2093,3428316.4411 9590768.754),(3432375.3619 9595327.9396,3432279.5199 9595325.0772,3432092.2941 9595229.9658,3431948.8513 9595230.1744,3431901.8688 9595182.4508,3431854.3231 9595182.5643,3431807.4371 9595087.3498,3431902.2496 9594992.4885,3432044.5097 9594945.0025,3432280.5468 9595039.7842,3432423.2777 9595137.8566,3432375.3619 9595327.9396),(3419249.9233 9575698.3429,3419248.7905 9575792.9274,3419202.0681 9575887.6448,3419107.5846 9575935.3987,3418966.2969 9575885.337,3418966.2336 9575793.0875,3419014.1704 9575650.9701,3419109.6202 9575555.9958,3419250.0881 9575650.9835,3419249.9233 9575698.3429),(3418781.413 9574847.8357,3418688.0455 9574892.5832,3418545.335 9574845.0365,3418450.6378 9574797.7536,3418452.0223 9574703.0036,3418546.5852 9574610.8781,3418688.0819 9574655.6806,3418734.7072 9574705.6472,3418781.413 9574847.8357),(3419871.0747 9574189.5465,3419821.2347 9574284.3436,3419681.0889 9574376.6278,3419490.3855 9574660.9046,3419443.7563 9574661.081,3419395.7642 9574660.8074,3419302.4208 9574518.8017,3419302.5188 9574329.083,3419302.6047 9574234.5617,3419446.0356 9574094.8202,3419823.348 9574097.5278,3419871.0747 9574189.5465),(3416629.5777 9570870.3306,3416439.465 9570870.7703,3416392.5211 9570870.4496,3416393.8652 9570728.6053,3416488.3067 9570680.9182,3416583.0635 9570633.7234,3416676.4986 9570728.3556,3416629.5777 9570870.3306),(3417058.4153 9569881.0901,3417059.3655 9569691.6321,3416871.4381 9569455.2814,3416966.9316 9569078.6887,3416921.5101 9568889.2489,3416970.6509 9568750.0232,3417016.9765 9568607.7883,3417158.5466 9568560.2597,3417347.8027 9568421.0269,3417395.9348 9568374.0017,3417443.5211 9568231.5641,3417586.2202 9568184.6452,3417726.2343 9568279.0667,3417725.0759 9568423.6452,3417725.1348 9568565.8793,3417865.3617 9568705.1602,3417960.2713 9568660.7326,3418197.0911 9568379.034,3418105.9273 9567858.1725,3418153.8341 9567716.2204,3418296.4647 9567577.1508,3418343.0554 9567576.9811,3418674.951 9567295.7218,3418722.51 9567153.2982,3418676.033 9567059.0314,3418486.7016 9567008.9255,3418677.0364 9566635.1551,3418867.4218 9566398.518,3419008.8265 9566306.7882,3419291.6308 9566306.941,3419480.8484 9566401.3725,3419574.3719 9566451.5648,3419858.2135 9566356.5809,3419999.745 9566404.0908,3420469.3224 9566687.7075,3420564.0593 9566785.6389,3420609.7028 9567069.2605,3420656.2153 9567208.5149,3420938.9216 9567305.9855,3421127.2964 9567448.2328,3421220.7469 9567542.7702,3421220.6635 9567637.2155,3421173.0441 9567682.447,3420890.1791 9567637.3578,3420606.1166 9567679.5364,3420323.6866 9567727.0356,3420134.2586 9567821.486,3419991.9889 9567961.0715,3419803.5161 9568008.3443,3419662.3549 9567958.3511,3419567.5644 9567958.4347,3418810.5659 9568426.3209,3418809.4927 9568663.0244,3418762.7287 9568710.5092,3418761.7444 9568802.7092,3418479.0797 9568897.4795,3418336.1491 9568944.5837,3418240.7224 9569226.0733,3418381.9895 9569415.4298,3418380.9589 9569510.5741,3418334.0769 9569557.418,3418144.8683 9569605.1722,3417955.7709 9569697.1275,3417717.4116 9570168.0234,3417387.9822 9570073.5154,3417058.4153 9569881.0901),(3426505.6708 9580590.061,3426411.1429 9580687.4401,3426269.7746 9580687.6525,3426175.1551 9580590.0734,3426128.3534 9580497.9773,3426128.6073 9580403.1936,3426222.8578 9580355.5076,3426365.4593 9580403.1362,3426507.1339 9580498.02,3426505.6708 9580590.061),(3420273.4165 9568386.9715,3419990.7821 9568481.7886,3419469.6807 9568760.8455,3419422.7483 9568760.5422,3419422.8328 9568666.096,3419422.9966 9568618.7838,3419566.261 9568336.9056,3420085.3332 9568245.192,3420368.9257 9568058.1833,3420463.7173 9568058.0904,3420273.4165 9568386.9715),(3421168.4988 9568910.7226,3420931.1776 9569097.1042,3420836.71 9569097.6819,3420742.9979 9569049.776,3420695.2862 9569002.8534,3420696.2911 9568907.7158,3420837.7858 9568863.0699,3420885.737 9568813.2378,3420932.1811 9568673.7493,3421026.8914 9568626.5165,3421168.4667 9568674.0213,3421168.4988 9568910.7226),(3420935.7227 9568108.4187,3420839.8846 9568250.1442,3420745.334 9568250.0627,3420745.4186 9568200.6279,3420699.7617 9568058.541,3420795.497 9567966.2676,3420889.0092 9567916.2878,3420935.6106 9567966.194,3420935.7227 9568108.4187),(3420698.6798 9568671.4202,3420601.7376 9568766.0362,3420459.3931 9569050.1966,3420270.0898 9569142.3772,3420080.95 9569142.2133,3420080.9461 9569092.1144,3420080.6879 9568997.1844,3420272.2966 9568763.1749,3420461.5984 9568529.4076,3420602.991 9568529.1309,3420698.6798 9568671.4202),(3417970.0264 9566680.0398,3417827.6291 9566863.9173,3417781.0328 9566914.167,3417590.3356 9566958.6719,3417449.1931 9566958.7313,3417402.6058 9566958.896,3417355.6833 9566958.5809,3417308.8873 9566863.8297,3417497.9291 9566771.9265,3417591.6613 9566771.9102,3417781.9068 9566582.5922,3417970.0161 9566629.9721,3417970.0264 9566680.0398),(3429026.5063 9575596.0326,3428930.592 9575690.7905,3428837.2683 9575735.6595,3428554.2684 9575640.4736,3428506.5879 9575640.7467,3428554.2524 9575545.9347,3428649.0152 9575498.5534,3428884.9224 9575403.7704,3429026.149 9575501.015,3429026.5063 9575596.0326),(3429546.2199 9575548.4946,3429498.2151 9575690.8513,3429451.8235 9575690.9056,3429404.9047 9575646.2518,3429263.5306 9575359.2788,3429263.4136 9575264.0851,3429311.5375 9575216.9303,3429498.1583 9575216.656,3429546.2199 9575548.4946),(3430063.7455 9576164.4981,3429967.9555 9576211.9316,3429922.3645 9576212.1228,3429781.054 9576069.8284,3429686.4959 9575927.9442,3429686.6031 9575880.583,3429687.5636 9575598.3706,3429687.8209 9575548.7186,3429782.4248 9575646.187,3429828.8348 9575646.1172,3429875.4372 9575832.8492,3430063.7316 9576069.9384,3430063.7455 9576164.4981),(3430442.4661 9575978.0259,3430394.2408 9576072.5549,3430205.2368 9576117.5158,3430158.3685 9576069.9118,3430111.6055 9575974.946,3430159.5904 9575880.5996,3430348.7757 9575838.4132,3430395.7006 9575883.0629,3430442.4661 9575978.0259),(3431666.732 9577252.3841,3431571.9595 9577397.3272,3431429.6742 9577394.7078,3431430.9862 9577350.0782,3431383.0293 9577207.9429,3431430.7685 9577065.7239,3431524.3886 9577065.7131,3431620.173 9577115.7664,3431666.732 9577252.3841),(3415562.517 9557662.7605,3415467.8976 9557709.8565,3415326.6831 9557710.0438,3415279.7548 9557662.6573,3415327.6515 9557520.9271,3415374.5222 9557521.2533,3415515.9763 9557520.8866,3415562.517 9557662.7605),(3414859.0947 9557045.8438,3414623.084 9557140.3375,3414528.6034 9557093.1279,3414528.4594 9557045.415,3414529.4511 9556998.3163,3414624.2577 9556904.0026,3414812.3966 9556906.2787,3414859.0947 9557045.8438),(3410292.8458 9556504.4944,3410104.7449 9556549.1667,3409963.1792 9556454.6645,3409916.6488 9556454.786,3409916.5033 9556360.0259,3409917.5811 9556267.9898,3410105.8505 9556221.0237,3410293.7298 9556362.6263,3410339.4057 9556412.375,3410292.8458 9556504.4944),(3408931.2295 9555742.8929,3408743.3399 9555693.2564,3408509.2379 9555645.673,3408509.6215 9555601.2272,3408461.7169 9555506.7847,3408556.2395 9555412.0825,3408698.4601 9555411.9702,3408980.1291 9555506.4476,3409213.9926 9555698.2767,3409260.8172 9555837.6854,3409211.8089 9556026.4375,3409023.8731 9556073.8604,3408929.2139 9556073.8205,3408929.098 9555979.0516,3409025.9072 9555789.98,3408931.2295 9555742.8929),(3407757.1108 9555265.0767,3407709.087 9555359.6724,3407567.7379 9555356.9279,3407475.3714 9555262.5344,3407521.8084 9555167.688,3407617.483 9555167.7161,3407758.0332 9555170.2906,3407757.1108 9555265.0767),(3409470.0058 9560316.0835,3409234.0244 9560455.2556,3408996.7731 9560688.818,3408854.4383 9560780.9734,3408760.7993 9560688.8514,3408713.9097 9560641.3936,3408523.7995 9560688.9066,3408430.2897 9560733.625,3408336.8669 9560686.2638,3408243.2299 9560589.0691,3408104.0932 9560449.9196,3407914.9051 9560402.5605,3407820.2469 9560352.4846,3407774.4996 9560115.8379,3407964.8686 9559834.8871,3408768.8026 9559417.3137,3408863.1407 9559322.72,3408910.0685 9559278.1351,3408769.9158 9559228.1517,3408533.8025 9559178.3285,3408487.0826 9559133.6594,3408487.9973 9559038.821,3408582.7523 9558988.8388,3408771.9382 9558897.0758,3408914.7753 9558897.2742,3409053.7188 9558944.515,3409100.2253 9559041.4941,3409287.4633 9559230.7679,3409570.302 9559278.1493,3409852.7538 9559375.0718,3410178.9012 9559800.721,3410225.8229 9559895.2397,3410084.3574 9559942.5898,3409896.1953 9559895.2515,3409470.0058 9560316.0835),(3410689.0286 9561453.6941,3410593.0453 9561593.0284,3410499.594 9561592.7995,3410403.8578 9561500.757,3410311.383 9561498.3604,3410218.1185 9561403.7794,3410171.1886 9561309.2403,3410359.4122 9561264.5227,3410500.6968 9561311.5191,3410642.0932 9561359.1573,3410689.0286 9561453.6941),(3409703.6482 9560646.6933,3409607.8184 9560788.7802,3409561.1102 9560833.2141,3409325.1324 9560833.2638,3409278.5734 9560786.2874,3409326.3674 9560691.7877,3409420.9376 9560597.0058,3409515.6848 9560504.9908,3409656.9453 9560504.9041,3409703.46 9560554.808,3409703.6482 9560646.6933),(3410637.4529 9562018.4754,3410684.1675 9562113.1858,3410731.1075 9562207.7328,3410636.7274 9562255.2959,3410542.8651 9562252.4649,3410260.3698 9562110.5467,3410213.4455 9562063.1016,3410166.6914 9561971.321,3410167.8024 9561829.1778,3410310.3142 9561734.684,3410451.595 9561734.5834,3410592.1451 9561832.1364,3410637.4529 9562018.4754),(3411716.4986 9563204.2021,3411668.3643 9563251.1592,3411619.5193 9563298.6379,3411479.0644 9563295.9292,3411385.5945 9563295.7108,3411338.9761 9563201.6323,3411338.8496 9563153.8777,3411433.565 9563106.8125,3411528.1113 9563062.0156,3411668.5161 9563109.6767,3411716.4986 9563204.2021),(3405800.8813 9559162.5414,3405472.3915 9559065.216,3405332.1971 9559018.1196,3405237.4116 9558923.2421,3405238.6172 9558781.1806,3405286.6207 9558642.431,3405427.7571 9558594.6938,3405664.0905 9558550.2785,3405852.1811 9558597.719,3405993.4158 9558644.762,3406180.3401 9558881.3425,3406367.3354 9559072.9799,3406602.3293 9559167.8542,3406884.8832 9559122.8179,3407027.6179 9558981.1706,3407123.291 9558747.3026,3407217.9863 9558700.2826,3407264.7532 9558700.0118,3407358.0673 9558936.465,3407498.6008 9559031.0879,3407544.0052 9559220.1365,3406977.4843 9559453.9678,3406694.9293 9559546.0814,3406645.6747 9559685.0636,3406598.8925 9559732.418,3406364.2041 9559637.9961,3406129.3561 9559540.8215,3405988.9782 9559304.1378,3405800.8813 9559162.5414),(3407846.8958 9563748.0638,3407657.3498 9563840.047,3407184.4094 9564166.0605,3406995.1367 9564165.7721,3406808.1859 9564023.8947,3406573.2826 9563834.5792,3406479.6498 9563737.3073,3406481.0595 9563453.6396,3406671.3112 9563219.861,3406908.5753 9562938.543,3406814.7826 9562796.4812,3406863.7077 9562609.8639,3407005.2426 9562515.4456,3407288.9307 9562470.346,3407852.2068 9562757.0554,3407994.7573 9562709.6968,3408230.9478 9562665.3595,3408418.987 9562667.9497,3408654.9893 9562854.2057,3409218.199 9563003.9468,3409499.8664 9563237.8667,3409687.1412 9563430.1904,3409828.0728 9563474.5962,3410065.4199 9563195.9442,3410066.5049 9563006.6806,3410209.0273 9562865.0642,3410302.5319 9562959.4999,3410585.4479 9563056.9269,3410630.7572 9563104.1186,3410584.1433 9563293.4815,3410535.2953 9563480.139,3410581.8284 9563716.3754,3410580.9097 9563903.3693,3410484.9664 9564044.8748,3410343.7686 9564092.7365,3410202.3287 9564045.0748,3410061.8798 9563903.1646,3409919.7192 9563948.1001,3409826.0258 9563995.1442,3409776.9481 9564276.2154,3408974.3386 9564413.0736,3408738.4365 9564410.8038,3408455.6268 9564455.2804,3408313.0822 9564410.5722,3408220.7394 9564263.0542,3407940.2078 9563792.6556,3407846.8958 9563748.0638),(3410667.5512 9565178.1945,3410431.4593 9565220.3289,3410290.1799 9565175.4297,3410243.359 9565175.7317,3410243.4139 9564986.4436,3410339.0323 9564941.6063,3410432.7442 9564941.6723,3410527.2888 9564988.9821,3410667.52 9565131.0846,3410667.5512 9565178.1945),(3409178.0735 9561868.728,3409035.7679 9561915.9368,3408847.6996 9561916.2932,3408754.064 9561866.1751,3408753.9313 9561771.3421,3408896.6367 9561679.641,3409178.2892 9561774.3603,3409178.0735 9561868.728),(3409692.3863 9562767.4516,3409596.9682 9562815.0351,3409362.0153 9562717.896,3409220.3605 9562670.4047,3409220.425 9562625.4216,3409268.2299 9562530.8977,3409409.8584 9562531.2943,3409644.6461 9562625.6482,3409739.3213 9562675.7328,3409692.3863 9562767.4516),(3406870.6234 9561290.4458,3406870.3907 9561337.7083,3406542.1514 9561335.0766,3405788.5713 9561140.9247,3405648.2465 9561046.0796,3405554.7983 9560998.7119,3405554.8109 9560904.5344,3405743.9803 9560812.159,3405745.179 9560622.9463,3405839.8837 9560575.9437,3405934.272 9560528.4472,3406262.903 9560767.6669,3406685.6982 9560959.5516,3406872.5905 9561148.4533,3406870.6234 9561290.4458),(3403693.7105 9557216.1504,3403600.0642 9557216.021,3403506.6877 9557168.6418,3403506.6959 9557121.5854,3403554.3762 9557029.4552,3403743.7158 9557029.6585,3403789.1986 9557076.6694,3403882.9035 9557171.5802,3403693.7105 9557216.1504),(3402803.9733 9556456.7902,3402616.0245 9556457.0026,3402522.6429 9556409.6311,3402427.836 9556359.6853,3402428.8501 9556217.821,3402571.512 9556126.3164,3402711.8868 9556173.2629,3402850.8681 9556317.4849,3402803.9733 9556456.7902),(3403222.578 9557213.2752,3403128.1877 9557307.7562,3402939.8863 9557307.497,3402845.1157 9557352.3357,3402750.7639 9557399.7613,3402610.4348 9557349.8635,3402658.2831 9557255.4492,3402752.763 9557116.0073,3402988.76 9557024.163,3403130.1114 9557074.0243,3403224.9004 9557165.9712,3403222.578 9557213.2752),(3401354.713 9554941.7649,3401261.4253 9554942.0875,3401119.826 9554844.6752,3401121.1154 9554797.4288,3401121.1554 9554750.3744,3401262.3882 9554752.5545,3401402.5232 9554894.4451,3401354.713 9554941.7649),(3408264.0799 9564786.5234,3408075.0252 9564976.0222,3407744.0124 9565020.316,3407698.53 9564970.327,3407698.6939 9564925.9869,3407793.3474 9564831.1533,3407887.7529 9564783.6193,3408077.0929 9564691.7828,3408218.4224 9564691.721,3408264.0799 9564786.5234),(3407844.3224 9564313.1458,3407748.8768 9564360.7181,3407607.3884 9564405.1087,3407512.8714 9564310.6507,3407513.9025 9564263.5046,3407560.7044 9564216.114,3407750.0318 9564171.4099,3407844.3898 9564263.0813,3407844.3224 9564313.1458),(3403637.5145 9565606.3196,3403638.5672 9565559.165,3403591.9949 9565512.138,3403591.9379 9565417.2423,3403639.7942 9565369.839,3403779.8586 9565417.1716,3403968.2424 9565514.5965,3404014.9025 9565609.3923,3404015.0539 9565654.2163,3403826.7937 9565653.8127,3403637.5145 9565606.3196),(3395997.0138 9547604.6381,3395902.4886 9547652.0965,3395761.1967 9547652.1229,3395620.8745 9547507.6835,3395623.1287 9547415.7385,3395716.6794 9547321.3204,3395904.7116 9547368.7367,3395997.0138 9547604.6381),(3395431.75 9547649.5963,3395385.0401 9547693.8661,3395243.5233 9547694.0475,3395150.0537 9547646.8147,3395104.4078 9547552.3337,3395151.2409 9547458.1348,3395199.0623 9547410.8878,3395339.2357 9547457.9166,3395431.75 9547649.5963),(3410843.8636 9550669.1003,3410844.211 9550716.6057,3410702.5534 9550716.3989,3410561.2628 9550666.7137,3410562.3448 9550621.7784,3410608.9923 9550577.4033,3410703.6228 9550527.4704,3410797.1461 9550577.4855,3410843.8636 9550669.1003),(3409571.7094 9550992.1862,3409382.4689 9551131.0727,3409334.3607 9551083.8891,3409383.3674 9550989.3127,3409431.3298 9550894.7796,3409666.1699 9550897.5318,3409571.7094 9550992.1862),(3409990.1858 9551795.1138,3409848.8046 9551934.3222,3409613.7556 9551886.838,3409613.9663 9551792.6043,3409755.1959 9551697.6594,3409849.9594 9551653.4331,3409991.4446 9551747.8728,3409990.1858 9551795.1138),(3414418.6164 9551112.9876,3414323.8824 9551157.2635,3414135.6971 9551157.2766,3413900.8351 9551204.6105,3413571.3325 9551154.9772,3413524.4965 9551154.6411,3413477.7824 9551013.0649,3413572.3803 9550921.128,3414325.0015 9550924.0707,3414371.8877 9550971.4172,3414418.6164 9551112.9876),(3417362.7436 9555551.4147,3417221.5647 9555551.635,3417079.8747 9555598.5984,3417032.3238 9555598.7901,3416985.2207 9555598.652,3416985.5134 9555507.1465,3417081.1621 9555365.0797,3417174.9543 9555312.7673,3417269.1971 9555365.1771,3417362.7436 9555551.4147),(3415258.8959 9552387.9858,3414835.8195 9552385.4091,3414694.4945 9552290.88,3414647.8995 9552196.9676,3414743.55 9552054.9945,3414931.6806 9551916.0083,3415074.0305 9551868.5857,3415167.6556 9551915.6184,3415214.3467 9552010.181,3415213.507 9552104.9252,3415260.0319 9552246.678,3415353.6005 9552296.6531,3415353.4764 9552340.9139,3415258.8959 9552387.9858),(3416385.4967 9553191.3464,3416290.8512 9553241.3779,3415914.6215 9553099.3734,3415821.124 9552908.1212,3415962.6231 9552863.4828,3416103.7578 9552863.2846,3416338.7326 9553004.8373,3416385.4967 9553191.3464),(3418299.9942 9556357.6282,3418206.5461 9556310.4231,3418113.251 9556216.002,3418114.111 9555884.9304,3418020.669 9555837.7264,3417927.3812 9555743.3096,3417974.198 9555601.6318,3418680.7764 9555701.3915,3418821.1577 9555795.9406,3418962.5565 9555885.3941,3419008.1308 9556032.31,3418865.6461 9556124.1007,3418773.2183 9556031.9464,3418631.8681 9556029.4122,3418536.2933 9556218.5748,3418442.7341 9556310.5948,3418299.9942 9556357.6282),(3418589.5024 9554850.4741,3418401.4752 9554945.3252,3418353.8131 9555039.8005,3418212.1377 9555086.7804,3418165.3969 9554992.1939,3418166.5275 9554847.9046,3418308.1429 9554708.9537,3418497.3759 9554661.7613,3418685.4061 9554666.89,3418589.5024 9554850.4741),(3419388.9217 9555136.8813,3419294.1684 9555231.2406,3419154.0387 9555231.4506,3419058.091 9555373.0608,3418964.7073 9555372.9293,3418917.9379 9555278.3568,3418965.5951 9555183.8748,3419154.1211 9555042.2647,3419390.0502 9555042.574,3419388.9217 9555136.8813),(3418406.9484 9553766.1757,3418171.2302 9553863.5053,3418123.1115 9553863.4035,3418124.2427 9553719.1374,3418219.0108 9553624.7985,3418313.4172 9553579.9833,3418407.0602 9553627.0044,3418406.9484 9553766.1757),(3420652.2789 9557169.2508,3420464.2236 9556977.8439,3420464.2104 9556932.9107,3420465.3274 9556838.5793,3420606.6844 9556791.0703,3420745.8367 9556885.8095,3420888.3382 9557030.278,3420887.3098 9557216.6171,3420840.4639 9557311.2728,3420792.5499 9557311.0217,3420699.2417 9557266.6176,3420699.0515 9557213.8378,3420652.2789 9557169.2508),(3426463.9078 9565533.6811,3426369.4125 9565578.6665,3426181.3775 9565578.6137,3426181.1104 9565533.7907,3426181.2368 9565486.4994,3426229.1133 9565391.6589,3426371.7173 9565344.6054,3426464.0398 9565391.9873,3426463.9078 9565533.6811),(3425429.7182 9564353.2084,3425429.9814 9564398.0238,3425288.5456 9564537.1245,3425100.3094 9564537.2117,3425148.1553 9564305.9408,3425195.0111 9564256.16,3425384.2673 9564256.0399,3425429.7182 9564353.2084),(3417187.1563 9552727.1755,3416998.8677 9552913.436,3416857.4626 9552960.1999,3416809.8615 9552913.3617,3416763.952 9552724.0559,3417046.6378 9552537.9172,3417188.2774 9552490.9746,3417282.7706 9552585.162,3417187.1563 9552727.1755),(3418027.3852 9554377.9018,3417979.6613 9554475.3102,3417791.6965 9554567.1994,3417508.6308 9554564.5739,3417367.3082 9554517.1008,3417273.818 9554422.859,3417086.8125 9554230.7766,3417086.8749 9554089.4751,3417086.8318 9553997.511,3417276.1045 9553997.4005,3417510.6841 9554094.3564,3417792.5089 9554094.2608,3417933.8269 9554141.7237,3418027.2606 9554238.8969,3418027.3852 9554377.9018),(3429930.0997 9573376.4257,3429788.8705 9573376.685,3429740.8666 9573376.486,3429647.6089 9573234.4452,3429695.2475 9573139.6592,3429836.8274 9573139.8668,3429978.0276 9573237.0638,3430025.1036 9573284.4843,3429930.0997 9573376.4257),(3417054.7315 9551031.5729,3417006.8525 9551126.1528,3416818.5052 9551123.4511,3416771.6048 9551076.1175,3416819.6674 9550984.3027,3416913.1806 9550937.2652,3417054.8605 9550937.3504,3417054.7315 9551031.5729),(3418646.6979 9552832.1254,3418457.0498 9553062.8766,3418362.4237 9553062.9462,3418269.2366 9553060.5073,3418174.3741 9552965.8605,3418175.7582 9552871.4038,3418223.4088 9552732.0522,3418459.4539 9552640.2962,3418552.9761 9552593.229,3418694.1666 9552684.9318,3418646.6979 9552832.1254),(3418084.3571 9552120.9485,3417989.4597 9552212.4752,3417849.3605 9552212.6765,3417849.37 9552117.7951,3417849.4903 9552023.5581,3418038.5947 9551884.4712,3418132.2372 9551976.3716,3418084.3571 9552120.9485),(3424779.8275 9561709.112,3424733.3584 9561756.4191,3424684.0349 9561803.6525,3424591.7422 9561756.2885,3424496.9906 9561706.3829,3424450.3979 9561661.6241,3424451.4716 9561567.2285,3424498.0296 9561567.0238,3424733.2021 9561614.3089,3424779.8275 9561709.112),(3423330.888 9558829.5038,3423329.3947 9558921.2614,3422998.6681 9558921.1892,3422859.7931 9558826.9397,3422576.9001 9558826.4322,3422435.5305 9558684.7055,3422436.9199 9558495.8615,3422531.3819 9558495.9095,3422766.2957 9558590.4889,3422954.3557 9558684.767,3423142.4635 9558684.7292,3423284.0517 9558734.9098,3423330.888 9558829.5038),(3420102.3977 9553682.2407,3420101.448 9553774.2306,3419959.9637 9553774.0198,3419726.3281 9553630.0619,3419489.9819 9553585.1801,3419396.5387 9553538.0209,3419161.787 9553443.3931,3418972.5266 9553443.5474,3418878.9244 9553393.6056,3418644.1957 9553298.9842,3418597.6266 9553252.111,3418645.5 9553157.4933,3418738.6921 9553109.9423,3418974.9108 9553065.8522,3419069.3675 9553018.09,3419069.6398 9552876.6344,3419070.437 9552781.8793,3419258.5788 9552784.7081,3419445.8932 9553018.5026,3419633.6139 9553160.0041,3419867.6428 9553396.3882,3420055.956 9553538.1873,3420102.3977 9553682.2407),(3419543.843 9552267.6851,3419449.2943 9552359.7087,3419354.5909 9552454.0175,3419212.8858 9552453.9723,3419166.542 9552406.9431,3419214.3451 9552265.2959,3419402.4078 9552126.2024,3419543.9448 9552173.4458,3419543.843 9552267.6851),(3418887.1574 9551698.4314,3418745.5401 9551745.3982,3418699.0354 9551745.5698,3418652.0649 9551651.2094,3418605.3193 9551556.6852,3418653.2018 9551462.0764,3418793.27 9551461.8752,3418888.1228 9551556.4947,3418887.1574 9551698.4314),(3425256.473 9560487.1148,3425208.5792 9560531.8456,3425115.1393 9560531.7841,3424927.0149 9560437.5314,3424879.2355 9560390.0335,3424926.8554 9560295.448,3425068.4475 9560295.5728,3425161.9769 9560342.7259,3425256.473 9560487.1148),(3425066.2586 9560910.2741,3425065.8094 9561002.0288,3424830.0701 9561002.3483,3424783.3139 9560954.8155,3424736.7593 9560955.0218,3424547.3451 9561046.7169,3424452.6792 9561096.8853,3424359.0979 9560999.6912,3424405.789 9560952.2263,3424548.5653 9560765.7566,3424595.1651 9560671.1983,3424736.5935 9560673.6309,3425066.0413 9560857.4671,3425066.2586 9560910.2741),(3424778.7405 9562082.1786,3424826.7205 9561993.1186,3424873.4144 9561945.6443,3425015.0336 9561945.7701,3425109.5149 9561945.8022,3425202.9493 9562040.22,3425249.8062 9562134.8609,3425203.1134 9562182.3385,3425156.0847 9562229.3377,3425014.7634 9562179.6432,3424873.3643 9562179.3522,3424873.4393 9562135.0296,3424778.7405 9562082.1786),(3425487.9232 9561661.8154,3425393.3493 9561759.0996,3425252.1268 9561756.5132,3425251.8646 9561711.7147,3425205.01 9561617.0793,3425205.4053 9561475.2857,3425251.983 9561380.7278,3425394.5068 9561428.0664,3425487.9232 9561661.8154),(3424321.4195 9558500.8338,3424274.6211 9558456.2594,3424274.6522 9558361.951,3424180.9516 9558267.0798,3424133.0834 9558172.5289,3424227.7973 9558078.0878,3424369.3528 9558078.2246,3424510.6857 9558222.8499,3424651.9083 9558222.5037,3424745.4484 9558314.5896,3424698.6038 9558364.3395,3424509.4646 9558503.7088,3424321.4195 9558500.8338),(3423247.4641 9555906.4541,3423105.9444 9555906.2979,3423059.0821 9555906.0161,3423012.456 9555859.1644,3423107.0053 9555767.054,3423248.4411 9555720.1493,3423343.0964 9555720.0233,3423389.7049 9555766.8859,3423247.4641 9555906.4541),(3425362.3426 9557329.8434,3425267.8929 9557469.0726,3425030.5699 9557657.7173,3424795.814 9557705.2437,3424607.5245 9557513.2886,3424607.601 9557468.9952,3424655.2901 9557232.2829,3424844.5685 9557090.6349,3425127.3854 9557046.1159,3425220.8797 9557093.2466,3425362.3415 9557190.6014,3425362.3426 9557329.8434),(3425175.1762 9556762.1633,3425080.601 9556809.3782,3424987.1106 9556762.2478,3424940.4693 9556715.4016,3424940.2673 9556667.6913,3424988.4436 9556573.455,3425035.107 9556526.0163,3425176.5051 9556573.3702,3425269.863 9556667.7291,3425175.1762 9556762.1633),(3421467.3462 9553782.528,3421465.9241 9553921.2543,3421324.8607 9554013.5082,3421230.2071 9553968.6969,3421231.4042 9553921.4396,3421231.3153 9553874.4048,3421277.9859 9553782.0789,3421372.7007 9553732.6426,3421467.3341 9553732.5382,3421467.3462 9553782.528),(3420764.7804 9552695.5573,3420576.9099 9552837.457,3420528.7971 9552837.3691,3420482.2614 9552787.5814,3420529.8927 9552648.2041,3420624.8231 9552598.6194,3420765.9534 9552598.3407,3420764.7804 9552695.5573),(3419875.6757 9551656.2798,3419780.9038 9551703.564,3419687.4796 9551656.4207,3419498.026 9551561.878,3419498.0068 9551511.9176,3419453.6662 9551372.8937,3419548.3752 9551278.5842,3419641.9382 9551278.5446,3419876.7255 9551470.088,3419875.6757 9551656.2798),(3420533.4584 9551848.0094,3420486.6911 9551753.4933,3420439.7855 9551706.1627,3420486.7626 9551564.3872,3420582.4941 9551520.0072,3420770.5313 9551567.0431,3421098.8727 9551708.5573,3421333.6035 9551803.0733,3421428.4099 9551900.6232,3421378.2602 9552086.7738,3421285.0004 9552178.6079,3421096.7928 9552178.7813,3420816.0783 9551894.9792,3420628.0709 9551847.9146,3420533.4584 9551848.0094),(3420583.5215 9551283.8464,3420488.6601 9551375.3912,3420347.7082 9551328.469,3420300.6349 9551283.4391,3420254.2029 9551139.436,3420301.6516 9551047.3002,3420443.091 9551047.5049,3420536.914 9551142.1434,3420583.5215 9551283.8464),(3424943.9368 9555678.1481,3424849.391 9555725.3397,3424755.5599 9555677.7492,3424755.694 9555630.5243,3424756.7466 9555491.272,3424803.2969 9555396.7971,3424850.399 9555396.89,3424991.5117 9555538.6876,3424943.9368 9555678.1481),(3425695.0422 9556342.0497,3425694.0232 9556481.3053,3425552.6996 9556528.9004,3425505.9638 9556481.4019,3425412.3818 9556339.3542,3425413.5749 9556197.8012,3425460.2339 9556150.3627,3425555.0052 9556150.8537,3425648.3629 9556245.2024,3425695.0422 9556342.0497),(3426635.8006 9556814.7263,3426493.426 9556956.6725,3426258.5871 9557190.7096,3426162.5363 9557190.436,3426116.1288 9557143.4146,3426115.9202 9557095.7016,3426163.9698 9556954.3972,3426305.1552 9556814.788,3426494.2727 9556720.3423,3426589.2742 9556720.6566,3426635.8006 9556814.7263),(3426923.0972 9555638.4033,3426923.188 9555733.3318,3426827.4425 9555777.8128,3426732.7866 9555777.9795,3426685.9249 9555777.7185,3426639.253 9555685.9494,3426687.0087 9555541.2492,3426780.3943 9555541.2925,3426875.3828 9555541.6034,3426923.0972 9555638.4033),(3429140.1526 9569552.6967,3429233.438 9569744.7582,3429044.3815 9569786.8822,3428997.33 9569739.4795,3428809.7256 9569600.2993,3428714.7332 9569455.2856,3428810.5096 9569363.5442,3428857.4449 9569221.3643,3428905.2013 9569173.7734,3428999.8732 9569126.4446,3429093.2392 9569176.7261,3429234.9323 9569363.575,3429140.1526 9569552.6967),(3430364.6054 9570263.2329,3430222.0691 9570405.5158,3430080.777 9570405.1356,3429939.1238 9570357.7738,3429892.6243 9570310.6859,3429797.9093 9570215.5976,3429799.1383 9570026.4428,3429940.2998 9569931.7062,3430176.43 9570026.3463,3430364.8122 9570168.587,3430364.6054 9570263.2329),(3430081.9592 9569697.7787,3429988.3139 9569745.0926,3429846.7898 9569744.8877,3429658.711 9569647.4924,3429658.8183 9569600.1736,3429705.5769 9569508.2511,3429848.124 9569508.4271,3430036.2586 9569602.8673,3430081.9592 9569697.7787),(3428295.2741 9568134.9736,3428294.0177 9568229.6229,3428247.4238 9568229.8496,3428152.5188 9568229.3888,3428152.8035 9568179.7751,3428105.8284 9568040.0653,3428152.6526 9567945.2237,3428248.581 9567945.6535,3428295.2741 9568134.9736),(3430079.7251 9570734.466,3429986.0684 9570781.787,3429891.4897 9570781.8115,3429796.7696 9570686.717,3429750.1623 9570686.9523,3429750.04 9570591.8217,3429750.0295 9570497.3369,3429844.605 9570497.314,3429986.1545 9570592.0038,3430079.7251 9570734.466),(3432772.5419 9569658.5258,3432678.0183 9569753.0562,3432536.326 9569750.1143,3432489.6663 9569705.3365,3432632.3376 9569516.3678,3432772.5664 9569468.7728,3432820.4587 9569516.272,3432772.5419 9569658.5258),(3436967.2446 9596331.7288,3436965.9814 9596518.8131,3436776.893 9596614.1535,3436634.4068 9596661.8996,3436445.1981 9596614.2687,3436208.1433 9596376.4726,3436114.4562 9596281.5395,3436114.5232 9596141.3448,3436162.231 9596046.2308,3436304.7804 9595951.0005,3436399.3416 9595998.5644,3436540.9166 9596093.8301,3436730.183 9596093.9574,3436872.4747 9596188.6926,3436967.2446 9596331.7288),(3432249.7152 9589030.2586,3432107.1791 9589169.8312,3432012.4923 9589122.43,3431871.2284 9589122.5601,3431871.3238 9589075.1099,3431919.1208 9588932.648,3432107.0326 9588837.5503,3432203.0454 9588840.2322,3432297.4127 9588935.244,3432249.7152 9589030.2586),(3431445.8313 9588650.3563,3431162.0489 9588790.0115,3430972.8691 9588787.6235,3430878.1247 9588695.0753,3430878.2255 9588647.628,3430972.7407 9588504.938,3431163.2115 9588457.5373,3431399.0133 9588457.5444,3431447.2699 9588460.5253,3431445.8313 9588650.3563),(3436029.8998 9591357.5344,3436029.0702 9591595.2116,3435934.195 9591785.0109,3435697.1984 9591925.2749,3435555.7011 9591972.2921,3435223.8494 9591922.2757,3434988.1087 9591827.4416,3434940.2365 9591684.8684,3434988.0825 9591402.2351,3435130.6674 9591215.1169,3435321.027 9591120.303,3435367.8212 9591072.5717,3435321.0163 9590885.466,3435415.7986 9590787.6626,3435652.4507 9590695.07,3435889.7774 9590790.1381,3436029.8998 9591357.5344),(3433103.5828 9588085.9052,3433057.0167 9588133.4374,3432914.1946 9588320.6171,3432866.2155 9588272.9776,3432866.474 9588228.3243,3432867.301 9588038.2041,3433008.9727 9587991.0938,3433104.8775 9587943.545,3433103.5828 9588085.9052),(3436032.5381 9590362.9503,3435937.8222 9590457.7969,3435795.1702 9590457.547,3435700.4301 9590410.1939,3435700.5042 9590362.735,3435748.6773 9590315.4407,3435795.0728 9590270.19,3436032.2909 9590270.5111,3436032.5381 9590362.9503),(3436882.8568 9590933.0697,3436788.1305 9591072.4392,3436550.9051 9591027.6348,3436645.6894 9590885.3109,3436788.3364 9590792.9202,3436930.7568 9590837.8226,3436882.8568 9590933.0697),(3442039.3157 9593593.6724,3441896.4609 9593543.2698,3441848.5743 9593498.4406,3441755.1403 9593355.9519,3441707.3495 9593260.6856,3441755.344 9593118.5613,3441848.8293 9593025.9564,3441992.5725 9593026.0538,3442086.9426 9593070.753,3441991.1554 9593260.6954,3442133.6997 9593450.7528,3442039.3157 9593593.6724),(3442655.957 9592173.2945,3442513.522 9592268.5985,3442466.5496 9592217.9972,3442418.6676 9592173.1799,3442418.7417 9592078.2385,3442466.681 9591983.6035,3442609.0038 9592030.7129,3442655.957 9592173.2945),(3446914.9777 9594071.7293,3446773.5381 9594071.4576,3446725.4445 9593976.3913,3446820.4688 9593878.8923,3446962.9536 9593879.1157,3446962.7957 9593928.8976,3447009.6119 9593976.7062,3446914.9777 9594071.7293),(3447862.4128 9593456.6209,3447910.2731 9593551.8539,3447815.6534 9593646.8816,3447720.7094 9593646.4674,3447673.007 9593596.3994,3447483.6404 9593551.3587,3447435.9399 9593501.2901,3447531.7839 9593409.0141,3447626.3958 9593361.4715,3447815.602 9593361.3416,3447862.4128 9593456.6209),(3449377.4237 9594829.3001,3449282.5827 9594972.0186,3449188.1867 9595019.4245,3449093.5657 9594924.5262,3449140.0795 9594829.3674,3449282.8018 9594686.9184,3449377.4208 9594734.3229,3449377.4237 9594829.3001),(3449330.7489 9594166.9678,3449282.6486 9594261.8393,3449188.2604 9594309.2404,3449093.6656 9594261.8227,3448999.0548 9594119.4491,3448998.7189 9593976.5185,3449188.2762 9593929.3535,3449330.4262 9594024.0222,3449330.7489 9594166.9678),(3450135.6571 9595019.809,3449992.9652 9595064.3517,3449898.3434 9595064.4425,3449946.0764 9595019.5127,3449946.0718 9594972.0228,3449993.1389 9594877.1716,3450135.2966 9594829.3708,3450182.3784 9594876.9867,3450135.6571 9595019.809),(3449471.9473 9593646.5106,3449519.8287 9593789.2186,3449472.1003 9593834.1378,3449377.4919 9593834.2226,3449330.8375 9593789.2215,3449236.2278 9593646.8602,3449235.8874 9593456.4593,3449425.4369 9593551.7317,3449471.9473 9593646.5106),(3449709.1335 9594401.918,3449661.4505 9594451.9209,3449519.9591 9594494.1049,3449471.8823 9594451.6139,3449519.8096 9594401.4317,3449566.4899 9594309.0704,3449708.9819 9594309.246,3449709.1335 9594401.918),(3452503.0623 9595682.3011,3452455.5143 9595682.5348,3452360.8678 9595635.1595,3452408.6398 9595634.76,3452408.6034 9595539.7719,3452313.9587 9595492.3971,3452219.5411 9595397.3481,3452314.1489 9595349.7379,3452455.6095 9595349.9132,3452503.1931 9595444.665,3452551.1348 9595587.3916,3452503.0623 9595682.3011),(3451982.4408 9594591.9672,3451887.8395 9594639.5686,3451745.3421 9594639.431,3451698.253 9594591.8257,3451650.5524 9594546.867,3451698.4038 9594452.1446,3451839.8841 9594401.8847,3451934.3547 9594493.9512,3451982.4408 9594591.9672),(3452692.5671 9594734.6746,3452645.5502 9594877.0287,3452408.4472 9594924.5137,3452314.0523 9594876.9625,3452314.0346 9594829.4735,3452313.9994 9594734.4964,3452455.6376 9594592.028,3452597.9521 9594546.9792,3452692.5277 9594639.6988,3452692.5671 9594734.6746),(3452976.4451 9594357.1852,3452881.901 9594401.8367,3452739.3383 9594357.1905,3452692.4498 9594261.941,3452739.5026 9594214.5681,3452929.5539 9594261.937,3452976.4451 9594357.1852),(3454255.5606 9593976.9071,3454113.1292 9594071.7779,3454018.5184 9594071.9165,3454018.4642 9593976.9496,3454065.1699 9593929.0917,3454159.7235 9593833.9873,3454302.2212 9593834.1019,3454255.5606 9593976.9071),(3456242.5019 9593409.3588,3456149.0334 9593453.9937,3456054.4294 9593454.1561,3456006.6937 9593409.244,3456053.4612 9593314.5456,3456101.143 9593219.1677,3456242.5873 9593219.2635,3456242.5019 9593409.3588),(3457521.6237 9593686.2814,3457569.6383 9593879.3844,3457428.0966 9594021.9271,3457332.6354 9593974.4888,3457285.6981 9593879.2709,3457285.6079 9593784.3067,3457380.4711 9593596.8033,3457475.0304 9593549.1454,3457521.6237 9593686.2814),(3461026.0718 9592884.0857,3460835.9394 9592929.0881,3460741.0027 9592928.8255,3460741.1349 9592884.1277,3460787.9393 9592833.9395,3460882.4064 9592738.7722,3461026.325 9592786.655,3461026.0718 9592884.0857),(3463011.9037 9592356.1993,3462870.8617 9592496.3257,3462728.3998 9592496.3803,3462728.1643 9592451.2203,3462775.0764 9592356.3295,3462870.5643 9592261.0966,3463012.0055 9592311.5192,3463011.9037 9592356.1993),(3443075.4223 9597810.8419,3442932.9509 9597903.2686,3442839.3814 9597855.7212,3442839.4509 9597760.703,3442980.8381 9597715.8349,3443075.4892 9597715.8244,3443075.4223 9597810.8419),(3418905.4506 9589121.9319,3418809.6801 9589264.538,3418715.2906 9589312.1989,3418478.1927 9589312.0341,3418431.0795 9589214.2101,3418432.4611 9589169.5075,3418526.8506 9589121.8509,3418668.358 9589121.7726,3418764.0497 9588982.1418,3418905.5548 9588982.0595,3418905.4506 9589121.9319),(3419843.926 9590876.8831,3419748.2327 9591066.8196,3419701.5145 9591066.9977,3419606.937 9591066.737,3419606.8565 9591019.4533,3419654.5317 9590876.5435,3419702.3788 9590781.5779,3419843.9134 9590781.4792,3419843.926 9590876.8831),(3420361.5112 9591684.3688,3420360.2294 9591826.6369,3420312.5609 9591969.5704,3420405.9275 9592109.1382,3420311.5396 9592207.0866,3420168.8521 9592251.7362,3420074.1785 9592204.1893,3420075.552 9592159.4674,3420123.4017 9592064.4821,3420123.1611 9591969.2276,3420076.759 9591874.47,3420076.6608 9591731.7641,3420124.508 9591636.7846,3420218.9154 9591589.0917,3420313.7422 9591589.1659,3420361.5112 9591684.3688),(3417910.1227 9589496.5596,3417862.6511 9589639.2659,3417719.9422 9589636.5679,3417625.4934 9589591.7882,3417625.485 9589541.5572,3417626.484 9589449.0853,3417674.1222 9589309.176,3417815.6139 9589309.1261,3417863.534 9589356.8476,3417910.1227 9589496.5596),(3418987.5692 9591868.8795,3418986.7674 9591964.1623,3418938.739 9592106.6098,3418844.1968 9592148.5539,3418797.2432 9592103.7345,3418749.6575 9592056.467,3418750.7368 9591869.2034,3418846.686 9591679.0913,3418988.8705 9591631.1954,3419035.7618 9591678.9691,3418987.5692 9591868.8795),(3418458.8486 9593428.8775,3418268.6445 9593711.701,3418127.3052 9593711.5928,3418079.1954 9593661.0503,3417985.9025 9593568.7391,3418033.7296 9593381.2667,3418128.3399 9593331.2737,3418270.9599 9593331.1919,3418459.1322 9593286.6072,3418458.8486 9593428.8775),(3418599.1217 9593996.5567,3418503.5354 9594139.0785,3418408.6804 9594138.9835,3418408.8503 9594091.4996,3418409.9948 9593996.6689,3418457.8731 9593901.6685,3418552.4835 9593806.4975,3418599.2309 9593856.5872,3418599.1217 9593996.5567),(3417888.9166 9593851.4208,3417794.5419 9593946.4052,3417699.689 9593946.3017,3417651.7427 9593943.7182,3417605.0211 9593848.4389,3417558.2392 9593756.1198,3417606.2998 9593613.6472,3417748.686 9593613.7209,3417889.9032 9593708.6311,3417888.9166 9593851.4208),(3418779.5578 9595845.0008,3418732.8704 9595892.5037,3418495.7602 9595844.8436,3418449.0214 9595794.7251,3418543.5919 9595702.4886,3418687.2678 9595702.3505,3418827.4423 9595749.9734,3418779.5578 9595845.0008),(3417977.0478 9595366.9002,3417882.4138 9595462.0856,3417786.5329 9595461.9989,3417787.755 9595414.4628,3417882.3376 9595226.7745,3417930.2098 9595176.9522,3418024.7318 9595226.8572,3417977.0478 9595366.9002),(3418869.6166 9596933.1824,3418821.7259 9597028.2261,3418679.3018 9597028.1574,3418584.4898 9597075.3884,3418442.0461 9597075.3292,3418395.465 9597027.9966,3418395.5799 9596933.156,3418538.9944 9596745.1754,3418869.6148 9596837.6964,3418869.6166 9596933.1824),(3418068.2311 9596127.6073,3418115.0314 9596219.9548,3418161.4354 9596314.782,3418067.018 9596409.8167,3417972.493 9596410.1836,3417782.9156 9596312.1873,3417783.2012 9596220.151,3417784.1899 9596077.3133,3417878.8318 9595982.1207,3418022.7058 9596035.0519,3418068.2311 9596127.6073),(3418094.1611 9590586.5389,3418046.2973 9590681.4923,3417809.9661 9590681.4438,3417809.9755 9590631.1912,3417952.5854 9590443.9136,3418141.6341 9590443.812,3418189.7145 9590444.0936,3418094.1611 9590586.5389)))|label \ No newline at end of file diff --git a/tests/visual_tests/data/kurdish.geojson b/tests/visual_tests/data/kurdish.geojson deleted file mode 100644 index cfe1338bd..000000000 --- a/tests/visual_tests/data/kurdish.geojson +++ /dev/null @@ -1 +0,0 @@ -{"type":"FeatureCollection","features":[{"geometry": {"type": "Polygon", "coordinates": [[[45.99235461770755, 35.16617818635398], [45.99237547481334, 35.165666716102706], [45.9883319556193, 35.16701924991742], [45.98503315932268, 35.16802816771194], [45.98465077664349, 35.16824201497082], [45.984044774393894, 35.168580918688136], [45.982703864274264, 35.16902437556599], [45.982941824198875, 35.16988145146968], [45.98180119214958, 35.1702172614711], [45.98167540989029, 35.171115464425476], [45.98118349000219, 35.17188888811469], [45.98118257351588, 35.17189130120418], [45.98118520294277, 35.17189262520137], [45.98141591839354, 35.172008754469964], [45.9817715310328, 35.17208621350769], [45.98195866241614, 35.172137419232264], [45.982456234288414, 35.17257776515322], [45.98261986736089, 35.17283267173747], [45.98277057407737, 35.17302405638272], [45.9828430371665, 35.1731160783786], [45.98299879846318, 35.173394209566936], [45.983057812786555, 35.17352943153634], [45.9831487132402, 35.173714479900745], [45.9832391909315, 35.173864382594644], [45.98337250743875, 35.174002780114556], [45.98358060951312, 35.1741305255599], [45.983614128418196, 35.17429290527566], [45.984998271926585, 35.17494025771359], [45.985503122177235, 35.17533338838655], [45.98563551268088, 35.1754929891916], [45.9855120048533, 35.17561896784981], [45.98528005787102, 35.17576814496443], [45.985243464015, 35.17588895300947], [45.98523921329984, 35.175987179747615], [45.9854067972843, 35.17641346444306], [45.98546604021096, 35.17638203432208], [45.98566919624024, 35.176204989630754], [45.98588010956655, 35.17609621562221], [45.98614970285299, 35.17606061391415], [45.986241215011326, 35.175980903902754], [45.98643781904411, 35.17572115216145], [45.986716230383735, 35.175497177478626], [45.98684542342492, 35.1754748652814], [45.98714950242998, 35.175232457670376], [45.987415361220286, 35.174851261651696], [45.98763307056997, 35.17453909841], [45.98775755148155, 35.174366871894236], [45.98807690380486, 35.17392502625692], [45.98846346482826, 35.17346934786799], [45.98878718553586, 35.17301721809507], [45.989187907688006, 35.17250979019988], [45.98954772289579, 35.17198447417625], [45.989585422334436, 35.171895118764624], [45.98974187786492, 35.171524287970755], [45.989881809226, 35.171167805980126], [45.99011666870779, 35.17069987563794], [45.99043436059051, 35.1700669033653], [45.99094380841713, 35.169322908439376], [45.990969742353364, 35.16928503338455], [45.9917288510691, 35.16826376024745], [45.99241306812511, 35.16757424989188], [45.99232151994116, 35.16698977062805], [45.99232378055641, 35.16693434427973], [45.99235461770755, 35.16617818635398]]]}, "type": "Feature", "id": 0, "properties": {"SHAPE_Leng": 3482.72819018, "name": "\u0645\u06d5\u0631\u062f\u0627\u0646\u06d5", "OBJECTID": 18, "cod": 304}},{"geometry": {"type": "Polygon", "coordinates": [[[45.98722649037926, 35.183624290617544], [45.987694657098906, 35.18305705675576], [45.98788575418974, 35.183114119382275], [45.988246802424854, 35.182792014516096], [45.98886726351255, 35.182272384087966], [45.99011092666733, 35.181461064564616], [45.990113317285974, 35.18145959423118], [45.989698155982346, 35.180991387216835], [45.989676568168335, 35.180967039962795], [45.98925361550881, 35.180490036088415], [45.989245816636014, 35.1804900997902], [45.988644419931106, 35.179777800934694], [45.98849214631859, 35.17962101142376], [45.987854624445134, 35.17896457692938], [45.986958722900035, 35.178221621157746], [45.986814668681916, 35.17810215662015], [45.98592225090038, 35.17752553482369], [45.985816358488464, 35.17745711316335], [45.985597813207775, 35.17735206705087], [45.98513331321101, 35.177526406450646], [45.98506152654518, 35.17755253020057], [45.98506111324195, 35.17755268053467], [45.983815809900484, 35.178005864496704], [45.983142460616385, 35.178320198354555], [45.98290398141986, 35.178628174253], [45.98241097095343, 35.179504266537506], [45.981445999402155, 35.180736545049434], [45.980665670625335, 35.181612300048], [45.9822171301062, 35.18256811973268], [45.98287836726639, 35.18307021974068], [45.98265949303153, 35.18326450822969], [45.98360245818601, 35.18387019489621], [45.98599593461372, 35.1854075046119], [45.986008957647385, 35.185290260659606], [45.98613648925261, 35.18501077172678], [45.986229324708134, 35.18481461094534], [45.98630473469067, 35.18475146049714], [45.98638248549415, 35.184686350540005], [45.986853335010366, 35.184093858492105], [45.98704359678535, 35.183854437131586], [45.98722649037926, 35.183624290617544]]]}, "type": "Feature", "id": 1, "properties": {"SHAPE_Leng": 2569.64415823, "name": "\u0645\u06d5\u0631\u0632\u06d5\u0628\u06c6\u062a\u06c6", "OBJECTID": 19, "cod": 101}}]} \ No newline at end of file diff --git a/tests/visual_tests/data/landuse.geojson b/tests/visual_tests/data/landuse.geojson deleted file mode 100644 index 6fedde6ee..000000000 --- a/tests/visual_tests/data/landuse.geojson +++ /dev/null @@ -1 +0,0 @@ -{"type":"FeatureCollection","name":"landcover","features":[{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[8.81103515624999,50.1211284189057],[8.81094932556152,50.1211284189057],[8.81060600280761,50.1210183552227],[8.81034851074218,50.1205780979601],[8.79036605358123,50.1205780979601],[8.79043579101562,50.1206331303393],[8.79043579101562,50.1234396977932],[8.79103660583496,50.1238799287382],[8.79258155822753,50.1239349573217],[8.79309654235839,50.1242100992899],[8.79318237304687,50.1259709704353],[8.79301071166991,50.1263011265632],[8.79215240478515,50.1266312804137],[8.79129409790038,50.1273466059435],[8.79069328308105,50.1272915812823],[8.78992080688476,50.1265762549301],[8.78906249999999,50.1265556203574],[8.78906249999999,50.1328590685262],[8.7923240661621,50.1329037708673],[8.79301071166991,50.132573660287],[8.79309654235839,50.1315282950922],[8.79301071166991,50.1313632353423],[8.79180908203124,50.1307029906492],[8.79180908203124,50.1296575845885],[8.79215240478515,50.1293824739347],[8.79301071166991,50.1290523390627],[8.79318237304687,50.1288322478827],[8.79326820373534,50.1278418250474],[8.79455566406249,50.1271815317701],[8.79464149475097,50.1261910747736],[8.79481315612792,50.1259709704353],[8.79567146301269,50.12564081203],[8.79610061645507,50.1252005972803],[8.79670143127441,50.1248704335609],[8.79961967468261,50.1249254610056],[8.80004882812499,50.1251455701519],[8.80056381225585,50.1256958385891],[8.80090713500976,50.1258058915174],[8.80210876464843,50.1258058915174],[8.80279541015624,50.126081022731],[8.80296707153319,50.1264111780997],[8.80296707153319,50.1272365565578],[8.80425453186034,50.1280068969433],[8.80425453186034,50.1298776719727],[8.80468368530273,50.1302628224597],[8.80554199218749,50.1306479698469],[8.80562782287597,50.1326836974001],[8.80597114562987,50.1329587890759],[8.80640029907226,50.1330688253034],[8.81103515624999,50.1331135274485],[8.81103515624999,50.1339250360536],[8.80785942077636,50.133894088944],[8.8073444366455,50.1340041230206],[8.80691528320312,50.134444256797],[8.80631446838378,50.1347743544724],[8.80082130432128,50.1347193383513],[8.80030632019042,50.1348293705302],[8.80004882812499,50.1351044498705],[8.81103515624999,50.1351044498705],[8.81103515624999,50.1211284189057]]]},"properties":{"class":"crop"}}]} \ No newline at end of file diff --git a/tests/visual_tests/data/line-offset.csv b/tests/visual_tests/data/line-offset.csv deleted file mode 100644 index fe557d89f..000000000 --- a/tests/visual_tests/data/line-offset.csv +++ /dev/null @@ -1,9 +0,0 @@ -wkt,name,nr,ref -"LineString(-5.177724 50.191914,-5.177742 50.191769,-5.17773 50.191624,-5.177689 50.191481,-5.177619 50.191343,-5.177522 50.191212,-5.177398 50.19109,-5.177251 50.190979,-5.177082 50.190882,-5.176895 50.190799,-5.176693 50.190733,-5.176479 50.190685,-5.176257 50.190654,-5.176031 50.190643,-5.175804 50.19065,-5.175581 50.190677,-5.175365 50.190722,-5.17516 50.190784,-5.17497 50.190863,-5.174797 50.190957,-5.174645 50.191065,-5.174516 50.191185,-5.174413 50.191314,-5.174337 50.191451,-5.17429 50.191594,-5.174272 50.191738,-5.174283 50.191884,-5.174324 50.192026,-5.174394 50.192165,-5.174492 50.192296,-5.174615 50.192418,-5.174763 50.192529,-5.174931 50.192626,-5.175118 50.192708,-5.17532 50.192774,-5.175534 50.192823,-5.175756 50.192853,-5.175983 50.192865,-5.176209 50.192857,-5.176433 50.192831,-5.176649 50.192786,-5.176854 50.192724,-5.177044 50.192645,-5.177217 50.19255,-5.177369 50.192442,-5.177498 50.192323,-5.177601 50.192193,-5.177677 50.192056,-5.177724 50.191914)","",,4 -"LineString(-5.182328 50.19193,-5.182346 50.191785,-5.182334 50.19164,-5.182293 50.191497,-5.182223 50.191358,-5.182125 50.191227,-5.182002 50.191105,-5.181854 50.190995,-5.181686 50.190897,-5.181499 50.190815,-5.181297 50.190749,-5.181083 50.1907,-5.180861 50.19067,-5.180634 50.190658,-5.180408 50.190666,-5.180184 50.190692,-5.179968 50.190737,-5.179763 50.190799,-5.179573 50.190878,-5.1794 50.190973,-5.179248 50.191081,-5.179119 50.1912,-5.179016 50.19133,-5.17894 50.191467,-5.178893 50.191609,-5.178875 50.191754,-5.178887 50.191899,-5.178928 50.192042,-5.178998 50.19218,-5.179095 50.192311,-5.179219 50.192433,-5.179366 50.192544,-5.179535 50.192641,-5.179722 50.192724,-5.179924 50.19279,-5.180138 50.192838,-5.18036 50.192869,-5.180586 50.19288,-5.180813 50.192873,-5.181036 50.192846,-5.181252 50.192802,-5.181457 50.192739,-5.181648 50.19266,-5.18182 50.192566,-5.181972 50.192458,-5.182101 50.192338,-5.182204 50.192209,-5.18228 50.192072,-5.182328 50.19193)","",,3 -"LineString(-5.187052 50.191945,-5.187004 50.192087,-5.186928 50.192224,-5.186825 50.192354,-5.186696 50.192473,-5.186544 50.192581,-5.186371 50.192675,-5.186181 50.192755,-5.185976 50.192817,-5.18576 50.192862,-5.185537 50.192888,-5.18531 50.192896,-5.185084 50.192884,-5.184862 50.192854,-5.184648 50.192805,-5.184446 50.192739,-5.184259 50.192657,-5.18409 50.192559,-5.183943 50.192449,-5.183819 50.192327,-5.183722 50.192196,-5.183652 50.192057,-5.183611 50.191914,-5.183599 50.191769,-5.183617 50.191624,-5.183664 50.191482,-5.18374 50.191345,-5.183843 50.191216,-5.183972 50.191096,-5.184124 50.190988,-5.184297 50.190894,-5.184487 50.190815,-5.184692 50.190752,-5.184908 50.190708,-5.185132 50.190681,-5.185358 50.190674,-5.185585 50.190685,-5.185807 50.190716,-5.186021 50.190764,-5.186223 50.19083,-5.18641 50.190913,-5.186578 50.19101,-5.186726 50.191121,-5.186849 50.191243,-5.186947 50.191374,-5.187017 50.191512,-5.187058 50.191655,-5.18707 50.1918,-5.187052 50.191945)","",,2 -"LineString(-5.191775 50.191899,-5.191728 50.192041,-5.191652 50.192178,-5.191549 50.192307,-5.19142 50.192427,-5.191268 50.192535,-5.191095 50.192629,-5.190905 50.192708,-5.1907 50.192771,-5.190484 50.192816,-5.190261 50.192842,-5.190034 50.192849,-5.189808 50.192838,-5.189586 50.192808,-5.189372 50.192759,-5.18917 50.192693,-5.188983 50.19261,-5.188814 50.192513,-5.188667 50.192402,-5.188543 50.192281,-5.188446 50.192149,-5.188376 50.192011,-5.188334 50.191868,-5.188323 50.191723,-5.188341 50.191578,-5.188388 50.191436,-5.188464 50.191299,-5.188567 50.19117,-5.188696 50.19105,-5.188848 50.190942,-5.189021 50.190848,-5.189211 50.190769,-5.189416 50.190706,-5.189632 50.190661,-5.189856 50.190635,-5.190082 50.190627,-5.190309 50.190639,-5.190531 50.190669,-5.190744 50.190718,-5.190947 50.190784,-5.191134 50.190866,-5.191302 50.190964,-5.19145 50.191074,-5.191573 50.191196,-5.191671 50.191328,-5.191741 50.191466,-5.191782 50.191609,-5.191793 50.191754,-5.191775 50.191899)","",,1 -"LineString(-5.177742 50.191769,-5.174272 50.191738)","CCW, dy > 0",, -"LineString(-5.182346 50.191785,-5.178875 50.191754)","CCW, dy < 0",, -"LineString(-5.18707 50.1918,-5.183599 50.191769)","CW, dy > 0",, -"LineString(-5.191793 50.191754,-5.188323 50.191723)","CW, dy < 0",, \ No newline at end of file diff --git a/tests/visual_tests/data/line.dbf b/tests/visual_tests/data/line.dbf deleted file mode 100755 index c27e6d5f6..000000000 Binary files a/tests/visual_tests/data/line.dbf and /dev/null differ diff --git a/tests/visual_tests/data/line.shp b/tests/visual_tests/data/line.shp deleted file mode 100755 index 52976981a..000000000 Binary files a/tests/visual_tests/data/line.shp and /dev/null differ diff --git a/tests/visual_tests/data/line.shx b/tests/visual_tests/data/line.shx deleted file mode 100755 index 60746dfb3..000000000 Binary files a/tests/visual_tests/data/line.shx and /dev/null differ diff --git a/tests/visual_tests/data/lines.csv b/tests/visual_tests/data/lines.csv deleted file mode 100644 index f67763eba..000000000 --- a/tests/visual_tests/data/lines.csv +++ /dev/null @@ -1,10 +0,0 @@ -wkt,name,nr -"LineString(0.194483 -0.117354,0.23691 -0.137246,0.252846 -0.181313,0.232953 -0.223741,0.188886 -0.239676,0.146458 -0.219784,0.130523 -0.175717,0.150415 -0.133289,0.194483 -0.117354)","Circle",6 -"LineString(0.747335 -0.107159,0.789763 -0.127051,0.805698 -0.171118,0.785806 -0.213546,0.741739 -0.229481,0.699311 -0.209589,0.683376 -0.165522,0.703268 -0.123094,0.747335 -0.107159)","Circle with long name",7 -"LineString(0.346487 -0.240215,0.535306 -0.240215)","Short line with long name",5 -"LineString(0.347059 -0.122112,0.535878 -0.122112)","Short line",4 -"LineString(0 0,0.9 0)","Rendered @ integer pos. ABCDEFGHIJKLMNOPQRSTUVWXYZ",3 -"LineString(0.002268 0.073178,0.902268 0.073178)","Long line with long name",2 -"LineString(0.003411 0.172529,0.103411 0.172529,0.203411 0.172529,0.303411 0.172529,0.403411 0.172529,0.503411 0.172529,0.603411 0.172529,0.703411 0.172529,0.803411 0.172529,0.903411 0.172529)","Long line with long name and many points",1 -"LineString(0.002841 0.250458,0.902841 0.250458)","Short name",8 -"LineString(0 -0.051,0.9 -0.051)","Rendered @ non-integer p. ABCDEFGHIJKLMNOPQRSTUVWXYZ",9 diff --git a/tests/visual_tests/data/lines2.csv b/tests/visual_tests/data/lines2.csv deleted file mode 100644 index 4d9b59551..000000000 --- a/tests/visual_tests/data/lines2.csv +++ /dev/null @@ -1,17 +0,0 @@ -WKT -"LINESTRING (0.764185269 -0.313888573,0.751190328 -0.314123131,0.737134133 -0.314376844,0.725222103 -0.314591855,0.702047791 -0.315010149,0.688792951 -0.315249398,0.67553811 -0.315488647,0.661092067 -0.315749397,0.641426389 -0.31610436,0.627370194 -0.316358073,0.597525145 -0.316896774,0.584140356 -0.317138368,0.570885515 -0.317377617,0.549747077 -0.317759164,0.533546717 -0.318051579,0.511866823 -0.318442899)" -"LINESTRING (0.289403766 -0.004374853,0.278998818 -0.012163343,0.267744132 -0.020587892,0.258206263 -0.027727341,0.239650772 -0.041616812,0.229037724 -0.049561069,0.218424677 -0.057505325,0.206857843 -0.066163524,0.191111688 -0.077950096,0.179857002 -0.086374637,0.155960304 -0.104262178,0.145243208 -0.112284308,0.134630161 -0.120228551,0.117704778 -0.132897797,0.104733276 -0.14260742,0.087374354 -0.155601173)" -"LINESTRING (0.374895934 -0.188749064,0.362443535 -0.270566448,0.295784263 -0.319614717,0.213966216 -0.307162504,0.164917295 -0.240503998,0.177369693 -0.158686453,0.244028965 -0.109637668,0.325847013 -0.122090041,0.374895934 -0.188749064)" -"LINESTRING (0.892955147 -0.270397048,0.894000762 0.309916722)" -"LINESTRING (0.055417591 0.248226176,0.059600051 -0.260986614)" -"LINESTRING (0.777676102 0.026948692,0.765128722 0.016492544,0.747353269 0.008127625,0.731669045 0.012310084,0.719121666 0.021720618,0.708665516 0.03740484,0.697163752 0.05099783,0.685661988 0.06040836,0.666840919 0.061453974,0.646974236 0.054134673,0.627107552 0.041587299,0.608286483 0.024857463,0.59260226 0.013878507,0.574826806 0.005513587,0.559142582 0.009696047,0.546595203 0.019106581,0.536139054 0.034790803,0.524637289 0.048383794,0.513135525 0.057794324,0.494314456 0.058839938,0.474447773 0.051520637,0.454581089 0.038973262,0.434191598 0.021459215,0.421644219 0.011003066,0.403868765 0.002638146,0.388184541 0.006820606,0.375637162 0.01623114,0.365181013 0.031915363,0.353679249 0.045508354,0.342177485 0.054918884,0.323356416 0.055964499,0.303489732 0.048645197,0.283623049 0.036097822,0.26480198 0.019367985,0.249117756 0.008389028,0.231342302 0.000024109,0.215658079 0.004206569,0.203110699 0.013617103,0.19265455 0.029301326,0.181152786 0.042894317,0.169651022 0.052304848,0.150829953 0.053350463,0.13096327 0.046031161,0.111096586 0.033483785,0.092275517 0.016753948)" -"LINESTRING (0.093560033 0.138666471,0.112381102 0.155396254,0.132247785 0.167943584,0.152114469 0.175262855,0.170935538 0.174217245,0.182437302 0.164806752,0.193939066 0.15121381,0.204395215 0.135529635,0.216942594 0.126119125,0.232626818 0.121936675,0.250402272 0.130301574,0.266086496 0.1412805,0.284907564 0.158010282,0.304774248 0.170557609,0.324640932 0.17787688,0.343462 0.17683127,0.354963765 0.167420778,0.366465529 0.153827838,0.376921678 0.138143665,0.389469057 0.128733156,0.405153281 0.124550707,0.422928735 0.132915605,0.435476114 0.143371724,0.455865605 0.160885712,0.475732289 0.173433038,0.495598972 0.180752307,0.514420041 0.179706697,0.525921805 0.170296207,0.537423569 0.156703268,0.547879718 0.141019097,0.560427098 0.13160859,0.576111322 0.127426141,0.593886775 0.135791038,0.609570999 0.146769961,0.628392068 0.163499739,0.648258751 0.176047063,0.668125435 0.183366331,0.686946504 0.182320722,0.698448268 0.172910232,0.709950032 0.159317296,0.720406181 0.143633127,0.73295356 0.13422262,0.748637784 0.130040171,0.766413238 0.138405068,0.778960617 0.148861184)" -"LINESTRING (0.848982597 0.288736581,0.754751857 0.220905399,0.657509669 0.293052099,0.548765717 0.208358108,0.429565615 0.301416905,0.295726905 0.205221284,0.170253114 0.303508106,0.083467075 0.248091159)" -"LINESTRING (0.090332128 0.348151688,0.187574317 0.410887204,0.309911263 0.313646971,0.436430669 0.403568084,0.548311466 0.316783769,0.660192263 0.398340138,0.759525681 0.319920565,0.85656627 0.390823271)" -"LINESTRING (0.613502456 -0.015963875,0.790148448 -0.024699116,0.812471843 -0.037316685,0.828971743 -0.062551817,0.830912908 -0.097492748,0.828001161 -0.133404222,0.821207084 -0.172227378,0.807618931 -0.188727197,0.760060395 -0.191638928,0.603796632 -0.185815465)" -"LINESTRING (0.680933124 -0.244990843,0.50407624 -0.24631506,0.481071446 -0.234987473,0.463163199 -0.210731652,0.459238186 -0.175957816,0.460103038 -0.139938937,0.464678354 -0.100792195,0.477306218 -0.0835463,0.52462221 -0.077934757,0.680964265 -0.074862572)" -"LINESTRING (0.345138881 -0.004954418,0.367100653 -0.140842741)" -"LINESTRING (0.41651464 -0.017307915,0.393180257 -0.171040066)" -"LINESTRING (0.45220252 -0.037897074,0.59769926 -0.042014905)" -"LINESTRING (0.72397945 -0.139470135,0.577110099 -0.140842741)" -"LINESTRING (0.820051288 0.095328839,0.850629325 0.095086193,0.850629325 0.072034887,0.735372668 0.072034887)" diff --git a/tests/visual_tests/data/lower_columbia.tif b/tests/visual_tests/data/lower_columbia.tif deleted file mode 100644 index 1a0cfa892..000000000 Binary files a/tests/visual_tests/data/lower_columbia.tif and /dev/null differ diff --git a/tests/visual_tests/data/marker-multi-policy.csv b/tests/visual_tests/data/marker-multi-policy.csv deleted file mode 100644 index 3b55ddf73..000000000 --- a/tests/visual_tests/data/marker-multi-policy.csv +++ /dev/null @@ -1,3 +0,0 @@ -i|wkt -1|MULTIPOLYGON(((90 40,50 0,10 40,50 80,90 40)),((190 40,150 0,110 40,150 80,190 40)),((190 140,150 100,110 140,150 180,190 140))) -2|MULTIPOLYGON(((48 130,40 122,32 130,40 138,48 130)),((40 140,20 120,0 140,20 160,40 140)),((48 150,40 142,32 150,40 158,48 150))) diff --git a/tests/visual_tests/data/marker-on-line.csv b/tests/visual_tests/data/marker-on-line.csv deleted file mode 100644 index 4835d65c5..000000000 --- a/tests/visual_tests/data/marker-on-line.csv +++ /dev/null @@ -1,2 +0,0 @@ -i|wkt -1|LINESTRING(-10 0, 0 20, 10 0, 15 5) diff --git a/tests/visual_tests/data/overlap.dbf b/tests/visual_tests/data/overlap.dbf deleted file mode 100644 index 566f81b5c..000000000 Binary files a/tests/visual_tests/data/overlap.dbf and /dev/null differ diff --git a/tests/visual_tests/data/overlap.shp b/tests/visual_tests/data/overlap.shp deleted file mode 100644 index 7462a5bbc..000000000 Binary files a/tests/visual_tests/data/overlap.shp and /dev/null differ diff --git a/tests/visual_tests/data/overlap.shx b/tests/visual_tests/data/overlap.shx deleted file mode 100644 index c6308ec85..000000000 Binary files a/tests/visual_tests/data/overlap.shx and /dev/null differ diff --git a/tests/visual_tests/data/pattern.png b/tests/visual_tests/data/pattern.png deleted file mode 100644 index b1d977a0e..000000000 Binary files a/tests/visual_tests/data/pattern.png and /dev/null differ diff --git a/tests/visual_tests/data/points.csv b/tests/visual_tests/data/points.csv deleted file mode 100644 index 3cd780b40..000000000 --- a/tests/visual_tests/data/points.csv +++ /dev/null @@ -1,11 +0,0 @@ -lat,long,name,nr,color,placements -0,0,Test one,1,#ff0000,"N,S,E,W,SW,10,5" -0,0.1,Test two,2,red,"N,S,E,W,SW,10,5" -0,0.2,Test three,3,#00ff00,"N,S,E,W,SW,10,5" -0,0.3,Test four,4,green,"N,S,E,W,SW,10,5" -0,0.4,Test five,5,#0000ff,"N,S,E,W,SW,10,5" -0,0.5,Test six,6,blue,"N,S,E,W,SW,10,5" -0,0.6,Test seven,7,#000000,"N,S,E,W,SW,10,5" -0,0.7,Test eight,8,black,"N,S,E,W,SW,10,5" -0,0.8,Test nine,9,#ffffff,"N,S,E,W,SW,10,5" -0,0.9,Test ten,10,white,"N,S,E,W,SW,10,5" \ No newline at end of file diff --git a/tests/visual_tests/data/repeat-labels.csv b/tests/visual_tests/data/repeat-labels.csv deleted file mode 100644 index 206294002..000000000 --- a/tests/visual_tests/data/repeat-labels.csv +++ /dev/null @@ -1,10 +0,0 @@ -wkt,type,name,ref -"POINT(-3 -0.40)",poi,, -"POINT(3 -0.40)",poi,, -"POINT(-3 -3.6)",poi,, -"POINT(3 -3.6)",poi,, -"LINESTRING(-12 2, 12 2)",motorway,First Hwy,1 -"LINESTRING(-12 1, 12 1)",motorway,First Hwy,1 -"LINESTRING(-12 3, 12 3)",motorway,Second Hwy,2 -"LINESTRING(-12 -1, 8 -1, 8 -2, -8 -2, -8 -3, 12 -3)",secondary,Main Street, - diff --git a/tests/visual_tests/data/satellite.png b/tests/visual_tests/data/satellite.png deleted file mode 100644 index 0275f36dc..000000000 Binary files a/tests/visual_tests/data/satellite.png and /dev/null differ diff --git a/tests/visual_tests/data/snow-cover.tif b/tests/visual_tests/data/snow-cover.tif deleted file mode 100644 index 239fad9a1..000000000 Binary files a/tests/visual_tests/data/snow-cover.tif and /dev/null differ diff --git a/tests/visual_tests/data/text-data-binding.sqlite b/tests/visual_tests/data/text-data-binding.sqlite deleted file mode 100644 index 2348be2cc..000000000 Binary files a/tests/visual_tests/data/text-data-binding.sqlite and /dev/null differ diff --git a/tests/visual_tests/data/textspacing.dbf b/tests/visual_tests/data/textspacing.dbf deleted file mode 100644 index bd1b1276c..000000000 Binary files a/tests/visual_tests/data/textspacing.dbf and /dev/null differ diff --git a/tests/visual_tests/data/textspacing.shp b/tests/visual_tests/data/textspacing.shp deleted file mode 100644 index 60dc7c081..000000000 Binary files a/tests/visual_tests/data/textspacing.shp and /dev/null differ diff --git a/tests/visual_tests/data/textspacing.shx b/tests/visual_tests/data/textspacing.shx deleted file mode 100644 index 9c4767dd8..000000000 Binary files a/tests/visual_tests/data/textspacing.shx and /dev/null differ diff --git a/tests/visual_tests/data/whole-centroid.csv b/tests/visual_tests/data/whole-centroid.csv deleted file mode 100644 index f630955df..000000000 --- a/tests/visual_tests/data/whole-centroid.csv +++ /dev/null @@ -1,2 +0,0 @@ -i|wkt -1|MULTIPOLYGON(((1350057.96009438 5942345.52058283,1384876.13646624 5891754.2133652,1527153.68896859 5865144.36766544,1489794.86785838 5828107.21457916,1521644.71000822 5808839.16705438,1500586.73589334 5782129.46376012,1549474.58270654 5722446.94649062,1526963.22131985 5715859.64352432,1468675.11142609 5744853.11521536,1367157.74707515 5695509.5055605,1353768.57268098 5663160.88833932,1395853.46277285 5615400.34143299,1363168.83576153 5576894.81504537,1376836.42020216 5503694.0028362,1516356.92287605 5396662.575031,1560328.12173938 5261876.31080913,1640818.23615492 5173802.74601002,1796912.65253506 5148129.98779792,1773597.67574436 5083111.70893878,2005049.37613903 4960037.26198969,2060770.68121407 4885821.98463312,2042650.53978071 4835753.32622244,1988073.15379307 4907241.27057499,1882814.34135654 4930901.063827,1835287.04135981 4832212.44229475,1909252.60910046 4777690.54700568,1911262.92778469 4716420.6995481,1847346.61575592 4693181.77244718,1788068.875589 4568718.26175616,1740109.09937055 4581073.81722757,1805880.43939388 4708906.48580766,1744005.2815483 4870423.42300908,1235522.56053157 5220039.63151647,1125161.53055404 5466602.89896275,973921.757167397 5532097.82173426,838019.24926376 5432786.3871293,852954.651385017 5491916.6901273,776607.959736312 5509523.04321204,782761.478548388 5595015.13624148,736908.312373676 5638877.1573602,793460.506128018 5662194.42680345,756857.878318762 5745270.82868898,783472.587455564 5769448.93739922,874497.199243332 5767386.72200479,939134.416294499 5854912.10535634,1005956.9462694 5754390.71173147,1033261.27965169 5860165.00562569,1127666.33041638 5816836.29071798,1118791.82929085 5867309.80784728,1164989.30665057 5868344.65660203,1165652.54817671 5921100.82966656,1350057.96009438 5942345.52058283),(1386948.01482887 5449379.17151171,1392606.60718488 5463421.03119553,1382120.31115215 5458937.77184712,1386948.01482887 5449379.17151171),(1385381.11851082 5146477.94829492,1386669.06721543 5146224.9584086,1386111.70929647 5147206.59661607,1385381.11851082 5146477.94829492)),((1382897.20987839 5687974.04417046,1371857.98993491 5675822.90372079,1377393.1289756 5689163.60754804,1382897.20987839 5687974.04417046)),((1095847.54640445 5317215.2838641,1091704.01231816 5313451.44710224,1091394.65545324 5321701.46563701,1094455.94145006 5323479.01597989,1095847.54640445 5317215.2838641)),((1162299.15983606 5288324.53042776,1160289.06379081 5267765.62824438,1124543.26210218 5277407.73480368,1162299.15983606 5288324.53042776)),((1123028.09251298 5247084.38946664,1122316.87228631 5254141.60947014,1124512.20396424 5250317.54284925,1123028.09251298 5247084.38946664)),((1215144.97114443 5209828.83212963,1209640.77892215 5214848.8689761,1210908.5966028 5219286.46510058,1215144.97114443 5209828.83212963)),((1148446.00580429 5208658.24432317,1145817.64130717 5213552.48912728,1149497.41839483 5212548.16532901,1148446.00580429 5208658.24432317)),((1059019.27398736 5033998.10699295,1093806.61486026 4942691.99568292,1065234.68643633 4743259.71214946,1003916.12604469 4759901.51823648,986197.736653606 4704377.88889769,935856.725207561 4715744.68629496,952523.590688621 4846503.91226084,911984.817004403 4999606.76073705,1059019.27398736 5033998.10699295)),((928311.824080081 5021563.59386512,914520.452365687 5011234.44611049,926301.728034833 5030262.29618597,928311.824080081 5021563.59386512)),((1443164.46899898 4995230.22633471,1441618.24127186 5000220.31310592,1445823.55767554 5002226.81825718,1443164.46899898 4995230.22633471)),((1553061.29669992 4968395.29665014,1542207.75766705 4973291.02362767,1552690.38015659 4974433.31609162,1553061.29669992 4968395.29665014)),((1581911.63517033 4947738.11891254, 1587632.34380218 4947004.77788114,1580427.52371907 4944237.33055168,1581911.63517033 4947738.11891254)),((923085.819265294 4735088.56864719,915479.024500905 4745293.69583645,924260.796490606 4748923.38178062,923085.819265294 4735088.56864719)),((1693571.31832746 4688858.4894456,1690973.90064878 4691713.90965507,1696416.19923417 4693935.9965921,1693571.31832746 4688858.4894456)),((1466448.61029075 4677403.01590106,1465211.85074803 4680849.56314581,1469231.59756058 4680414.29421003,1466448.61029075 4677403.01590106)),((1655135.14718535 4654767.34922581,1646940.91946804 4659946.37928978,1655166.09400377 4661409.67928983,1655135.14718535 4654767.34922581)),((1664813.70899286 4642559.56041499,1660020.95963625 4652672.28390196,1665772.39244759 4652790.51476716,1664813.70899286 4642559.56041499)),((1668555.37971741 4630998.75869634,1663236.86840579 4636007.55629286,1665215.68367412 4640507.06235257,1668555.37971741 4630998.75869634)),((1728668.01606527 4598788.94471507,1679439.97688818 4506146.77040914,1705043.45977066 4440345.73224938,1678852.4326158 4390316.66779138,1382835.42756099 4550662.053593,1482404.47818411 4610314.59733156,1532745.60094962 4575266.49172867,1728668.01606527 4598788.94471507)),((1344059.17537453 4572873.96816367,1339173.36292359 4577580.75464391,1342420.21851156 4577895.44505675,1344059.17537453 4572873.96816367)),((1375259.46829558 4566170.07673534,1366044.55216722 4570443.18173048,1373589.78725316 4570168.66006012,1375259.46829558 4566170.07673534)),((1337596.41101701 4402695.43852239,1328134.14298011 4415398.45409661,1341214.18314831 4410841.06668909,1337596.41101701 4402695.43852239))) diff --git a/tests/visual_tests/fonts/Awesome/FontAwesome.otf b/tests/visual_tests/fonts/Awesome/FontAwesome.otf deleted file mode 100644 index 81c9ad949..000000000 Binary files a/tests/visual_tests/fonts/Awesome/FontAwesome.otf and /dev/null differ diff --git a/tests/visual_tests/fonts/Awesome/readme.md b/tests/visual_tests/fonts/Awesome/readme.md deleted file mode 100644 index 6e6139b7a..000000000 --- a/tests/visual_tests/fonts/Awesome/readme.md +++ /dev/null @@ -1 +0,0 @@ -Font Awesome by Dave Gandy - http://fontawesome.io diff --git a/tests/visual_tests/fonts/KhmerOS/KhmerOS.ttf b/tests/visual_tests/fonts/KhmerOS/KhmerOS.ttf deleted file mode 100644 index 7aa5bdcd5..000000000 Binary files a/tests/visual_tests/fonts/KhmerOS/KhmerOS.ttf and /dev/null differ diff --git a/tests/visual_tests/fonts/KhmerOS/copyright b/tests/visual_tests/fonts/KhmerOS/copyright deleted file mode 100644 index 67ffde0d8..000000000 --- a/tests/visual_tests/fonts/KhmerOS/copyright +++ /dev/null @@ -1,28 +0,0 @@ -This package was adopted by Soputtra San on -Mon, 23 Jul 2007 11:04:29 +1000 - -This package was debianized by Paul Wise on -Wed, 14 Sep 2005 15:45:30 +0800. - -It was downloaded from http://www.khmeros.info/drupal/?q=en/download/fonts - -Copyright: - -Copyright 2005, 2006 Danh Hong -Copyright 2005, 2006 Open Forum of Cambodia - -License: - -This font is free software; you can redistribute it and/or modify it -under the terms of the GNU Lesser General Public License as published -by the Free Software Foundation; either version 2.1 of the License, or -(at your option) any later version. - -This library is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public -License for more details. - -On Debian systems, the complete text of the GNU Lesser General Public -License can be found in the file /usr/share/common-licenses/LGPL. - diff --git a/tests/visual_tests/fonts/KhmerOS/readme.md b/tests/visual_tests/fonts/KhmerOS/readme.md deleted file mode 100644 index 315881dda..000000000 --- a/tests/visual_tests/fonts/KhmerOS/readme.md +++ /dev/null @@ -1 +0,0 @@ -KhmerOS.ttf V.5.0 downloaded from http://www.khmeros.info/en/fonts on Dec 2, 2013. diff --git a/tests/visual_tests/fonts/Noto/NotoNaskhArabic-Regular.ttf b/tests/visual_tests/fonts/Noto/NotoNaskhArabic-Regular.ttf deleted file mode 100644 index 6855dd576..000000000 Binary files a/tests/visual_tests/fonts/Noto/NotoNaskhArabic-Regular.ttf and /dev/null differ diff --git a/tests/visual_tests/fonts/Rachana/RachanaMac.ttf b/tests/visual_tests/fonts/Rachana/RachanaMac.ttf deleted file mode 100644 index a25c6d597..000000000 Binary files a/tests/visual_tests/fonts/Rachana/RachanaMac.ttf and /dev/null differ diff --git a/tests/visual_tests/fonts/Rachana/readme.md b/tests/visual_tests/fonts/Rachana/readme.md deleted file mode 100644 index 133046d4f..000000000 --- a/tests/visual_tests/fonts/Rachana/readme.md +++ /dev/null @@ -1 +0,0 @@ -RachanaMac.ttf V.5.0 downloaded from https://sites.google.com/site/macmalayalam/ on Dec 2, 2013. diff --git a/tests/visual_tests/fonts/copyright b/tests/visual_tests/fonts/copyright deleted file mode 100644 index 67ffde0d8..000000000 --- a/tests/visual_tests/fonts/copyright +++ /dev/null @@ -1,28 +0,0 @@ -This package was adopted by Soputtra San on -Mon, 23 Jul 2007 11:04:29 +1000 - -This package was debianized by Paul Wise on -Wed, 14 Sep 2005 15:45:30 +0800. - -It was downloaded from http://www.khmeros.info/drupal/?q=en/download/fonts - -Copyright: - -Copyright 2005, 2006 Danh Hong -Copyright 2005, 2006 Open Forum of Cambodia - -License: - -This font is free software; you can redistribute it and/or modify it -under the terms of the GNU Lesser General Public License as published -by the Free Software Foundation; either version 2.1 of the License, or -(at your option) any later version. - -This library is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public -License for more details. - -On Debian systems, the complete text of the GNU Lesser General Public -License can be found in the file /usr/share/common-licenses/LGPL. - diff --git a/tests/visual_tests/fonts/glukfonts/Foglihten-068.otf b/tests/visual_tests/fonts/glukfonts/Foglihten-068.otf deleted file mode 100644 index 84b640803..000000000 Binary files a/tests/visual_tests/fonts/glukfonts/Foglihten-068.otf and /dev/null differ diff --git a/tests/visual_tests/fonts/glukfonts/OFL_License.txt b/tests/visual_tests/fonts/glukfonts/OFL_License.txt deleted file mode 100644 index dd8001ea1..000000000 --- a/tests/visual_tests/fonts/glukfonts/OFL_License.txt +++ /dev/null @@ -1,94 +0,0 @@ -Copyright (c) 2010-2011, gluk (http://www.glukfonts.pl|gluksza@wp.pl), -with Reserved Font Name Foglihten. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/66-lohit-bengali.conf b/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/66-lohit-bengali.conf deleted file mode 100644 index fb6bffef1..000000000 --- a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/66-lohit-bengali.conf +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - bn - - - sans-serif - - - Lohit Bengali - - - - - - Lohit Bengali - - - true - - - - - Lohit Bengali - - sans-serif - - - - diff --git a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/AUTHORS b/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/AUTHORS deleted file mode 100644 index ce2775c3a..000000000 --- a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/AUTHORS +++ /dev/null @@ -1,12 +0,0 @@ -Contributors (Alphabetically) :- -- Baishampayan Ghose -- Bernard Massot -- Darshan Santani -- Hiran Venugopalan -- Leon Ho -- Parag Nemade -- Pravin Satpute -- Rahul Bhalerao -- Ramkrishna Reddy -- Sandeep Shedmake -- Shriramana Sharma diff --git a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/COPYRIGHT b/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/COPYRIGHT deleted file mode 100644 index ec59324d1..000000000 --- a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/COPYRIGHT +++ /dev/null @@ -1,7 +0,0 @@ -Copyright 2011-12 Lohit Fonts Project contributors. - - - Licensed under the SIL Open Font License 1.1 (see file - OFL.txt) - - Lohit is a trademark of Red Hat, Inc. diff --git a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/ChangeLog b/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/ChangeLog deleted file mode 100644 index d0f16bd31..000000000 --- a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/ChangeLog +++ /dev/null @@ -1,25 +0,0 @@ - lohit-bengali -Current Version :- 2.5.3 - -* Fri Dec 21 2012 Pravin Satpute - 2.5.3 -- Dropping RFN from OFL.txt - -* Thu Nov 08 2012 Pravin Satpute - 2.5.2 -- resolved rendering error for UTRRS Assamese GPSO sequence 25, 28 44 and 63 for Harfbuzz -- resolved rendering error for UTRRS Bengali GSUB sequnce 86, 88 for harfbuzz -- corrected panose values #803294 - -* Wed Feb 29 2012 Pravin Satpute - 2.5.1 -- added U+09FB character -- added autohint instruction in conf file - -* Wed Sep 21 2011 Pravin Satpute - 2.5.0 -- relicensing to OFL 1.1 - -* Tue Aug 30 2011 Pravin Satpute - 2.4.3.1 -- minor release, added makefile in tarball - -* Fri Aug 28 2009 Pravin Satpute - 2.4.3 -- first release with split tarball -- see Changelog.old for previous changes - diff --git a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/ChangeLog.old b/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/ChangeLog.old deleted file mode 100644 index 019e5cd41..000000000 --- a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/ChangeLog.old +++ /dev/null @@ -1,175 +0,0 @@ - fonts-indic -Current Version :- 2.4.3 -* Wed Sep 09 2009 Pravin Satpute - 2.4.3 -- updated conf file for all language -- added changelog for individual lang -- modified makedist.sh generate.sh for releasing new tarballs - -* Fri Aug 28 2009 Pravin Satpute - 2.4.2 -- added conf file for all fonts -- contributions from Parag Nemade for conf files - -* Wed Aug 12 2009 Pravin Satpute - 2.4.1 -- Update Copyright - -* Tue Aug 04 2009 Pravin Satpute - 2.4.0 -- Added Unicode 5.1 support in All Lohit fonts - -* Thu Mar 05 2009 Rahul Bhalerao - 2.3.8 -- Bug 428427 - [kn_IN][fonts-indic] - 0CB5+0CCA is wrongly rendering -- Bug 450699 - [ta_IN]Errors in "sh" and "shrI" in Lohit Tamil font (fixed in font, needs rendering update) -- Bug 476427 - [te_IN] - Consonant+Virama+Consonant+Virama+space renders the second virama as a separate glyph in lohit-telugu font -- Bug 479100 - [kn_IN] Conjunct combination of U0C9D with U0CCA/U0CCB is rendering wrongly -- Bug 483530 - [bn_IN]Lohit Bengali font cheating about character support -- Added Lohit-Assamese -- Modified README file. - -* Tue Sep 09 2008 Rahul Bhalerao - 2.3.1 -- Bug 216400: [te_IN] - Anaconda GUI - Release Notes button is overlapping -with other texts in a specific page - -* Wed Aug 20 2008 Rahul Bhalerao - 2.3.0 -- Bug 215902: [hi_IN, mr_IN]Incorrect extent of 0x093f when attached to a composite character which has width greater than a single character (hi_IN & maybe others) -- Forked Lohit Hindi into Marathi, Maithili, Kashmiri, Konkani, Sindhi and Nepali. - -* Fri Jun 06 2008 Rahul Bhalerao -- Bug 445176: [ml_IN] Conjuncts combining with 0D30 do not form the pre based glyph - -* Fri Jun 06 2008 Rahul Bhalerao -- Improved Anchoring(blwm Anchor-0) for Hindi font. -- Corrected positioning of U+0953 for Hindi font. - -* Tue Apr 29 2008 Rahul Bhalerao - 2.2.1 -- Resolved bugs (bugzilla.redhat.com): -- Bug 444559 Processed: [ml_IN] Wrong shape for conjuncts formed using 0D30 -(xRa) in a word -- Bug 444561 Processed: [ml_IN] Conjuncts does not get combined with 0D30 to -form the pre based glyph -- Bug 444563: [ml_IN] When 0D2F is combined with a consonant and followed by -0D15, 0D2F joins with 0D15 - -* Tue Apr 08 2008 Rahul Bhalerao - 2.2.0 -- Resolved bugs (bugzilla.redhat.com): -- Bug 202400: [hi_IN] New codepoints/glyphs in Unicode 5.0 -- Bug 205981: [hi_IN]The font file of Devanagari(lohit_hi.ttf) lacks the glyph -of U+0x0904 -- Bug 206426: [hi_IN, mr_IN] Some Glyphs are missing and some GPOS shapes -should be more perfect - Priority - C -- Bug 239630: [hi_IN] the glyph of 0x0953 in lohit_hi.ttf is wrong. -- Bug 428427: [kn_IN][fonts-indic] - 0CB5+0CCA is wrongly rendering - -* Thu Feb 28 2008 Rahul Bhalerao - 2.1.9 -- Resolved bugs(bugzilla.redhat.com): -- Bug 431035: [ml_IN] Glyph to be formed for nine consonants + 0D4D + 0D32 -- Bug 433437: [ml_IN] Rendering combination incorrect with 0D35 -- Bug 433440: [ml_IN] Rendering combination incorrect with 0D2F -- Contributions from Hiran Venugopalan (xRa glyphs and few other) - -* Fri Jan 25 2008 Rahul Bhalerao - 2.1.8 -- Bug 192812: [ml_IN]GPOS issues in new Malayalam font -- Bug 402321: [ml_IN} Wrong combinations used for the conjunct 'ന്പ' -- Bug 402331: [ml_IN] Wrong combinations used for conjunct 'ന്‍റ' -- Bug 424701: [ml_IN] words are shown joined (very low space shown on screen) -- Bug 429526: [ml_IN]: Removal of a glyph from font file -- Bug 247233: Additional special character rendering for assamese [as-IN] and bengali [bn-IN] - -* Tue Jan 15 2008 Rahul Bhalerao - 2.1.7 -- Updated the makedist.sh script - -* Tue Jan 15 2008 Rahul Bhalerao - 2.1.7 -- Bug 233419: [kn_IN] GSUB's combinaing with additional dependent vowel are -not rendering correctly - -* Fri Dec 14 2007 Rahul Bhalerao - 2.1.6 -- Bug 234284: [pa_IN] Enlarge size for asterik(*) - -* Mon Mar 26 2007 Parag Nemade - 2.1.5 -- Resolved Bugs from Parag Nemade -- Bug 231965: [kn_IN] wrong Conjuct combines during the formation kannada letter [yo] -- Bug 233257: [kn_IN] Conjuct combination of U0CAE with U0CCB is rendering wrongly -- Bug 233415: [kn_IN] GSUB's combinaing with additional dependent vowel are not rendering correctly -- Bug 233554: [kn_IN] GSUB's combinaing with additional dependent vowel U0CC0 are not rendering correctly -- Bug 233555: [kn_IN] GSUB's combinaing with additional dependent vowel U0CC7 are not rendering correctly -- Bug 233556: [kn_IN] GSUB's combinaing with additional dependent vowel U0CC6 are not rendering correctly -- Bug 233557: [kn_IN] GSUB's combinaing with additional dependent vowel U0CC8 are not rendering correctly -- Bug 233558: [kn_IN] GSUB's combinaing with additional dependent vowel U0CCBare not rendering correctly -- Bug 233559: [kn_IN] GSUB's combinaing with additional dependent vowel U0CBE are not rendering correctly -- Bug 233560: [kn_IN] GSUB's combinaing with additional dependent vowel U0CBF are not rendering correctly - -* Mon Mar 05 2007 Parag Nemade - 2.1.4 -- Resolved Bugs from Parag Nemade -- Bug 221383: [kn_IN] GSUB combinations has problem with Ra - -* Mon Feb 19 2007 Parag Nemade - 2.1.3 -- Resolved Bugs from Parag Nemade -- Bug 202401: [ta_IN] New codepoints/glyphs in Unicode 5.0 -- Bug 223774: [kn_IN] Some Ligature rules are wrong in the font file -- Bug 223971: [kn_IN] Consonant + Halant + Consonant + Dependent Vowel not appearing properly in some rare cases -- Bug 227971: [kn_IN] Combinations with 2 Halants not rendering properly - -* Tue Jan 16 2007 Parag Nemade - 2.1.2 -- Resolved Bugs from Parag Nemade -- Bug 222407: [or_IN] [fonts-indic] - One GSUB Conjunct is not appearing with its correct shape -- Bug 206434: [ml_IN] Digits are appearing in English instead of malayalam - Priority C -- Bug 215894: Relative height of 0x0901 (and 0x0902) on 0x0915 is different than other devnagari characters (hi_IN, mr_IN) -- Bug 222408: [te_IN] [fonts-indic] - Danda and Double Danda to be implemented with 0964 && 0965 -- Bug 222409: [kn_IN] [fonts-indic] - Danda and Double Danda to be implemented with 0964 && 0965 -- Bug 221384: [kn_IN] - shape of ra (U+0CB0) is not corret in combined character (below base) - -* Tue Jan 16 2007 Parag Nemade - 2.1.1 -- Added makedist.sh, generate.sh and generate.pe script files. - -* Fri Jan 12 2007 Parag Nemade - 2.0.13 -- Resolved Bugs from Parag Nemade -- Bug 220880: [or_IN] Danda need to move from 0B64/0B65 to 0964/0965 -- Bug 222406: [ml_IN] Danda need to move from 0D64/0D65 to 0964/0965 - -* Wed Jan 02 2007 Parag Nemade - 2.0.12 -- Resolved Bugs from Parag Nemade -- Bug 220881: [ta_IN] [fonts-tamil] - Warning showing in the terminal when run apps with ta_IN locale -- Bug 220882: [hi_IN] rendering problem for number "5" in postscript file - -* Wed Dec 13 2006 Parag Nemade - 2.0.11 -- Resolved Bugs from Parag Nemade -- Bug 216639: [kn_IN] OTF rules to be fixed - Priority A -- Bug 217482: [kn_IN] - pango - Composed Char not rendered properly -- Bug 219583: [pa_IN] Punjabi fonts' size is big as compared to English -- Bug 218588: [gu_IN] Qt doesn't display virama properly - -* Tue Dec 06 2006 Parag Nemade - 2.0.10 -- Resolved Bugs from Parag Nemade -- Bug 207269: [ta_IN] - Some conjunct characters not appearing with proper shape - Priority - B -- Bug 217482: [kn_IN] - pango - Composed Char not rendered properly -- Bug 216628: [ml] characters are not shown bold during selecting BOLD font -- Bug 218588: [gu_IN] Qt doesn't display virama properly -- Bug 206599: [te_IN] - Some of the Priority - C GSUB Conjuncts are not appearing with its actual shape -- Resolved Bugs from LingNing Zhang -- Bug 218586: [ml_IN] 0d2f+0d4d combination is invaild when put in word -- Bug 218587: [ml_IN] 0d35+0d4d combination is invaild (should not combine) - -* Tue Nov 21 2006 Parag Nemade - 2.0.9 -- Fixed Bugs from Parag Nemade -- Bug 216060: [pa_IN]Lohit Punjabi: (U+0A03) Gurmukhi Sign Visarga right margin is too wide. - -* Tue Nov 21 2006 Parag Nemade - 2.0.8 -- Fixed Bugs from Parag Nemade -- Bug 216629 : [te_IN] GPOS position should be at middle instead of left hand side - Priority B -- Bug 216631 : [or_IN] one GSUB Rule is wrongly defined - Priority A -- Bug 216628 : [ml] characters are not shown bold during selecting BOLD font -- Bug 216624 : [pa_IN] 0a01/0a03/0964/0965 is missing from font -- Bug 216634 : Glyphs for two combinations are wrong in Gujarati (gu_IN) -- Bug 197216 : [bn_IN]Incorrect glyph for conjunct -- Bug 215894 : Relative height of 0x0901 (and 0x0902) on 0x0915 is different than - other devnagari characters (hi_IN, mr_IN) -- Fixed Bugs from LingNing Zhang -- Bug 216626 : [as_IN] Pango - A particular char when Conjuncts, creates Cursor Nevigation Problem -- Bug 216627 : [ml_IN] The glyph of 0x25CC is not existing in lohit_ml.ttf -- Bug 216639 : [kn_IN] OTF rules to be fixed - Priority A - -* Tue 17 oct 2006 Leon Ho - 2.0.7 -- Bug 206601: [ta_IN] Glyph is missing for Unicode U+0BB6 - Priority - A (Rahul Bhalerao) -- Bug 216639: [kn_IN] OTF rules to be fixed - Priority A (Ramakrishna Reddy) - -* Fri 29 Sep 2006 Leon Ho - 2.0.6 -- Bug 208525: [ml_IN]the glyph of 0d33+0d4d+0d33 is wrong (LingNing Zhang) -- Bug 208540: [ml_IN]the glyph of 0d2f+0d4d and the glyph of 0d2f+0d4d+0d2f are wrong (LingNing Zhang) diff --git a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/Lohit-Bengali.ttf b/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/Lohit-Bengali.ttf deleted file mode 100644 index 2f537a191..000000000 Binary files a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/Lohit-Bengali.ttf and /dev/null differ diff --git a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/OFL.txt b/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/OFL.txt deleted file mode 100644 index 01b830782..000000000 --- a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/OFL.txt +++ /dev/null @@ -1,94 +0,0 @@ -Copyright 2011-12 Lohit Fonts Project contributors - - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/README b/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/README deleted file mode 100644 index e4f820750..000000000 --- a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/README +++ /dev/null @@ -1,21 +0,0 @@ - Lohit Fonts Project - -1) Generating .ttf file from source - Example - $tar -xvf lohit-hindi-2.4.3.tar.gz - $cd lohit-hindi-2.4.3 - $make - -2) Installing font (.ttf) file - You can then install .ttf font files by copying them to ~/.fonts directory. - Then execute fc-cache command and then relogin to use that font. - - -Lohit Project Information :- -See https://fedorahosted.org/lohit/ for more details. - -Mailing list:- -http://www.redhat.com/mailman/listinfo/lohit-devel-list - - - diff --git a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/README.cvs b/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/README.cvs deleted file mode 100644 index 59dafe942..000000000 --- a/tests/visual_tests/fonts/lohit-bengali-ttf-2.5.3/README.cvs +++ /dev/null @@ -1,20 +0,0 @@ -Lohit Fonts Project - -Scripts Usage:- -Lohit CVS is now included with 2 shell scripts -1)generate.sh - Once you checkout the .sfd files from lohit CVS, you just need to execute this script - and you will get all .ttf files in respective language directory. You can then install those font files - by copying them to ~/.fonts directory. Then execute fc-cache command and then relogin to use that font. - -2)makedist.sh - Use this script to generate upstream tarball used by fonts-indic SPEC to build rpms. - e.g. - To generate lohit-lang-$version.tar.gz follow steps as - 1) Anonymous CVS access - $ svn co http://svn.fedorahosted.org/svn/lohit - 1) cd lohit - 2) sh makedist.sh - You will get upstream tarball used to build lohit-fonts-$version-1 rpm. - NOTE:- This script can be used only from 2.1.1 and above version of this package. - diff --git a/tests/visual_tests/grids/antimeridian-bbox-1000-1000-1.0-grid-reference.json b/tests/visual_tests/grids/antimeridian-bbox-1000-1000-1.0-grid-reference.json deleted file mode 100644 index 0f716567a..000000000 --- a/tests/visual_tests/grids/antimeridian-bbox-1000-1000-1.0-grid-reference.json +++ /dev/null @@ -1,306 +0,0 @@ -{ - "keys": [ - "", - "42", - "41", - "40", - "24", - "44", - "26", - "38", - "23", - "46", - "36", - "22", - "28", - "21", - "47", - "34", - "29", - "33", - "30", - "19", - "15", - "14", - "12", - "18", - "16", - "11", - "31", - "49", - "48", - "10", - "50", - "51", - "9", - "52", - "8", - "54", - "6", - "56", - "5", - "58", - "4", - "60", - "3", - "62", - "1", - "63", - "66", - "65", - "64" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !# $ % ", - " & ' ", - " ( ) ", - " * + , ", - " - . ", - " / 0 1 ", - " 2 3 4 56 7 ", - " 8 9 : ", - " ; <= ", - " > ? ", - " @ ", - " A B ", - " C D ", - " ", - " E F ", - " ", - " G H ", - " I J ", - " K L ", - " ", - " M N ", - " OP ", - " Q ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/antimeridian-bbox-1000-1000-2.0-grid-reference.json b/tests/visual_tests/grids/antimeridian-bbox-1000-1000-2.0-grid-reference.json deleted file mode 100644 index 17039986c..000000000 --- a/tests/visual_tests/grids/antimeridian-bbox-1000-1000-2.0-grid-reference.json +++ /dev/null @@ -1,286 +0,0 @@ -{ - "keys": [ - "", - "42", - "40", - "24", - "37", - "46", - "22", - "28", - "35", - "20", - "30", - "15", - "12", - "32", - "17", - "48", - "10", - "50", - "9", - "52", - "54", - "7", - "57", - "5", - "60", - "3", - "1", - "63", - "66" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! # $ ", - " ", - " % ", - " & ' ", - " ( ", - " ) * ", - " + , - ", - " . / ", - " 0 ", - " 1 2 ", - " ", - " 3 4 ", - " 5 ", - " 6 ", - " ", - " 7 ", - " 8 ", - " 9 ", - " : ", - " ", - " ; < ", - " = ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/building-symbolizer-opacity-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/building-symbolizer-opacity-512-512-1.0-grid-reference.json deleted file mode 100644 index 2e111c9a3..000000000 --- a/tests/visual_tests/grids/building-symbolizer-opacity-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "keys": [ - "", - "1", - "2" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ! ", - " !!! ", - " !!!!! ", - " !!!!!!! ", - " !!!!!!!!! ", - " !!!!!!!!!!! ", - " !!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " #### # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ###### ### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ######## ##### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########## ####### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ############ ######### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ############## ########### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "############################ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " ########################## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " ########################## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ############## ########### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ############ ######### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########## ####### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ######## ##### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ###### ### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " #### # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!! ", - " !!!!!!!!!!! ", - " !!!!!!!!! ", - " !!!!!!! ", - " !!!!! ", - " !!! ", - " ! ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !! ! ", - " !!!! !!! ", - " !!!!!! !!!!! ", - " !!!!!!!! !!!!!!! ", - " !!!!!!!!!! !!!!!!!!! ", - " !!!!!!!!!!!! !!!!!!!!!!! ", - " !!!!!!!!!!!!!! !!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!! !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!! !!!!!!!!!!!!!! ", - " !!!!!!!!!!!! !!!!!!!!!!!! ", - " !!!!!!!!!! !!!!!!!!!! ", - " !!!!!!!! !!!!!!!! ", - " !!!!!! !!!!!! ", - " !!!! !!!! ", - " !! !! ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/building-symbolizer-opacity-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/building-symbolizer-opacity-512-512-2.0-grid-reference.json deleted file mode 100644 index 2e111c9a3..000000000 --- a/tests/visual_tests/grids/building-symbolizer-opacity-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "keys": [ - "", - "1", - "2" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ! ", - " !!! ", - " !!!!! ", - " !!!!!!! ", - " !!!!!!!!! ", - " !!!!!!!!!!! ", - " !!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " #### # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ###### ### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ######## ##### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########## ####### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ############ ######### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ############## ########### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "############################ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " ########################## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " ########################## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########################## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ############## ########### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ############ ######### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ########## ####### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ######## ##### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ###### ### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " #### # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!! ", - " !!!!!!!!!!! ", - " !!!!!!!!! ", - " !!!!!!! ", - " !!!!! ", - " !!! ", - " ! ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !! ! ", - " !!!! !!! ", - " !!!!!! !!!!! ", - " !!!!!!!! !!!!!!! ", - " !!!!!!!!!! !!!!!!!!! ", - " !!!!!!!!!!!! !!!!!!!!!!! ", - " !!!!!!!!!!!!!! !!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!! !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!! !!!!!!!!!!!!!! ", - " !!!!!!!!!!!! !!!!!!!!!!!! ", - " !!!!!!!!!! !!!!!!!!!! ", - " !!!!!!!! !!!!!!!! ", - " !!!!!! !!!!!! ", - " !!!! !!!! ", - " !! !! ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/charspacing-200-400-1.0-grid-reference.json b/tests/visual_tests/grids/charspacing-200-400-1.0-grid-reference.json deleted file mode 100644 index 617c072b5..000000000 --- a/tests/visual_tests/grids/charspacing-200-400-1.0-grid-reference.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "keys": [ - "", - "6" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! ! !! !!!! ! !!! ! ", - " ! !!!! !! ! !! !!! ", - " ! ! ! ! ! ", - " ! ! !! !!!!! !! ", - " !! ! ! !! ! ", - " !!! !! !!!! ! !!! !! ", - " !! !!! !! ! !! ! ", - " ! ! ! ! ", - " !! !!!!! !! ! ", - " ! !! ! ! ! ! ", - " !! ! !! ! !!! ! !! ! ", - " !!! !! ! !! ! ! ", - " !! ! ! ! ", - " ! !!! !!!! ! ! !! ! ", - " ! ! !! ! ! ! ! ", - " ! ! ! ! !! ! !!! ! !! ! ", - " !!!! !!! ! ! !!!! ", - " !!! ! ! ! ! !! ", - " ! ! !! !!! !! !! ", - " ! !! ! ! ", - " !!! !! !! ! !!! ! !! ", - " !! !! !!! !! !!!! ", - " ! ! ! ! ! ! ", - " !! ! !!! !!! ! ", - " ! ! ! ! ! ", - " !!!! !! ! !!! ! ! ", - " !!!! !!! !!!! ! ", - " ! ! ! ! ! ", - " ! ! ! ! !!! ! ! ", - " ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! !! ", - " ! ! ! ! ! ", - " ! ! ! ! ! ", - " ! !!! ! !! ! !!!! ! ", - " ! ! ! !! ! ", - " !! ! !! ! ! ! ! ! !! ! ", - " !! !! ! !! ! ! !! !! ", - " ! ! ! ! ! ", - " !! !! ! ! ! ! ! !! ", - " ! ! ! ! ! ! ! ", - " !! ! !! ! ! ! ! ! ! ! ", - " !! ! ! !! ! !! ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/charspacing-200-400-2.0-grid-reference.json b/tests/visual_tests/grids/charspacing-200-400-2.0-grid-reference.json deleted file mode 100644 index 38fe2f049..000000000 --- a/tests/visual_tests/grids/charspacing-200-400-2.0-grid-reference.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "keys": [ - "", - "6" - ], - "data": {}, - "grid": [ - " ", - " ! ", - " ! ! ! ! ! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! !! !! !! ! ! ! ! ! ", - " ! ! ! ! !! !! !! !! !! ! ! ! ! ! ", - " ! ! ! !! ! ! ! ! ! ", - " ! ! ! ! ", - " ! !!! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! !! ! ! ! ! ", - " ! !! !! ! ! !! !! ! ! ! ! ! ", - " ! ! ! !! ! ! ! ! ", - " ! ! ! ! ", - " ! !! ! ! ! ! ! ! ! ! ! ", - " ! ! !! ! ! ! !! ! ! ! ! ! ! ", - " ! ! ! !! ! !! !! ! ! ! ! ", - " !! ! !! !! ! ! ! ", - " ! ! ! ", - " ! !! ! ! ! ! ! ! ! ! ! !", - " ! ! ! ! ! !! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! !! ! ! ! ! ! ! !", - " ! ! !! !! ! ! ! ! ! ", - " ! ! ! ! ", - " ! !!! ! ! !! ! ! ! ! ! ! ! !!", - " ! ! ! ! ! ! ! !! ! ! ! ! ! ! !!", - " !! ! ! ! ! ! ! !! ! ! ! ! ! ! !!!", - " ! ! ! ! ! ! ! ! ", - " ! ! ! ", - " ! !! ! ! ! ! ! ! ! ! !! ! ", - " ! ! ! ! ! ! ! ! !! ! !!", - " ! ! ! ! ! ! ! !! ! ! !! ! !! ", - " !! ! ! ! ! ! ! !!", - " ! ", - " ! ! ! ! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! !!", - " ! ! ! !! ! ! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! !", - " ! ! ", - " ! !! ! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ", - " ! ! ", - " ! !! ! ! ! ! ! ! ! ! !", - " ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !", - " ! ! !! ! ! !! ! ! ! ! ! ! ! ! !", - " ! ! ! !! ! ! ! ", - " ! ! ", - " ! ! ! ! ! ! ! ! ! ! ! !", - " ! ! ! ! ! ! ! ! ! ! !", - " ! ! ! ! ! ! ! ! ! ! ! ! ", - " ! ! ! !! ! ! ! ! ", - " ! ! ! ! ", - " ! !! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! ! ! ! ", - " !! ! !! !! ! ! ! ", - " ! ! ! ", - " ! ! ! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! ! ! ! ! ! ", - " ! ! ! !! ! !! ! ", - " ! ! ! ", - "! ! !! ! ! !! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ", - " ! ! ! ", - "! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! ! ! !", - "! ! ! ! ! ! ! ! ! ! ! ! ! !", - " ! ! !! ! ! ", - " ! ! ! ! ", - " !! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! ! ! ! ! ", - " ! ! !! ! !! ", - " ! ! !", - " ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! ! ", - " ! ! !! ! ! ", - " ! ! ", - " ! ! ! ! ! ", - "! ! ! ! ! ! ", - "! ! ! ! ! ! ! ! ", - " ! !! ! !! ", - " ! ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/charspacing-lines-300-300-1.0-grid-reference.json b/tests/visual_tests/grids/charspacing-lines-300-300-1.0-grid-reference.json deleted file mode 100644 index a792e966b..000000000 --- a/tests/visual_tests/grids/charspacing-lines-300-300-1.0-grid-reference.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "keys": [ - "", - "6" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! ! ! !! ! !! ! ! ! ! ", - " ! ! ! !! ! !! ! ! ! ! ", - " !! ! ! ", - " !! !! ! ! ! ! ! !! !! ", - " !! ", - " ! ! ! ! ! !! ! !! !! ! ! ", - " !! ! ! ! !! ! !! !! ! ! ", - " !!! ! ! ", - " !!!! ! ! !!!! ", - " ! ", - " ! ! ! ! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! !! ! ", - " ! ! ! ", - " ! ! ! ! ! ", - " ! ", - " ! !! !!!! !!!!!! ", - " ! !!! !!!! !!!!!! ! ! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " !! !!!! !!!!! ! ", - " ! ! ", - " ! ! ! ! !!!! !!!!! ! ", - " !!! ! !!!! !!!!! ! ! ", - " !!! ! ! !! ", - " ! !!! !!!! !!! ", - " ! ! ", - " ! !!! ! !!!! !!! ! ! ! ", - " !!!! !!!! !!!!! !!!! ", - " ! ! ! ! ", - " !!! !!!! !! !! ", - " ! ! ", - " !!!! !!!! !!! ! !! ! ", - " ! !! !!!! !! ! !!! ", - " !! ! ! ! ", - " !! !!!! ! !! ! ", - " ! ! ", - " ! ! !! ! !! !!! ! ! ", - " !! !! ! !! !! !! ! !! ", - " !! ! ! ! ", - " ! !!!! ! ! ! !! ", - " ! ", - " !!!! ! !! !!!!! !! ", - " !!!!! ! !! !! !! !!! ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/charspacing-lines-300-300-2.0-grid-reference.json b/tests/visual_tests/grids/charspacing-lines-300-300-2.0-grid-reference.json deleted file mode 100644 index ec902266d..000000000 --- a/tests/visual_tests/grids/charspacing-lines-300-300-2.0-grid-reference.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "keys": [ - "", - "6" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !! ! ! ", - " !! !! !! !! !! !! !! !! !!! ! ", - " ! ! ! !! ! ! !! ! ! ! ! !! ", - " ! ! ! ! ! ! ! ! !! ! ! ! ! ! ! ! ", - " ! ! ", - " !! ! !! !! ", - " ! !! !! !! !! !!! !! !! ! !! !!! ! ", - " ! !! ! !! ! ! !! ! ! ! ! ! ! ", - " ! ! ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ", - " ! ! ! ", - " ! ! !! !! ", - " ! !!! !! !! !! !! !! !! !! !! ! ", - " ! ! !! ! !! !! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! !! !! ! ! ! ! ! ! ! !! ", - " ! ! ", - " !! ! ! ! !! ", - " !! !! ! !! !! !! !! ! !!! !! ! ", - " ! ! !! ! ! ! !! ! ! ! ! ! ", - " ! ! ! ! ! ! ! !! ! ! ! ! ! ! ! ", - " ! ! ", - " !! ! ! ! ! ", - " ! !!! !! !! !! !!! !! !! ! !! !! ! ! ! ", - " ! ! ! !!! !! ! ! !!! ! ! ! ! ! ! ! ", - " ! !! ! ! ! ! !! ! ! ! ! ! ! ! ! ! ! ! ! ", - " ! ! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ! !! !!! !! !! !! !! !! ! !! !! ! ! ! ", - " ! !! ! !! ! !!! ! ! ! ! ! !! ", - " ! ! ! ! ! ! ! ! !! ! ! ! ! ! ! ! ! ", - " ! ", - " !! ! ! !! ! ", - " ! !! !! !! !! !! !! !! ! !! !!! ! ! ", - " ! ! ! !! ! ! !!! ! ! ! ! !!! ", - " ! ! ! ! ! ! ! !! ! ! ! ! ! ! ! !! ! ! ! ", - " ! ! ", - " !! ! ! !! ", - " !!! !! !! !! !! !! !! !!! !!! ! ! ! ", - " ! ! ! !! ! ! !!!! ! ! ! ! ! ! ! ", - " ! !! ! !! ! ! !! ! ! ! ! ! ! ! ! ", - " ", - " !! ! !! ", - " ! !! !! ! !! !! !! !! !!! !! ! ! ", - " ! ! !!! ! ! !!!! ! ! ! ! ! ! ", - " ! ! ! ! ! ! ! ! ! ! !! ! ! ! !! ", - " ! ", - " !! ! !! !! ", - " ! !! !! !! !! !! !! !! !!! !! ! ! ", - " ! ! ! !! ! ! ! !!!!! ! !! ! ! ! ! ", - " !! ! !! ! ! ! ! ! ! ! ! ! ! ! ! ", - " ! ! ", - " ! ! !! ! ", - " ! !!! !! !! !! !! !! !! !! !! ! !! ", - " ! ! !! ! !! ! ! !!! ! !! ! !! ", - " ! !! ! ! ! ! !! ! ! !! ! !! ! ! ", - " ! ! ", - " !! ! ! !! ", - " ! !! !! !! !! !! !! !!! !! !! ! ! ! ", - " ! !! ! !! ! ! !!! ! ! !! ! ! ! !! ", - " ! ! ! ! !! !! ! ! !! ! ! ! !! ! ", - " ! ! ! ", - " !! ! ! ! !! ", - " ! !! !! ! !! !! !! !!! !! !!! ! ! ! ", - " ! ! ! !! !! ! ! !!! ! ! ! ! ! ! ! ", - " ! !! !! ! ! !! !! !! ! ! ! ! ! !! ! ", - " ! ! ! ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/collision-600-400-1.0-grid-reference.json b/tests/visual_tests/grids/collision-600-400-1.0-grid-reference.json deleted file mode 100644 index e59d9c95c..000000000 --- a/tests/visual_tests/grids/collision-600-400-1.0-grid-reference.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "keys": [ - "", - "1" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!! ", - " !!! ", - " !!!! ", - " !!!!! ", - " !!!!!! ", - " !!!!! ", - " !!!! ", - " !!! !! ", - " !!! ", - " !!!! ", - " !!!!! ", - " !!!!!! ", - " !!!!! ", - " !!!! !! ", - " !! !!! ", - " !!!! ", - " !!!!! ", - " !!!!!!! ", - " !!!! ", - " !! ", - " !! ", - " !!!! ", - " !!!!! ", - " !!!!! ", - " !!!!! ", - " !!!! ", - " !! ", - " ", - " !!!! ", - " !!!! ", - " !!! ", - " !!! ", - " !!! ", - " !!! ", - " !!!! ", - " !!! ", - " ", - " !! ", - " !!! ", - " !!! ", - " !!! ", - " !!! ", - " !!! ", - " !!!! ", - " !!!! ", - " ! ", - " !!! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!! ", - " ! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!! ", - " ", - " !!! ", - " !!! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!!!! ", - " !!!! ", - " !!! !! ", - " !!! ", - " !!!! ", - " !!!!!! ", - " !!!!!! ", - " !!!! ", - " !! !!!! ", - " !!!! ", - " !!!!!!! ", - " !!!!!!! ", - " !!!!!! !! ", - " !! !!!! ", - " !!!!!! ", - " !!!!!!!! ", - " !!!!!! !! ", - " !! !!!! ", - " !!!!!!!! ", - " !!!!!!!! ", - " !!!!! ", - " !! " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/collision-600-400-2.0-grid-reference.json b/tests/visual_tests/grids/collision-600-400-2.0-grid-reference.json deleted file mode 100644 index 60bcfb2b4..000000000 --- a/tests/visual_tests/grids/collision-600-400-2.0-grid-reference.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "keys": [ - "", - "1" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! ", - " ! !!!! ", - " !!!!! ", - " !!!!!! ", - " !!!!!!!! ", - " !!!!!!!!! ", - " !!!!!!!! ", - " !!!!!!!!! ", - " !!!!!!!!! ", - " !!!!!!!!!!! ", - " !!!!!!!!!! ", - " !!!!!!!!! ", - " !!!!!!!!! ", - " !!!! ! ", - " !!!! !! ", - " !!! !! !!!! ", - " !!!!! ", - " !!!!!! ", - " !!!!!!!! ", - " !!!!!!!! ", - " !!!!!!!!!! ", - " !!!!!!!! ", - " !!!!!!!!!! ", - " !!!!!!!!! ", - " !!!!!!!!!! ", - " !!!!!!!! ", - " !!!!!!!! ", - " !!! !!! ", - " !! ! ", - " ! ", - " ! ", - " ! ", - " ! ", - " !!!!!!! ", - " !!!!!!!! ", - " !!!!!!!! ", - " !!!!!!! ", - " !!!!!! ", - " !!!!!! ", - " !!!!!! ", - " !!!!!! ", - " !!!!!! ", - " !!!!!!! ", - " !!!!!!! ", - " !!!!!!!! ", - " !!!!!!!! ", - " !!!!!! ", - " !!!!!! ", - " !!! ! ", - " ! ", - " ! ", - " ! ", - " !!!!! ", - " !!!!!!! ", - " !!!!!!! ", - " !!!!!!! ", - " !!!!!!! ", - " !!!!!! ", - " !!!!!! ", - " !!!!!!! ", - " !!!!!! ", - " !!!!!!! ", - " !!!!!!! ", - " !!!!!!!! ", - " !!!!!!!! ", - " !!!!!!! ", - " !!! !! ", - " !!! ! ", - " ! ", - " ! !!! ", - " ! !!!! ", - " !!!!! ", - " !!!!!!!! ", - " !!!!!!!!! ", - " !!!!!!!!!!! ", - " !!!!!!!!!! ", - " !!!!!!!!!!!!! ", - " !!!!!!!!!!!! ", - " !!!!!!!!!! ", - " !!!!!!!! ", - " !!!!!! !! !!! ", - " !!! !! !!!! ", - " !!! !!!!!!!! ", - " !!!!!!!!! ", - " !!!!!!!!!!! ", - " !!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!! ", - " !!!!!!!!!!!! ", - " !!!!!! !!! ", - " !!!!! " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/colorize-alpha1-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/colorize-alpha1-512-512-1.0-grid-reference.json deleted file mode 100644 index 10e41a5bb..000000000 --- a/tests/visual_tests/grids/colorize-alpha1-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,283 +0,0 @@ -{ - "keys": [ - "", - "66", - "28", - "119", - "135", - "168", - "78", - "151", - "53", - "58", - "51", - "44", - "97", - "99", - "20", - "75", - "118", - "42", - "128", - "84", - "31", - "56", - "98", - "41", - "166", - "108", - "29", - "80", - "10", - "72", - "134", - "19", - "147", - "169", - "83", - "131", - "50", - "3", - "104", - "65", - "162", - "59", - "158", - "86", - "130", - "76", - "157", - "100", - "46", - "161", - "39", - "153", - "77", - "1", - "123", - "88", - "94", - "74", - "103", - "48", - "138", - "90", - "120", - "110", - "25", - "106", - "18", - "105", - "4", - "122", - "16", - "163", - "38", - "137", - "115", - "154", - "139", - "91", - "171", - "71", - "45", - "174", - "156", - "67", - "69", - "141", - "49", - "126", - "144", - "117", - "15", - "116", - "52", - "87", - "36", - "170", - "160", - "61", - "60", - "155", - "14", - "33", - "140", - "145", - "146", - "124", - "68", - "143", - "32", - "27", - "95", - "148", - "93", - "34", - "73", - "112", - "23", - "64", - "35", - "165", - "85", - "47", - "125", - "57", - "164", - "127", - "2", - "176", - "159", - "142", - "22", - "111", - "109", - "9", - "102", - "172", - "113", - "177", - "54", - "30", - "132", - "26", - "5", - "175", - "167", - "121", - "55", - "7" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!! ", - " ##########!!!!!!!!!!!!!!!!!!!! $$ %%% %%% ", - " # ###########!!!!!!!!!!!!!!!!!!!! $$ $ %% ", - " ##### ######## !!!!!!!!!!!!!!! %%% %%%%%%%%%% %%%%% ", - " ####### ### ###### !!!!!!!!!!!! % % %%%%%%%%%%%%%%%%%% %%%% ", - " &&&&&&&&# ###### ######### ####### !!!!!!!!!!! $$$$%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%", - "%%%% &&&&&&&&###################### ##### !!!!!!!! ' $((())%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - " %& &&&&&&&###################### ### !!!! ''' $$((()))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - " &&&&&&&&&################# ### !! $$$(( ))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% ", - " &&& &&############## ###### * $$(( +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% ", - " && &################# ####### ** ,,( -./%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% ", - " ############################ 0 ** 1223333//%%%%%%%%%%%444444%%%%%%%%%%%%%%%55%%%%%% % ", - " ######################## # * 667228839999999%%%444444444444%%%:%::%%%%%%555%%%% % ", - " &&&&&&&&&&&&&&#####&## ## 6666;<=>>???999%%%%44444444444445:::::::::::55555%% % ", - " &&&&&&&&&&&&&&&##&&&&# 666<< @AA?? 9 %%% 44BB444444455555::::::5555555%% C ", - " &&&&&&&&&&&&&&&&&&&& DEEEE <<<>???999%%%%44444444444445:::::::::::55555%% % ", - " &&&&&&&&&&&&&&&##&&&&# 666<< @AA?? 9 %%% 44BB444444455555::::::5555555%% C ", - " &&&&&&&&&&&&&&&&&&&& DEEEE <<<>???999%%%%44444444444445:::::::::::55555%% % ", - " &&&&&&&&&&&&&&&##&&&&# 666<< @AA?? 9 %%% 44BB444444455555::::::5555555%% C ", - " &&&&&&&&&&&&&&&&&&&& DEEEE <<<>???999%%%%44444444444445:::::::::::55555%% % ", - " &&&&&&&&&&&&&&&##&&&&# 666<< @AA?? 9 %%% 44BB444444455555::::::5555555%% C ", - " &&&&&&&&&&&&&&&&&&&& DEEEE <<< ?@ABCCDE444444 FG ", - " HH% I J==KKKLMMCCENNOP444 ", - " % H QR JSTUUVWWMMM NNNPX4 ", - " Y ZTT[[VWW]^ NN X_ ` ", - " aab cd[[eff]g h X i` ", - " jklll mnopq rrrrr ", - " sllllll oott rrr u v ", - " swlll xxyyz{ ||| ", - " w}ll ~\u007f\u0080 { |||||| \u0081 ", - " \u0082\u0083\u0083l \u0084\u0084\u0084 |||||| ", - " \u0082\u0083\u0085 \u0084 | ||| ", - " \u0082\u0083 \u0086 ", - " \u0082 ", - " ", - " \u0087 ", - " \u0087\u0087 \u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087 ", - " \u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087 \u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087 ", - " \u0087\u0087 \u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087 " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/colorize-alpha3-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/colorize-alpha3-512-512-1.0-grid-reference.json deleted file mode 100644 index 10e41a5bb..000000000 --- a/tests/visual_tests/grids/colorize-alpha3-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,283 +0,0 @@ -{ - "keys": [ - "", - "66", - "28", - "119", - "135", - "168", - "78", - "151", - "53", - "58", - "51", - "44", - "97", - "99", - "20", - "75", - "118", - "42", - "128", - "84", - "31", - "56", - "98", - "41", - "166", - "108", - "29", - "80", - "10", - "72", - "134", - "19", - "147", - "169", - "83", - "131", - "50", - "3", - "104", - "65", - "162", - "59", - "158", - "86", - "130", - "76", - "157", - "100", - "46", - "161", - "39", - "153", - "77", - "1", - "123", - "88", - "94", - "74", - "103", - "48", - "138", - "90", - "120", - "110", - "25", - "106", - "18", - "105", - "4", - "122", - "16", - "163", - "38", - "137", - "115", - "154", - "139", - "91", - "171", - "71", - "45", - "174", - "156", - "67", - "69", - "141", - "49", - "126", - "144", - "117", - "15", - "116", - "52", - "87", - "36", - "170", - "160", - "61", - "60", - "155", - "14", - "33", - "140", - "145", - "146", - "124", - "68", - "143", - "32", - "27", - "95", - "148", - "93", - "34", - "73", - "112", - "23", - "64", - "35", - "165", - "85", - "47", - "125", - "57", - "164", - "127", - "2", - "176", - "159", - "142", - "22", - "111", - "109", - "9", - "102", - "172", - "113", - "177", - "54", - "30", - "132", - "26", - "5", - "175", - "167", - "121", - "55", - "7" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!! ", - " ##########!!!!!!!!!!!!!!!!!!!! $$ %%% %%% ", - " # ###########!!!!!!!!!!!!!!!!!!!! $$ $ %% ", - " ##### ######## !!!!!!!!!!!!!!! %%% %%%%%%%%%% %%%%% ", - " ####### ### ###### !!!!!!!!!!!! % % %%%%%%%%%%%%%%%%%% %%%% ", - " &&&&&&&&# ###### ######### ####### !!!!!!!!!!! $$$$%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%", - "%%%% &&&&&&&&###################### ##### !!!!!!!! ' $((())%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - " %& &&&&&&&###################### ### !!!! ''' $$((()))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - " &&&&&&&&&################# ### !! $$$(( ))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% ", - " &&& &&############## ###### * $$(( +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% ", - " && &################# ####### ** ,,( -./%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% ", - " ############################ 0 ** 1223333//%%%%%%%%%%%444444%%%%%%%%%%%%%%%55%%%%%% % ", - " ######################## # * 667228839999999%%%444444444444%%%:%::%%%%%%555%%%% % ", - " &&&&&&&&&&&&&&#####&## ## 6666;<=>>???999%%%%44444444444445:::::::::::55555%% % ", - " &&&&&&&&&&&&&&&##&&&&# 666<< @AA?? 9 %%% 44BB444444455555::::::5555555%% C ", - " &&&&&&&&&&&&&&&&&&&& DEEEE <<<>???999%%%%44444444444445:::::::::::55555%% % ", - " &&&&&&&&&&&&&&&##&&&&# 666<< @AA?? 9 %%% 44BB444444455555::::::5555555%% C ", - " &&&&&&&&&&&&&&&&&&&& DEEEE <<<>???999%%%%44444444444445:::::::::::55555%%%% ", - " &&&&&&&&&&&&&&&!!&&&&!! @@6666<<>???999%%%%44444444444445:::::::::::55555%%%% ", - " &&&&&&&&&&&&&&&!!&&&&!! @@6666<??@@@,,,%%%%55555555555556:::::::::::66666%%%%%%%%%%% ", - " !&&&&&&&&&&&&&&&&&!!&&&&!&!!!!! A;;;;;777==BCDD@@,,,%%%E55FF555555566666::::::6666666%%%%G%%G%% ", - " &&&&&&&&&&&&&&&&&&&&&&&&&&!!!! ;;A;AAAAH====IJKEEEE,EL%FMFMFFFFNNN66666666:6666666OO%%%G%%GG ", - " &&&&&&&&&&&&&&&&&&&&&&&&!! ;;P;AAAHH=HH=EK,EEEEEEQQFMMMMFFRR666666666666666O6OO%%%%GGGG ", - " &&&&&&&&&&&&&&&&&&&&&&& ;;;P;SSSHHHHEEEETUEVWWQQQQQMXXXYY666666666666666OOZZ%GGGGG ", - " &&&&&&&&&&&&&&&&&&&&& P[[PPPSSSHHHH]]ETTEVWWWQQQQQXXXYY^^666666666666666OOGGZGGGG ", - " &&&&____&&&&&&&&&&&& P[[[PPSSSSS]]]]]````aaaWbQQQQXXYYY^^c66666666666666ddZZGGGG ", - " &&&& &&______&&&&&&&&&&e P[[PPfSSSSSS]]]]]````aaaaaaQQQQYYY^^^^ccg^hh6666666dddZGGG ", - " &&&&&& ____&____&&&&&&e&ijjjj [[[PffkSSSSS]]]]]````aaaaaalmaaYYY^^^^^^n^h66666666dodGG ", - " &&& &&& ________&&p_qqq&jirjj [s[[ffkkkSStttuu]vvvvvaaaaaammaYY^^^^^^^nhhhwxx66doood ", - " && &&& __________p&&&yryzryj ssffffkkkkttttuuuvvvvv{aaa{mm{aYYY^^^^^h||h|wxx6xddddd ", - " &&&&&& ________}~~p\u007fzzzzzzz\u0080 ssssfffkkktttuuuuvvvvv\u0081{{{{{{{m^^^^^^^^h||h|||xxxxdodoo ", - " &&&& _____p\u0082p\u0082\u0082pzzzzzzzzz sssskkk\u0083tt\u0084\u0084\u0084uuuvvvvv\u0085\u0085\u0081{{{{{{m ^^^^^\u0086\u0086hh||||\u0087xxxxoooooo ", - " ___p\u0082\u007fp\u0082pz\u0088zzzz\u0080zzz\u00897 s\u008a\u008a\u008b\u008bkk\u008c\u008d\u008e\u0084\u0084\u0084\u008fuuv\u0090v\u0090\u0090\u0085\u0085\u0091\u0091\u0091\u0092{{ ^^\u0086^^^\u0086\u0086h|||xxxxxxoooooo ", - " }pppp\u007f\u007f\u0088zzzzz\u0093zz\u0089\u0089 s\u008a\u008a\u008a\u008a\u008b\u0094\u008c\u008d\u0084\u0084\u0084\u0084\u008fu\u0095\u0095\u0090\u0090\u0090\u0090\u0085\u0085\u0085\u0085\u0092{\u0092\u0092 ^\u0086^^\u0086^\u0086\u0096|||xxxxxooooooo ", - " \u0082\u007f\u007f\u007fz\u0088\u0088\u0088zzz\u0093\u00897\u0089\u00897\u0097 \u008a\u008a\u008a\u008a\u0098\u0094\u008c\u008d\u008d\u0084\u0084\u008f\u008f\u0095\u0099\u0099\u0099\u0090\u0090\u0090\u0085\u0085\u0085\u0092\u0092\u0092\u0092\u0092 ^\u0086\u0086\u0086\u0086\u0086\u0086\u0096|\u0096x\u009axxxo\u009a\u009aooooo\u0096\u0096\u0096 ", - " \u007f\u009b\u009b\u0088\u0088\u0088\u0088zz\u0097\u0093\u00897\u0097\u00897\u0097\u0097\u0097 \u008a\u008a\u008a\u008a\u008d\u008d\u008d\u008d\u008d\u0084\u009c\u009d\u009d\u0099\u0099\u0099\u0099\u009e\u009e\u009f\u009f\u0092\u0092\u0092\u0092\u0092 ^\u0086\u0086\u0086\u0086\u0086\u0096\u0096|\u0096\u009a\u009ax\u009a\u009a\u0096ooooo\u0096\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ", - " \u009b\u009b\u00a1\u00a1\u009b\u0088\u0088\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u0098\u0098\u0098\u0098\u0098\u008d\u008d\u0084\u00a2\u00a2\u00a2\u009d\u0099\u0099\u0099\u0099\u009e\u009e\u009f\u009f\u0092\u00a3\u0092\u0092 \u0086\u0086 \u0096\u009a|\u0096\u0096\u009a\u0096\u0096\u0096\u009a\u0096oo\u0096\u0096\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a4\u00a4\u00a4\u00a4 ", - " \u009b\u009b\u009b\u009b\u009b\u009b\u009b\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00a2\u009c\u009c\u00a2\u009d\u0099\u0099\u0099\u0099\u0099\u00a3\u00a3\u00a3\u009f\u00a3\u00a3\u0092 \u0096\u0096\u009a\u0096\u0096\u009a\u009a\u0096\u0096\u009a\u0096\u00a5\u0096\u0096\u0096\u0096\u0096\u00a0\u00a0\u00a0\u00a0\u00a0\u00a4\u00a4\u00a4\u00a4\u00a4 ", - " \u009b\u009b\u009b\u009b\u009b\u009b\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00a2\u00a2\u00a2\u00a6\u0099\u0099\u0099\u0099\u0099\u00a3\u00a3\u00a3\u00a7\u00a3\u00a3\u00a8\u00a8\u00a8 \u0096\u0096\u0096\u0096\u0096\u009a\u009a\u0096\u00a5\u00a5\u00a5\u0096\u00a5\u00a5\u00a0\u0096\u00a0\u00a0\u00a0\u00a0\u00a4\u00a0\u00a4\u00a4\u00a4\u00a4 ", - "\u00a9 \u009b\u009b\u009b\u009b\u009b\u009b\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00a2\u00a2\u00a2\u00a6\u00a6\u00a6\u0099\u0099\u00a7\u00a7\u00a3\u00a3\u00a3\u00a3\u00a3\u00a8\u00a8\u00a8 \u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u00a5\u0096\u00a5\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a4\u00a4\u00a4\u00a4\u00aa\u00aa\u00aa \u00a9", - "\u00a9\u00a9\u00a9 \u009b\u009b\u009b\u009b\u009b\u009b\u00ab\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00a6\u00ac\u00ac\u00a6\u00a6\u00a6\u00a6\u00a7\u00a7\u00a7\u00ad\u00a3\u00ae\u00a3\u00a3\u00a8\u00a8\u00a8\u00a8 \u0096\u0096\u0096\u0096\u0096\u0096\u00a5\u00a5\u00a5\u0096\u0096\u00af\u00af\u00a0\u00a0\u00a0\u00a0\u00a0\u00a4\u00a4\u00a4\u00aa\u00aa\u00aa\u00a4\u00aa\u00a9 ", - " \u00a9\u00a9 \u009b\u009b\u009b\u009b\u009b\u009b\u00ab\u00ab\u00ab\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00ac\u00ac\u00ac\u00a6\u00a6\u00a6\u00a7\u00a7\u00a7\u00a7\u00ad\u00ae\u00ae\u00a3\u00a3\u00a8\u00a8\u00a8\u00a8 \u0096\u0096\u0096\u0096\u0096\u00a5\u00a5\u00af\u00af\u00af\u00af\u00a0\u00a0\u00af\u00a0\u00a0\u00a0\u00a4\u00a4\u00aa\u00aa\u00aa\u00b0\u00a9\u00aa ", - " \u00a9 \u009b\u009b\u009b\u009b\u009b\u00ab\u00ab\u00ab\u00ab\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00a7\u00b1\u00b1\u00b1\u00ae\u00ae\u00b1\u00a3\u00a8\u00a8\u00a8\u00a8\u00a8 \u00af\u00af\u00af\u00af\u0096\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00a0\u00a0\u00af\u00b0\u00aa\u00aa \u00aa\u00aa\u00aa\u00a9", - " \u00a9\u00a9 \u009b\u009b\u009b\u00b2\u00ab\u00ab\u00b3\u00b3\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00b4\u00b4\u00b1\u00b1\u00ae\u00b1\u00b1\u00ae\u00a8\u00a8\u00a8\u00a8 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00b0\u00b0\u00aa\u00aa\u00aa\u00aa\u00a9\u00a9", - "\u00a9\u00a9 \u009b\u009b\u00b2\u00b2\u00b5\u00b3\u00b3\u00b3\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00ac\u00b6\u00ac\u00ac\u00ac\u00b4\u00b4\u00b6\u00b6\u00ae\u00b1\u00ae\u00ae\u00a8\u00a8\u00a8\u00a8 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00b0\u00b0 \u00aa\u00aa\u00b0\u00a9\u00a9", - " \u00b2\u00b2\u00b2\u00b5\u00b5\u00b5\u00b5\u00b3\u0097\u0097\u00b3\u0097\u0097\u0097\u0097 \u00ac\u00b6\u00b6\u00ac\u00b6\u00b6\u00b6\u00b6\u00b6\u00b1\u00b1\u00b6\u00ae\u00a8\u00a8\u00a8\u00a8 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00b0 \u00b0\u00b0\u00b0 ", - " \u00b2\u00b2\u00b2\u00b2\u00b5\u00b5\u00b5\u00b5\u0097\u0097\u0097\u00b7\u0097\u0097\u0097 \u00ac\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b1\u00b6\u00b6\u00a8\u00a8\u00a8\u00a8 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00b0\u00b0\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b5\u00b5\u00b5\u00b5\u00b5\u00b7\u0097\u00b7\u00b7\u0097 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00a8\u00a8\u00a8 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b2\u00b5\u00b5\u00b5\u00b5\u00b7\u00b7\u00b7\u00b7\u0097 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b5\u00b5\u00b5\u00b5\u00b5\u00b7\u00b7\u00b7\u00b7 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b2\u00b5\u00b5\u00b5\u00b7\u00b7\u00b7\u00b7\u00b7 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00af\u00af\u00af\u00af\u00af\u00af \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b2\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b9\u00b9\u00b9\u00b9 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b2\u00b5\u00b5\u00ba\u00ba\u00ba\u00ba \u00b9\u00b9 \u00b9\u00b9 \u00af\u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b2\u00b5\u00b5\u00ba\u00b5\u00b5\u00ba\u00ba \u00b9 \u00b9 \u00af\u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b2\u00b5\u00ba\u00ba\u00b2\u00ba\u00ba\u00ba \u00b9\u00b9 \u00b9\u00b9 \u00b8\u00b8\u00b8\u00b8\u00b8 ", - " \u00b2\u00b2\u00b2\u00b2\u00b2\u00b5\u00ba\u00ba\u00b5\u00ba\u00ba \u00b9\u00b9\u00b9\u00b9\u00b9 ", - " \u00b2\u00b2\u00b2\u00b2\u00b2\u00ba\u00ba\u00ba\u00ba\u00ba \u00b9\u00b9 ", - " \u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00bb\u00bb\u00bb \u00bb\u00bb\u00bb\u00bb\u00bb \u00bb\u00bb\u00bb \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb ", - " \u00bb\u00b2\u00b2\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb \u00bb \u00bb\u00bb \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb ", - " \u00bb\u00bb\u00bb\u00bb \u00bb \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb ", - " \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - " \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb \u00bb\u00bb\u00bb \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - " \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - " \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb ", - "\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - "\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - "\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - "\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - "\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - "\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - "\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/image-filters-multi-blur-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/image-filters-multi-blur-512-512-2.0-grid-reference.json deleted file mode 100644 index c3c52beb7..000000000 --- a/tests/visual_tests/grids/image-filters-multi-blur-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,288 +0,0 @@ -{ - "keys": [ - "", - "66", - "28", - "119", - "135", - "168", - "151", - "78", - "53", - "166", - "58", - "51", - "131", - "44", - "97", - "99", - "20", - "75", - "118", - "42", - "128", - "84", - "31", - "56", - "98", - "41", - "108", - "100", - "29", - "80", - "10", - "72", - "134", - "161", - "19", - "147", - "173", - "169", - "83", - "137", - "50", - "3", - "104", - "65", - "162", - "59", - "158", - "86", - "130", - "150", - "76", - "157", - "163", - "46", - "154", - "39", - "153", - "77", - "1", - "123", - "88", - "94", - "74", - "103", - "129", - "141", - "48", - "138", - "90", - "120", - "110", - "174", - "25", - "106", - "18", - "170", - "105", - "4", - "122", - "16", - "38", - "143", - "115", - "139", - "91", - "171", - "126", - "71", - "45", - "156", - "67", - "69", - "160", - "148", - "49", - "144", - "117", - "15", - "116", - "52", - "146", - "87", - "124", - "36", - "23", - "61", - "60", - "155", - "14", - "33", - "140", - "145", - "127", - "125", - "68", - "32", - "27", - "95", - "93", - "34", - "73", - "112", - "159", - "142", - "64", - "35", - "165", - "85", - "47", - "57", - "164", - "172", - "54", - "176", - "2", - "177", - "102", - "113", - "22", - "111", - "109", - "9", - "114", - "132", - "30", - "175", - "26", - "5", - "167", - "121", - "8", - "55", - "7" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!! ", - " ###########!!!!!!!!!!!!!!!!!!!!!! $$ %%%% %%%% ", - " ##############!!!!!!!!!!!!!!!!!!!!!!!!!! $$$$$$$$$$$$%%%%%%%%% %%%%%%%%%% ", - " ################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$$$$$$$$$$$$%%%%%%%%%%%%%%% %%%%%%%%%%%%%% %%%%%%%% ", - " #################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", - "%%%% &&&&&&&&&&&##################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "%%&&&&&&&&&&&&&&&&######################!!!!!!!!!!!!!!!!!!!!!!!$$$$$'''$$''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "%&&&&&&&&&&&&&&&&&####################!!!!!!!!!!!!!!!!!!!!((((!$$$$''$$'$'''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&&&&&&&&&&&&&&&&&&#################!!!!!!!!!!!!!!!!!!!!!!((((($$$'''''''''''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&&&&&&&&&&&&&&&&&&###################!!!!!!!!!!!!!!!!!!!(((((($$'''''''''''''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&&&&&&&&&&&&&#&#########################!!!!!!!!!!!!!!!(((((($$'''''''$$$$%%'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "%%%%&&&&&&&&&&######################!!#####!!!!!!!!!!(((((((($$$'''''$'''))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&%&&&&&&&&&&&#######################!###!!!!!!!!!!(((((((((($$''''$$''')))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&&&&&&&&&&&&&#################&&&&#####&&!!!!!!!!!(((((((((($$'''$$$''*))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&&&&&&&&&&&&&&&&##############&&&&&######&&!!!!!!!(((((((((($+'''$$''***,%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&&&&&&&&&&&&&&&&&#################&#######&!!!!!!!!(((((((---++'''..'**/01%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&&&&&&&&&&&&&&&&############################!!!!!!!!(((((---2-++'344555511%%%%%%%%%%%666666%%%%%%%%%%%%%%%77%%%%%%%%%%%%%%%%%%%", - " &&&&&&&&&&&&&&&&&&########################&#!!!!!!!! ((-----+-88944::5*******%%%666666666666%%%;%;;%%%%%%777%%%%%%%%%%%%%%%%%%", - " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#####&##&&##!!!!! ---<<--8888=>?@@AAA***%%%%66666666666667;;;;;;;;;;;77777%%%%%%%%%%%%%%% ", - " &&&&&&&&&& #&&&&&&&&&&&&&&&&&&&&&##&&&&#&&&&##### ---<<3-B888>>*CDDAAE*E%%%F66FF666666677777;;;;;;7777777%%%%G%%%%%%%%%% ", - " &&&&&& #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#### --->>>JKLMMMMEMN%FOFOFFFFPPP77777777;7777777QQ%%%G%%%%%%%%% ", - " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&##### -HHHH-IIIRR>**>*LEMMMMMMSSFOOOOFFTT777777777777777U7UQ%%%%G%%%%%%%% ", - " &&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#### ??@@@,,,%%%%55555555555556:::::::::::66666%%%%%%%%%%% ", - " !&&&&&&&&&&&&&&&&&!!&&&&!&!!!!! A;;;;;777==BCDD@@,,,%%%E55FF555555566666::::::6666666%%%%G%%G%% ", - " &&&&&&&&&&&&&&&&&&&&&&&&&&!!!! ;;A;AAAAH====IJKEEEE,EL%FMFMFFFFNNN66666666:6666666OO%%%G%%GG ", - " &&&&&&&&&&&&&&&&&&&&&&&&!! ;;P;AAAHH=HH=EK,EEEEEEQQFMMMMFFRR666666666666666O6OO%%%%GGGG ", - " &&&&&&&&&&&&&&&&&&&&&&& ;;;P;SSSHHHHEEEETUEVWWQQQQQMXXXYY666666666666666OOZZ%GGGGG ", - " &&&&&&&&&&&&&&&&&&&&& P[[PPPSSSHHHH]]ETTEVWWWQQQQQXXXYY^^666666666666666OOGGZGGGG ", - " &&&&____&&&&&&&&&&&& P[[[PPSSSSS]]]]]````aaaWbQQQQXXYYY^^c66666666666666ddZZGGGG ", - " &&&& &&______&&&&&&&&&&e P[[PPfSSSSSS]]]]]````aaaaaaQQQQYYY^^^^ccg^hh6666666dddZGGG ", - " &&&&&& ____&____&&&&&&e&ijjjj [[[PffkSSSSS]]]]]````aaaaaalmaaYYY^^^^^^n^h66666666dodGG ", - " &&& &&& ________&&p_qqq&jirjj [s[[ffkkkSStttuu]vvvvvaaaaaammaYY^^^^^^^nhhhwxx66doood ", - " && &&& __________p&&&yryzryj ssffffkkkkttttuuuvvvvv{aaa{mm{aYYY^^^^^h||h|wxx6xddddd ", - " &&&&&& ________}~~p\u007fzzzzzzz\u0080 ssssfffkkktttuuuuvvvvv\u0081{{{{{{{m^^^^^^^^h||h|||xxxxdodoo ", - " &&&& _____p\u0082p\u0082\u0082pzzzzzzzzz sssskkk\u0083tt\u0084\u0084\u0084uuuvvvvv\u0085\u0085\u0081{{{{{{m ^^^^^\u0086\u0086hh||||\u0087xxxxoooooo ", - " ___p\u0082\u007fp\u0082pz\u0088zzzz\u0080zzz\u00897 s\u008a\u008a\u008b\u008bkk\u008c\u008d\u008e\u0084\u0084\u0084\u008fuuv\u0090v\u0090\u0090\u0085\u0085\u0091\u0091\u0091\u0092{{ ^^\u0086^^^\u0086\u0086h|||xxxxxxoooooo ", - " }pppp\u007f\u007f\u0088zzzzz\u0093zz\u0089\u0089 s\u008a\u008a\u008a\u008a\u008b\u0094\u008c\u008d\u0084\u0084\u0084\u0084\u008fu\u0095\u0095\u0090\u0090\u0090\u0090\u0085\u0085\u0085\u0085\u0092{\u0092\u0092 ^\u0086^^\u0086^\u0086\u0096|||xxxxxooooooo ", - " \u0082\u007f\u007f\u007fz\u0088\u0088\u0088zzz\u0093\u00897\u0089\u00897\u0097 \u008a\u008a\u008a\u008a\u0098\u0094\u008c\u008d\u008d\u0084\u0084\u008f\u008f\u0095\u0099\u0099\u0099\u0090\u0090\u0090\u0085\u0085\u0085\u0092\u0092\u0092\u0092\u0092 ^\u0086\u0086\u0086\u0086\u0086\u0086\u0096|\u0096x\u009axxxo\u009a\u009aooooo\u0096\u0096\u0096 ", - " \u007f\u009b\u009b\u0088\u0088\u0088\u0088zz\u0097\u0093\u00897\u0097\u00897\u0097\u0097\u0097 \u008a\u008a\u008a\u008a\u008d\u008d\u008d\u008d\u008d\u0084\u009c\u009d\u009d\u0099\u0099\u0099\u0099\u009e\u009e\u009f\u009f\u0092\u0092\u0092\u0092\u0092 ^\u0086\u0086\u0086\u0086\u0086\u0096\u0096|\u0096\u009a\u009ax\u009a\u009a\u0096ooooo\u0096\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ", - " \u009b\u009b\u00a1\u00a1\u009b\u0088\u0088\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u0098\u0098\u0098\u0098\u0098\u008d\u008d\u0084\u00a2\u00a2\u00a2\u009d\u0099\u0099\u0099\u0099\u009e\u009e\u009f\u009f\u0092\u00a3\u0092\u0092 \u0086\u0086 \u0096\u009a|\u0096\u0096\u009a\u0096\u0096\u0096\u009a\u0096oo\u0096\u0096\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a4\u00a4\u00a4\u00a4 ", - " \u009b\u009b\u009b\u009b\u009b\u009b\u009b\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00a2\u009c\u009c\u00a2\u009d\u0099\u0099\u0099\u0099\u0099\u00a3\u00a3\u00a3\u009f\u00a3\u00a3\u0092 \u0096\u0096\u009a\u0096\u0096\u009a\u009a\u0096\u0096\u009a\u0096\u00a5\u0096\u0096\u0096\u0096\u0096\u00a0\u00a0\u00a0\u00a0\u00a0\u00a4\u00a4\u00a4\u00a4\u00a4 ", - " \u009b\u009b\u009b\u009b\u009b\u009b\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00a2\u00a2\u00a2\u00a6\u0099\u0099\u0099\u0099\u0099\u00a3\u00a3\u00a3\u00a7\u00a3\u00a3\u00a8\u00a8\u00a8 \u0096\u0096\u0096\u0096\u0096\u009a\u009a\u0096\u00a5\u00a5\u00a5\u0096\u00a5\u00a5\u00a0\u0096\u00a0\u00a0\u00a0\u00a0\u00a4\u00a0\u00a4\u00a4\u00a4\u00a4 ", - "\u00a9 \u009b\u009b\u009b\u009b\u009b\u009b\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00a2\u00a2\u00a2\u00a6\u00a6\u00a6\u0099\u0099\u00a7\u00a7\u00a3\u00a3\u00a3\u00a3\u00a3\u00a8\u00a8\u00a8 \u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u00a5\u0096\u00a5\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a4\u00a4\u00a4\u00a4\u00aa\u00aa\u00aa \u00a9", - "\u00a9\u00a9\u00a9 \u009b\u009b\u009b\u009b\u009b\u009b\u00ab\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00a6\u00ac\u00ac\u00a6\u00a6\u00a6\u00a6\u00a7\u00a7\u00a7\u00ad\u00a3\u00ae\u00a3\u00a3\u00a8\u00a8\u00a8\u00a8 \u0096\u0096\u0096\u0096\u0096\u0096\u00a5\u00a5\u00a5\u0096\u0096\u00af\u00af\u00a0\u00a0\u00a0\u00a0\u00a0\u00a4\u00a4\u00a4\u00aa\u00aa\u00aa\u00a4\u00aa\u00a9 ", - " \u00a9\u00a9 \u009b\u009b\u009b\u009b\u009b\u009b\u00ab\u00ab\u00ab\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00ac\u00ac\u00ac\u00a6\u00a6\u00a6\u00a7\u00a7\u00a7\u00a7\u00ad\u00ae\u00ae\u00a3\u00a3\u00a8\u00a8\u00a8\u00a8 \u0096\u0096\u0096\u0096\u0096\u00a5\u00a5\u00af\u00af\u00af\u00af\u00a0\u00a0\u00af\u00a0\u00a0\u00a0\u00a4\u00a4\u00aa\u00aa\u00aa\u00b0\u00a9\u00aa ", - " \u00a9 \u009b\u009b\u009b\u009b\u009b\u00ab\u00ab\u00ab\u00ab\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00a7\u00b1\u00b1\u00b1\u00ae\u00ae\u00b1\u00a3\u00a8\u00a8\u00a8\u00a8\u00a8 \u00af\u00af\u00af\u00af\u0096\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00a0\u00a0\u00af\u00b0\u00aa\u00aa \u00aa\u00aa\u00aa\u00a9", - " \u00a9\u00a9 \u009b\u009b\u009b\u00b2\u00ab\u00ab\u00b3\u00b3\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00b4\u00b4\u00b1\u00b1\u00ae\u00b1\u00b1\u00ae\u00a8\u00a8\u00a8\u00a8 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00b0\u00b0\u00aa\u00aa\u00aa\u00aa\u00a9\u00a9", - "\u00a9\u00a9 \u009b\u009b\u00b2\u00b2\u00b5\u00b3\u00b3\u00b3\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u00ac\u00b6\u00ac\u00ac\u00ac\u00b4\u00b4\u00b6\u00b6\u00ae\u00b1\u00ae\u00ae\u00a8\u00a8\u00a8\u00a8 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00b0\u00b0 \u00aa\u00aa\u00b0\u00a9\u00a9", - " \u00b2\u00b2\u00b2\u00b5\u00b5\u00b5\u00b5\u00b3\u0097\u0097\u00b3\u0097\u0097\u0097\u0097 \u00ac\u00b6\u00b6\u00ac\u00b6\u00b6\u00b6\u00b6\u00b6\u00b1\u00b1\u00b6\u00ae\u00a8\u00a8\u00a8\u00a8 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00b0 \u00b0\u00b0\u00b0 ", - " \u00b2\u00b2\u00b2\u00b2\u00b5\u00b5\u00b5\u00b5\u0097\u0097\u0097\u00b7\u0097\u0097\u0097 \u00ac\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b1\u00b6\u00b6\u00a8\u00a8\u00a8\u00a8 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00b0\u00b0\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b5\u00b5\u00b5\u00b5\u00b5\u00b7\u0097\u00b7\u00b7\u0097 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00a8\u00a8\u00a8 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b2\u00b5\u00b5\u00b5\u00b5\u00b7\u00b7\u00b7\u00b7\u0097 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b5\u00b5\u00b5\u00b5\u00b5\u00b7\u00b7\u00b7\u00b7 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b2\u00b5\u00b5\u00b5\u00b7\u00b7\u00b7\u00b7\u00b7 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00af\u00af\u00af\u00af\u00af\u00af \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b2\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b9\u00b9\u00b9\u00b9 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b2\u00b5\u00b5\u00ba\u00ba\u00ba\u00ba \u00b9\u00b9 \u00b9\u00b9 \u00af\u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b2\u00b5\u00b5\u00ba\u00b5\u00b5\u00ba\u00ba \u00b9 \u00b9 \u00af\u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8", - " \u00b2\u00b2\u00b2\u00b2\u00b5\u00ba\u00ba\u00b2\u00ba\u00ba\u00ba \u00b9\u00b9 \u00b9\u00b9 \u00b8\u00b8\u00b8\u00b8\u00b8 ", - " \u00b2\u00b2\u00b2\u00b2\u00b2\u00b5\u00ba\u00ba\u00b5\u00ba\u00ba \u00b9\u00b9\u00b9\u00b9\u00b9 ", - " \u00b2\u00b2\u00b2\u00b2\u00b2\u00ba\u00ba\u00ba\u00ba\u00ba \u00b9\u00b9 ", - " \u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00bb\u00bb\u00bb \u00bb\u00bb\u00bb\u00bb\u00bb \u00bb\u00bb\u00bb \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb ", - " \u00bb\u00b2\u00b2\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb \u00bb \u00bb\u00bb \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb ", - " \u00bb\u00bb\u00bb\u00bb \u00bb \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb ", - " \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - " \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb \u00bb\u00bb\u00bb \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - " \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - " \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb ", - "\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - "\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - "\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - "\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - "\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - "\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - "\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/image-filters-multi-blur-inflate-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/image-filters-multi-blur-inflate-512-512-2.0-grid-reference.json deleted file mode 100644 index c3c52beb7..000000000 --- a/tests/visual_tests/grids/image-filters-multi-blur-inflate-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,288 +0,0 @@ -{ - "keys": [ - "", - "66", - "28", - "119", - "135", - "168", - "151", - "78", - "53", - "166", - "58", - "51", - "131", - "44", - "97", - "99", - "20", - "75", - "118", - "42", - "128", - "84", - "31", - "56", - "98", - "41", - "108", - "100", - "29", - "80", - "10", - "72", - "134", - "161", - "19", - "147", - "173", - "169", - "83", - "137", - "50", - "3", - "104", - "65", - "162", - "59", - "158", - "86", - "130", - "150", - "76", - "157", - "163", - "46", - "154", - "39", - "153", - "77", - "1", - "123", - "88", - "94", - "74", - "103", - "129", - "141", - "48", - "138", - "90", - "120", - "110", - "174", - "25", - "106", - "18", - "170", - "105", - "4", - "122", - "16", - "38", - "143", - "115", - "139", - "91", - "171", - "126", - "71", - "45", - "156", - "67", - "69", - "160", - "148", - "49", - "144", - "117", - "15", - "116", - "52", - "146", - "87", - "124", - "36", - "23", - "61", - "60", - "155", - "14", - "33", - "140", - "145", - "127", - "125", - "68", - "32", - "27", - "95", - "93", - "34", - "73", - "112", - "159", - "142", - "64", - "35", - "165", - "85", - "47", - "57", - "164", - "172", - "54", - "176", - "2", - "177", - "102", - "113", - "22", - "111", - "109", - "9", - "114", - "132", - "30", - "175", - "26", - "5", - "167", - "121", - "8", - "55", - "7" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!! ", - " ###########!!!!!!!!!!!!!!!!!!!!!! $$ %%%% %%%% ", - " ##############!!!!!!!!!!!!!!!!!!!!!!!!!! $$$$$$$$$$$$%%%%%%%%% %%%%%%%%%% ", - " ################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$$$$$$$$$$$$%%%%%%%%%%%%%%% %%%%%%%%%%%%%% %%%%%%%% ", - " #################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", - "%%%% &&&&&&&&&&&##################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "%%&&&&&&&&&&&&&&&&######################!!!!!!!!!!!!!!!!!!!!!!!$$$$$'''$$''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "%&&&&&&&&&&&&&&&&&####################!!!!!!!!!!!!!!!!!!!!((((!$$$$''$$'$'''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&&&&&&&&&&&&&&&&&&#################!!!!!!!!!!!!!!!!!!!!!!((((($$$'''''''''''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&&&&&&&&&&&&&&&&&&###################!!!!!!!!!!!!!!!!!!!(((((($$'''''''''''''%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&&&&&&&&&&&&&#&#########################!!!!!!!!!!!!!!!(((((($$'''''''$$$$%%'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "%%%%&&&&&&&&&&######################!!#####!!!!!!!!!!(((((((($$$'''''$'''))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&%&&&&&&&&&&&#######################!###!!!!!!!!!!(((((((((($$''''$$''')))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&&&&&&&&&&&&&#################&&&&#####&&!!!!!!!!!(((((((((($$'''$$$''*))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&&&&&&&&&&&&&&&&##############&&&&&######&&!!!!!!!(((((((((($+'''$$''***,%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&&&&&&&&&&&&&&&&&#################&#######&!!!!!!!!(((((((---++'''..'**/01%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", - "&&&&&&&&&&&&&&&&&############################!!!!!!!!(((((---2-++'344555511%%%%%%%%%%%666666%%%%%%%%%%%%%%%77%%%%%%%%%%%%%%%%%%%", - " &&&&&&&&&&&&&&&&&&########################&#!!!!!!!! ((-----+-88944::5*******%%%666666666666%%%;%;;%%%%%%777%%%%%%%%%%%%%%%%%%", - " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#####&##&&##!!!!! ---<<--8888=>?@@AAA***%%%%66666666666667;;;;;;;;;;;77777%%%%%%%%%%%%%%% ", - " &&&&&&&&&& #&&&&&&&&&&&&&&&&&&&&&##&&&&#&&&&##### ---<<3-B888>>*CDDAAE*E%%%F66FF666666677777;;;;;;7777777%%%%G%%%%%%%%%% ", - " &&&&&& #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#### --->>>JKLMMMMEMN%FOFOFFFFPPP77777777;7777777QQ%%%G%%%%%%%%% ", - " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&##### -HHHH-IIIRR>**>*LEMMMMMMSSFOOOOFFTT777777777777777U7UQ%%%%G%%%%%%%% ", - " &&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#### ??999999$$$55555555555555$::::::::::6666$$$$$$ $$$$ ", - " '''''''''''''''#####'###;;;# @@7@@<<$$$$$$$$$$$$ ", - " '''''''''''''''''#'''''''555 <<<<< <A$$$$$$$$$$$ ", - " '''''''''''''''''''''''### <<<<<<< < ?? @ ", - " !#A$ BB%%(( C77DEF GH /I9JK:L <> ? @@ ", - " # M$NN OO( PCQQR 8S TU/V9W:XL ?? @ ", - " !#M$NB BOZ[]^^_`8abcd/e99fgL ? tt u ", - " # MM6 vm ZwQxyz{|}~//e9ff\u007fgL <\u0080> \u0081tuuu ", - " \u0082 ! l\u0083\u0084 \u0085\u0085v ))\u0086\u0087 \u0088\u0089~/\u008a9fff\u007f\u008bL <\u0080>\u008c \u0081\u0081 \u008d\u008d\u008d ", - " \u0082\u0082 !# NA$\u008e \u0085v \u008fz \u0089\u0089\u0090\u0091\u0092\u0093ff\u0094\u007f\u0095 LLL\u0096\u0096\u0096\u0081\u0081\u008d\u008d\u0097\u0097\u0098\u0099\u0098 ", - " \u0082\u0082 !# N\u009am $$ \u0085\u0085\u008f\u009b\u009c \u009d\u0089\u009e\u009f\u00a0\u0093\u0093ffK\u007f\u00a1\u007f\u00a2 \u0097\u0098\u0099\u0098\u0099\u0099 \u00a3\u00a4 ", - " \u0082 !#\u009a\u00a5\u00a6\u00a7\u00a8 \u00a9\u00a9 \u008f\u008f\u00aa }\u0089\u009e\u009e\u009f\u009f\u0093\u0093f\u00ab\u0094\u00ac\u00ad\u00a2\u00ae\u00af\u00b0\u00b1\u0098\u0097\u0098\u0099 \u00a3\u00a4\u00a4\u00b2\u00b2 ", - " \u0082\u0082 ! \u00b3\u00a5\u00b4\u00b4\u00a8 A$\u008f\u00b5\u00aa \u0089\u0089\u00b6\u00b7\u009f\u009f\u00b8\u00b8\u00b9\u00ba\u0094K \u007f\u00bb\u00bc\u00bd\u00be\u00bf\u0099\u0099 \u00c0\u00a3\u00a4\u00a4\u00b2\u00b2 ", - " \u0082\u0082 !#\u00a7\u00a5\u00c1 \u00c2\u00a8\u008f\u00c3\u00c4\u00c4\u0089\u0089\u009e\u00c5\u00c6\u00c6\u00c7\u00b8\u00c8\u00b9#\u00c9\u0094\u00b1\u00bc\u00bb\u00bb\u00ca\u00cb\u00cb\u0099\u00a3\u00c0\u00a3\u00a4\u00b2\u00b2 ", - " \u0082 \u00cc#\u00cd\u00ce \u00cf\u00c2\u008f\u00d0\u00c4\u00c4\u0089\u0089\u009e\u00c5\u00d1\u00d2\u00d3\u00c7\u00d4\u00d4\u00d5#\u00d6\u00d7\u00d8\u00be \u00cb\u00cb\u00cb\u00c0\u00d9\u00a3\u00a4 \u00b2\u00b2 ", - " \u0082\u0082 \u00cc#\u00cd\u00da\u00db\u00dc \u00c4\u00c4\u00dd\u0089\u009e\u00de\u00df\u00e0\u00d2\u00d2\u00c7\u00e1\u00e2\u00e3\u00d6\u00d6\u00d7\u00d8\u00cb\u00cb \u00e4\u00e4\u00a3\u00a4\u00e5\u00b2\u00b2 ", - " \u0082\u0082\u00e6 \u00cc!\u00cd\u00e7\u00e8 \u00e9\u00ea\u00eb\u0089\u0089\u00ec\u00de\u00de\u00df\u00ed\u00ee\u00ef\u00e2\u00e2\u00e3\u00d6\u00d6 \u00f0\u00f1\u00c0\u00a3\u00a4\u00f2\u00f3\u00f3\u00e5\u00f4 ", - " \u0082\u00e6\u00e6k#\u00f5\u00f6\u00f7\u00e9\u00f8\u0089\u0089\u00ec\u00ed\u00de\u00de\u00ee\u00ee##\u00f9\u00e2\u00e2\u00fa\u00fb \u00fc\u00fd\u00fd \u00f2\u00e5 \u00f4 ", - " \u0082\u0082\u00e6\u00f5\u00f5\u00fe\u00f6\u00f6\u00f6\u0089\u00ec\u00ed\u00ed\u00ed\u00ff##\u0100\u00be\u00be\u0101\u0102\u0103\u0104\u0105\u0105\u0106\u00fd\u0107 \u00f2\u0108\u0108\u0108\u0108\u0109\u0109 ", - " \u0082\u0082\u00e6k\u00fe!#\u010a\u010a\u00ed\u010b\u010c##\u010d\u00be\u00be \u010e\u010f\u0110\u0110\u0103\u0111\u0112\u0113\u0114\u00f0\u0115\u00f2\u0116 \u00f4 ", - " \u0117 \u0118\u0119\u011a\u011b\u011c\u010a\u010a###\u011d\u00be\u00be\u010e\u010e\u00cc\u011e\u011f\u0120\u0121\u0121\u0122\u0123\u0123\u0124\u0125\u0126\u00f2\u0116\u0116\u00f4\u00f4 \u0127\u0127\u0127 ", - " \u0117\u0117\u0118 \u0082\u0082\u0128\u010a\u010a\u0129\u012a\u012a\u011d\u011d\u011e\u011e\u011b\u011e\u012b\u012c\u012d\u0121\u012e\u012f\u0130\u0131\u0131\u0131\u0123\u0123\u00f0\u00f2\u0116\u0116 \u0127\u0127\u0132\u0132\u0132\u0132\u0132 ", - " \u0117\u0118\u0118\u0133\u0133\u0134\u0135\u0135\u012a\u0136\u011e\u011e\u011e\u011d \u0137\u0138\u011f\u012d\u0139\u013a\u012f\u012f\u0101\u013b\u013b\u013b\u013b\u0131\u00f0\u0107\u00f2\u013c\u013d\u013d\u0132\u0132\u0132\u0132 ", - " \u0117\u0118\u0118\u0133\u0133\u0134\u0135\u0135\u0135\u012a\u013e\u013f \u0140\u0140\u0141\u012d\u0139\u013a\u013a\u0142\u0101\u0101\u0143\u0144 \u0145\u013b\u0131\u0146\u0147\u0147\u013d\u013d\u0148\u0148 ", - " \u0117\u0117\u0118\u0149\u0149 \u0135\u0135\u0135\u014a\u014b\u014c\u014c\u014d\u014e \u0140\u012b\u011f\u012d\u0139\u013a\u014f\u0150 \u0151\u0101\u0101\u0144 \u0145 \u0152\u0147\u0147\u0107 \u0153\u0148\u0148\u0148\u0148\u0148 ", - " \u0117\u0117\u0118 \u0149\u0128\u0135\u0135\u014a\u0154\u014c\u014c \u014e\u014d\u012b\u011f\u012d\u012d\u013a\u013a\u0155\u0156\u0156\u0156\u0156\u0101\u0101\u0144\u0144\u0145\u0157\u0152\u0158 \u0159\u0107 \u0153 \u0148\u0148\u0148 " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/road-casings-grouped-rendering-600-600-1.0-grid-reference.json b/tests/visual_tests/grids/road-casings-grouped-rendering-600-600-1.0-grid-reference.json deleted file mode 100644 index f7317104e..000000000 --- a/tests/visual_tests/grids/road-casings-grouped-rendering-600-600-1.0-grid-reference.json +++ /dev/null @@ -1,888 +0,0 @@ -{ - "keys": [ - "", - "330", - "155", - "74", - "57", - "749", - "788", - "201", - "202", - "181", - "691", - "774", - "228", - "46", - "523", - "73", - "530", - "384", - "286", - "385", - "1", - "156", - "644", - "361", - "531", - "43", - "449", - "93", - "328", - "527", - "605", - "589", - "288", - "215", - "635", - "532", - "588", - "154", - "138", - "287", - "637", - "638", - "529", - "576", - "362", - "348", - "45", - "639", - "497", - "300", - "329", - "237", - "600", - "137", - "534", - "636", - "595", - "103", - "14", - "180", - "232", - "593", - "104", - "353", - "526", - "592", - "594", - "136", - "352", - "327", - "323", - "203", - "490", - "415", - "442", - "342", - "258", - "528", - "596", - "599", - "157", - "343", - "331", - "257", - "598", - "412", - "313", - "335", - "277", - "89", - "597", - "344", - "431", - "276", - "126", - "113", - "108", - "107", - "591", - "590", - "407", - "414", - "147", - "99", - "369", - "413", - "337", - "97", - "124", - "122", - "110", - "174", - "406", - "75", - "82", - "83", - "72", - "278", - "173", - "472", - "481", - "336", - "159", - "153", - "100", - "102", - "96", - "200", - "266", - "265", - "263", - "269", - "231", - "446", - "66", - "409", - "410", - "315", - "179", - "182", - "419", - "392", - "391", - "390", - "525", - "417", - "411", - "183", - "479", - "473", - "146", - "475", - "474", - "401", - "421", - "445", - "356", - "483", - "480", - "551", - "583", - "325", - "324", - "476", - "582", - "364", - "389", - "393", - "839", - "724", - "440", - "227", - "620", - "462", - "477", - "268", - "267", - "225", - "464", - "16", - "271", - "535", - "463", - "299", - "693", - "261", - "270", - "247", - "548", - "467", - "465", - "422", - "241", - "466", - "238", - "239", - "246", - "489", - "634", - "671", - "333", - "326", - "488", - "482", - "633", - "448", - "243", - "248", - "461", - "460", - "332", - "378", - "577", - "484", - "471", - "381", - "25", - "188", - "470", - "565", - "469", - "334", - "379", - "355", - "284", - "279", - "175", - "667", - "562", - "380", - "665", - "550", - "373", - "354", - "632", - "485", - "570", - "363", - "575", - "673", - "585", - "131", - "404", - "285", - "587", - "78", - "145", - "85", - "41", - "739", - "478", - "87", - "121", - "40", - "358", - "226", - "260", - "283", - "687", - "690", - "486", - "133", - "672", - "95", - "322", - "321", - "195", - "264", - "194", - "177", - "396", - "359", - "402", - "55", - "686", - "619", - "15", - "382", - "397", - "319", - "735", - "212", - "236", - "282", - "280", - "618", - "615", - "614", - "403", - "376", - "59", - "204", - "786", - "640", - "641", - "375", - "374", - "400", - "320", - "58", - "773", - "199", - "692", - "584", - "377", - "395", - "405", - "398", - "56", - "579", - "670", - "31", - "357", - "505", - "493", - "784", - "741", - "743", - "50", - "92", - "38", - "213", - "847", - "492", - "841", - "254", - "747", - "827", - "568", - "39", - "53", - "439", - "224", - "607", - "5", - "61", - "158", - "840", - "438", - "214", - "835", - "753", - "223", - "626", - "22", - "13", - "838", - "302", - "54", - "52", - "708", - "769", - "697", - "165", - "118", - "62", - "494", - "491", - "301", - "9", - "222", - "622", - "423", - "296", - "317", - "318", - "252", - "631", - "495", - "304", - "710", - "36", - "123", - "308", - "760", - "762", - "630", - "621", - "674", - "2", - "3", - "253", - "255", - "846", - "77", - "316", - "771", - "628", - "453", - "291", - "383", - "830", - "722", - "564", - "295", - "292", - "365", - "845", - "617", - "624", - "666", - "662", - "581", - "42", - "294", - "726", - "694", - "627", - "654", - "661", - "456", - "48", - "47", - "716", - "732", - "836", - "623", - "507", - "629", - "606", - "651", - "571", - "580", - "574", - "572", - "293", - "837", - "613", - "457", - "65", - "459", - "23", - "764", - "144", - "125", - "758", - "834", - "831", - "719", - "780", - "844", - "184", - "616", - "679", - "681", - "458", - "833", - "825", - "166", - "139", - "682", - "17", - "511", - "509", - "29", - "832", - "770", - "772", - "766", - "768", - "689", - "842", - "220", - "610", - "675", - "518", - "63", - "26", - "27", - "713", - "219", - "221", - "506", - "677", - "120", - "498", - "680", - "35", - "30", - "714", - "730", - "738", - "678", - "676", - "573", - "37", - "443", - "740", - "717", - "502", - "642", - "130", - "444", - "703", - "826", - "501", - "503", - "142", - "117", - "18", - "28", - "742", - "731", - "745", - "767", - "90", - "569", - "70", - "20", - "715", - "808", - "170", - "727", - "515", - "514", - "521", - "755", - "191", - "185", - "684", - "557", - "516", - "513", - "522", - "311", - "234", - "556", - "519", - "517", - "701", - "310", - "545", - "450", - "699", - "696", - "733", - "350", - "211", - "520", - "303", - "725", - "729", - "702", - "822", - "210", - "64", - "820", - "349", - "524", - "140", - "744", - "746", - "815", - "813", - "189", - "192", - "190", - "555", - "135", - "24", - "705", - "698", - "712", - "707", - "193", - "553", - "538", - "546", - "643", - "33", - "34", - "510", - "345", - "721", - "818", - "539", - "750", - "795", - "817", - "351", - "559", - "603", - "601", - "604", - "794", - "793", - "783", - "683", - "206", - "544", - "76", - "734", - "819", - "781", - "789", - "32", - "706", - "805", - "785", - "787", - "297", - "12", - "711", - "235", - "105", - "44", - "542", - "759", - "765", - "807", - "791", - "852", - "290", - "347", - "289", - "536", - "51", - "757", - "728", - "811", - "810", - "425", - "160", - "430", - "169", - "778", - "704", - "504", - "541", - "779", - "709", - "134", - "98", - "4", - "346", - "809", - "339", - "305", - "685", - "148", - "752", - "341", - "167", - "162", - "163", - "149", - "754", - "748", - "340", - "10", - "168", - "67", - "828", - "540", - "824", - "782", - "688", - "109", - "554", - "763", - "756", - "428", - "112", - "68", - "496", - "127", - "229", - "128", - "161", - "761", - "829", - "132", - "249", - "176", - "561", - "306", - "537", - "111", - "171", - "307", - "432", - "309", - "19", - "164", - "250", - "178", - "695", - "129", - "116", - "804", - "775", - "197", - "360", - "21", - "802", - "800", - "806", - "803", - "801", - "799", - "797", - "798", - "217", - "216", - "718", - "69", - "150", - "7", - "790", - "338", - "843", - "720", - "152", - "151", - "86", - "8", - "207", - "796", - "233", - "88", - "218", - "560", - "209", - "6", - "777", - "452", - "208", - "172", - "776", - "558", - "451" - ], - "data": {}, - "grid": [ - " ! ##$ %%&'' ( )) *** ", - " ! ##$ %%+', ( ))) ** - ", - " !! #.$ %%&+' ( ))) ** - ", - " / 0 ! #.$ %%&', ( ))) ** - ", - " / 1 0 ! #.$ 2 %%&+', ( ))3 *** - ", - " / 1 00 !! #.$ 4 2 %%&', ( )) 33 ** -- ", - " / 1 000 ! #.$ 4 222 %%&+',55 ( )) 3 ** -- ", - " / 1 66700 ! 8888 ##.$4 22 %%&',555 ( )) 3 ** -- ", - " / 1 99667000 ! 888 #..$4 222 :%%+',55; ( )) 33*** -- ", - " / 1 99 667700 ! 8 ##.$$4 22 :%%&', 55 ( )) 33** -- ", - " / 1 99 66770<0 ! 8 ##.$=422 :%%+',55; ( )) **3 -- ", - " />>> ? 1 9@@ 667<<000 !! 8 #..$=422 :%%&',,55; ( )) A**3 ------- BBBB ", - " / C>>>> ? D 9 @E EE66F 0000 ! 8 ##.GG=42 ::%%+',555 ( ) H 3--- BB BB ", - " / CI J>>KKK DDDD 9 E EEE ELFFF 000 ! MMMMMMNN #OGG= ::%%&+ ,55; ( ) * 3- B ", - " //PPPPPJ Q DDDDD99 E EE L FFF 000 ! R R N## GGS: :::%&+',555 ( )) **TT BB ", - " / PC IJPPQ DD EE EE UUU FFF 0000 ! R R #VVGS.::::%%&' ,55; () TT - BBBBBBBBB ", - "W/ PXXIJP Q EE E YYUUU FFF 000 ! R R ZZ VSS[:::%%&+', 55 ) TT] - BB ^ ", - "//PPP JP Q E E __YYY UU FFF 000 ! R R ZZ``Saa[[ %%&' ,555 ))TT] - BB ^ ", - "bb C PPPPQ E E c __ YY U dFF ee0 ! R RR Z``fg [[[%%&',,55 hh T ] - B ^^ ", - "/bbbb J Q EE LLLcc ___YY dd FFF e000 ! RRR ZZ``fg [[%&+',555 hhiT ] - B ^^ ", - " bbbbQ j kkk ccc__ d FFFe 000 !!l ZZ`mmmmm [%%&+ ,555 hh iT ] - B nnn ", - " o jj kkkccc d p qFFF 00r lll Z``stttmm[%%+', 55 hh iT ]]- B uun ", - " o jj kkkk d vvppq FFFF rr00llllll wZ` sx tm%%&+',55;y hh iT ]z-- B ^ u {{{{{{{{{{", - " oo jjjjj kkd ||vvvqpp FFFr 0000llll ZZ` s}}}m[%%&'~,55 yyh iT \u007f\u007f\u007f zzzzzz--- B {{{{{{\u0080{{{{{{{{{{{{{\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081", - " o j kk|||qvv pp rrFF 00000l Z`` ssssm[%%&',555 hh iT\u007f\u007f \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0083\u0083{{{{{{{{{{\u0081\u0081\u0081\u0081\u0081\u0080\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081 ", - " o j kkk q| vv\u0084\u0085\u0086\u0087 FFF\u0088\u0088\u008800000Z`\u0089\u008a\u008bx \u008cm%%&+',5\u008d\u008e\u008eh\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u0090\u0090\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0091\u0081\u0081 ", - " o j kq |||\u0084\u0084\u0092\u0087\u0086\u0086 \u0093\u0088\u0088\u0088\u0088\u0088\u0088\u0094\u0095`\u0089\u0089\u0089\u0089\u0089\u0089\u0089\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008e\u008e\u0082\u0082\u0082\u0082\u0082\u0096\u0096\u0096\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u0097 -- \u0098 \u0091 ", - " o jj \u0099\u009a\u0099 kkk| \u009b\u0087\u0092\u0092 \u0086\u0086 \u0093\u0093\u009c\u009c\u0088\u0088\u009d\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u0096\u0096\u00a0\u0096\u0096\u0096\u0096 \u00a1\u00a2\u00a3\u00a4\u00a4\u00a5 \u00a6\u00a6\u00a6\u00a6--- \u0098\u0098 \u0091 ", - " o jj \u0099\u0099\u009a \u0099\u0099\u0099 k \u0087\u009b \u0092 k\u00a7\u009c\u009c\u00a8\u009d\u00a9\u00a9\u00aax\u00ab %%%&',55 \u00ac \u00a1\u00a2 \u00ad\u00ad\u00a5\u00a6-- \u0098 \u0091 ", - " o j \u0099 \u009a \u0099 kkkkkkkkkk\u00aekkk \u009c\u009c\u009d\u009d\u00af\u00b0 x\u00b1 %%&&',55 \u00ac \u00a1\u00a2 \u00ad - \u0098\u0098 \u0091 ", - "\u00b2\u00b2\u00b2 o j \u0099 \u009a \u00b3 \u00b4\u00a7\u009c\u009d\u009d\u00af\u00b0x \u00ab\u00b1 %%&+',55 \u00ac \u00a1\u00a2\u00b5\u00ad - \u0098 \u0091 ", - " \u00b2\u00b2\u00b2o j \u0099\u0099 \u009a\u009a \u00b6\u00b7 \u00b3 \u00b4\u00a7\u00b8\u009d \u00af\u00b0x\u00ab \u00b1%%%&+',55 \u00ac \u00a1\u00a2\u00b5\u00ad - \u0098 \u0091 ", - " \u00b2\u00b2\u00b2 jj \u0099\u0099 \u009a \u00b9\u00ba \u00b6\u00b7\u00b7\u00b7 \u00bb\u00bb\u00bb\u00bb\u00bc \u00bd\u00b8\u00b8\u009d\u00af \u00b0x\u00ab\u00b1 %%%&+',5\u00be \u00ac \u00a1 \u00a2\u00b5\u00ad - \u0098 \u0091 ", - "\u00bf \u00b2\u00b2\u00b2 jj \u0099 \u009a \u00b9 \u00ba\u00ba\u00ba \u00c0 \u00b7\u00b7 \u00bb\u00bb\u00bb \u00bc \u00bd\u00b8\u009d\u009d\u00af\u00b0 x\u00ab\u00b1 %% &+'55\u00be \u00ac \u00a1\u00a1\u00a2\u00b5\u00b5\u00ad - \u0098 \u0091 ", - " \u00bf\u00bf \u00b2\u00b2 j \u0099\u00c1 \u009a\u009a\u009a\u00b9 \u00c2\u00c2\u00c0\u00b6 \u00b7 \u00c3 \u00c4 \u00bd\u00bd\u00b8\u009d \u00af\u00b0x\u00ab\u00ab\u00b1 %% &+'55\u00be \u00ac \u00a1\u00a2\u00a2\u00b5\u00b5\u00ad- \u0098 \u0091 ", - " \u00bf\u00bf j \u0099\u0099\u00c1 \u009a\u00c5\u00c5 \u00c6 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b7 \u00c3 \u00c4 \u00bd\u00c7\u00b8\u009d \u00c8\u00c8\u00b0\u00c9\u00b1\u00b1 %% \u00ca\u00cb,55 \u00cc \u00ac \u00a1 \u00a2 \u00b5\u00cd\u00cd- \u0098 \u0091 ", - " \u00bf\u00ce\u00ce\u00ce jj j \u0099\u0099\u00c1\u00c1\u00cf\u00cf\u00cf\u00cf\u00cf\u00b9\u00cf \u00d0\u00c5 \u00c6 \u00b7 \u00c3 \u00c4\u00c4 \u00bd\u00b8\u00b8\u009d \u00b0\u00c9\u00b1 %%%&\u00ca',55 \u00cc \u00ac \u00a1\u00a1\u00d1\u00d1\u00d2\u00d3 -- \u0098 \u0091 ", - " \u00bf\u00bf\u00ce\u00cej jj \u0099\u00cf\u00cf\u00c1 \u00d4\u00cf\u00cf\u00d0 \u00c5\u00c6 \u00b7 \u00c3 \u00c4 \u00bd\u00b8\u009d\u009d x\u00c9\u00ab \u00d5%%&\u00ca',55 \u00cc \u00ac\u00ac \u00a1\u00d6\u00d1 \u00d3\u00d3 - \u0098 \u0091 ", - " \u00bf\u00bf \u00ce\u00ce \u0099\u00cf\u00cf \u00c1\u00c1\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d8 \u00cf\u00cf\u00c6 \u00b7 \u00c3 \u00c4 \u00d9\u00bd\u00b8\u009d x\u00c9\u00ab %%%&\u00da',55\u00cc\u00be \u00ac \u00a1\u00a1\u00db\u00dc \u00d3 - \u00dd\u00dd\u0098\u0098 \u0091 ", - " \u00bf\u00bf \u00ce\u00ce \u0099\u00de\u00cf \u00d7\u00d7 \u00df \u00d7\u00d7\u00d7 \u00e0\u00cf\u00cf \u00b7 \u00c3 \u00e1\u00c4 \u00bd\u00b8\u00b8\u009d x\u00c9\u00ab \u00d5%% &\u00da',55 \u00be \u00ac \u00a1 \u00dc\u00dc \u00d3 - \u00e2\u00dd \u0098 \u0091 ", - " \u00bf \u00ce\u00ce \u0099\u0099\u00cf\u00de\u00de\u00de \u00e3\u00e3\u00df\u00e3 \u00d7\u00e0 \u00cf \u00b7 \u00c3 \u00c4 \u00bd\u00b8\u00b8\u009d x\u00c9\u00ab \u00d5%% &\u00ca',55 \u00be \u00ac \u00a1\u00a1 \u00db\u00db \u00d3 -- \u00e4\u00e5\u00e6 \u0098\u0098 \u0091 ", - " \u00bf \u00e7 \u0099 \u00cf\u00e8\u00e8\u00e8 \u00e3 \u00e3\u00e3 \u00e9\u00d7\u00d7 \u00cf \u00b7 \u00ea\u00ea \u00eb \u00bd\u00b8\u009d\u009d x\u00c9\u00ab \u00d5%% &\u00da',55 \u00be \u00ac \u00a1 \u00db\u00db\u00db -- \u00e4\u00e4\u00e5\u00e6 \u0098 \u0091 ", - " \u00bf\u00bf \u00e7\u00ec \u00ed\u0099 \u00cf\u00ee\u00ee\u00d7 \u00e3\u00e3 \u00e9\u00e3 \u00d7\u00d7 \u00cf\u00cf \u00b7 \u00ef\u00ef\u00ea\u00ea\u00ea \u00eb \u00bd\u00b8\u009d\u009d x\u00c9\u00ab \u00d5%% &\u00ca',55 \u00be \u00ac \u00a1 \u00db\u00db\u00db\u00db- \u00e4\u00f0\u00f1\u00f1\u00f1\u0098 \u0091 ", - " \u00bf \u00ec\u00ec\u00ed\u00ed \u0099\u00cf\u00f2\u00ee\u00d7 \u00e3 \u00e3 \u00d7\u00f3\u00f3\u00cf \u00b7 \u00f4\u00f4\u00ef\u00ef\u00ef\u00ea\u00ea \u00eb \u00f5\u00bd\u00b8\u009d x\u00c9\u00ab \u00d5%% &\u00da' 55 \u00be \u00ac \u00a1\u00a1 \u00d3\u00d3 - \u0098 \u0091 ", - " \u00bf \u00f6\u00ed\u00f7\u00f7\u00f7\u00f7\u0099\u00cf \u00d7 \u00f8\u00e3 \u00e3 \u00d7\u00f3 \u00cf \u00b7 \u00f4\u00f4\u00ef\u00ef\u00ea \u00eb \u00f9\u00f5\u00f5\u00f5\u00f5\u00f5 x\u00c9\u00ab \u00d5\u00d5%% &\u00ca' \u00fa\u00fa \u00be \u00ac\u00ac \u00a1\u00a1 \u00d3 - \u0098 \u00fb ", - " \u00f6\u00f6\u00f6 \u00f7\u0099\u00cf \u00d7\u00f8 \u00e3\u00e3 \u00e3 \u00d7 \u00cf\u00b7\u00b7 \u00f4\u00ef\u00ea\u00eb\u00eb \u00f9\u00bd\u00b8\u009d\u00f5\u00f5 x\u00c9\u00ab \u00d5\u00d5%% &\u00cb'\u00fa\u00fa\u00fa \u00be \u00ac \u00a1\u00a1 \u00d3 - \u0098 \u00fb ", - " \u00f6 \u00ed\u00ed\u00f7\u00f7\u0099 \u00cf \u00d7 \u00e3\u00fc\u00e3\u00e3 \u00e3\u00e3 \u00d7 \u00cf\u00b7 \u00f4\u00f4 \u00bd\u00b8\u009d\u00f5 x\u00c9\u00ab\u00ab \u00d5%% &\u00cb'\u00fa\u00fa\u00fa \u00be\u00be \u00ac \u00a1 \u00d3 - \u0098 \u00fb ", - " \u00f6\u00f6 \u00ed\u00f7\u0099 \u00cf\u00cf \u00fd\u00d7\u00d7\u00fc\u00fc \u00fe \u00d7 \u00b7\u00b7 \u00ff \u00b8\u00b8\u009d\u0100 x\u00c9\u00ab \u00d5%% &\u00cb,\u00fa\u00fa\u0101\u0101 \u00be \u00ac \u00a1 \u0102\u0102\u0103 - \u0098 \u00fb \u0104\u0104\u0104", - " \u00f6\u00f6 \u00ed\u00ed \u00cf\u00cf\u0105 \u00d7\u00d7\u00d7 \u00fe \u00d7\u00d7 \u00cf\u00b7 \u0106 \u00ff \u00b8\u00b8\u009d\u0107xxx\u00c9\u00ab \u00d5%% &\u00cb'\u00fa\u00fa \u0101 \u00be \u00ac \u00a1\u0102\u0102\u0102\u0103\u00d3 -- \u0098 \u00fb \u0104\u0104\u0104\u0104 ", - " \u00f6 \u0099\u0099 \u00cf \u00d7\u0108\u00d7\u00d7\u00d7 \u0109 \u00cf\u00b7\u00b7 \u0106\u010a \u00ff \u00bd\u00b8\u009d\u009d \u00c9\u00ab \u00d5%% &\u00cb\u00fa\u00fa\u00fa\u010b\u010b \u00be \u00ac \u00a1\u00a1 \u0102\u00d3 - \u0098 \u00fb\u00fb \u0104\u0104\u0104\u0104 ", - " \u00f6 \u0099\u0099 \u0108\u010c\u010c \u0109 \u00cf\u010d \u010e\u010a\u010a\u010a\u010a\u010f \u0110 \u0111\u0111\u00b8\u009d\u009d \u00c9\u00c9\u00ab \u00d5\u00d5%% &\u00cb\u00fa\u00fa\u010b \u010b \u00be\u00be \u00ac \u00a1 \u0102\u00d3 - \u0098\u00fb\u00fb \u0104\u0104\u0104\u0104 ", - " \u00f6\u0112 \u0099\u0099 \u010c \u00cf\u0109\u010d \u010e \u010a\u010a\u0110 \u0111\u0113\u0113\u0113\u00b8\u00b8\u009d \u0114\u00ab \u00d5%%% &\u00fa\u00fa\u00fa\u010b \u010b \u00be \u00ac \u00a1 \u0102\u00d3 - \u0115\u00fb\u0104\u0104\u0104\u0104 ", - " \u00f6\u0116\u0116\u0112\u0112 \u0099 \u010c\u00b7\u00b7\u010d\u010d \u010a\u010a \u010a\u010a \u0110 \u0111\u0113\u0113\u0113\u0117\u0118\u0119\u009d\u011a\u011a \u0114 \u00ab\u00ab\u00d5%% &\u00fa\u00fa \u010b \u010b \u00be \u00ac \u00a1 \u0102\u00d3 -- \u0115\u0115\u0104 ", - "\u011b \u00f6 \u0116\u0116\u0112\u0112 \u0099\u0099 \u011c\u00b7\u00b7\u00b7\u00b7 \u010d\u010d \u010a\u010a\u010a \u0110 \u0111\u0113\u0113\u0117\u0117\u0117\u0118\u011d\u011e\u011a\u011a\u011f\u011f\u0114 \u00d5\u00d5%% \u00fa\u00fa\u00fa,\u010b \u010b\u010b \u00be\u0120\u0120\u0120 \u00ac \u00a1 \u0102\u0102\u0121\u00d3\u00d3--\u0122\u0122\u0123 \u0115\u0115 ", - "\u0124\u0125\u0125 \u00f6 \u0116\u0112\u0112 \u0099\u0099 \u011c\u0126\u0126 \u010d \u010a\u010a \u0110\u0111\u0127\u0113\u0117\u0128\u0128\u0128\u0129\u011e\u011e\u012a\u012b\u011f\u011f\u011f\u00d5\u00d5\u00d5\u00d5%% \u00fa\u00fa\u00fa', \u010b \u010b\u010b\u00be\u00be \u00ac\u00ac \u00a1 \u0102\u0121 \u012c\u012d\u012e\u0123 \u0115\u0115 \u012f\u012f", - " \u0124\u0125\u0125 \u00f6 \u0116\u0116\u0112\u0112 \u0099\u011c\u0126 \u0126 \u010d \u0110 \u0127\u0127\u0128 \u0129\u0129\u011e\u011e\u0130\u012b\u012b\u011f\u011f\u00d5\u00d5\u00d5%% \u00fa\u00fa\u00fa', \u010b \u010b \u0131 \u00ac\u00ac\u00ac \u00a1 \u0121 \u012c \u012e\u012e \u0115\u0115 \u012f\u012f\u012f\u012f ", - " \u0124\u0125 \u00f6\u00f6 \u0116\u0116\u0112\u0112 \u011c\u0126\u0126\u0126\u0126\u010d\u010d \u0110\u0111\u0127\u0128 \u0129\u0129\u011e\u011e \u0132\u012b\u012b %% \u00fa\u00fa\u0133\u00da', \u010b \u0131 \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac \u00a1 \u0121 \u012d \u0123 \u0115\u0115 \u012f\u012f\u012f\u012f\u012f \u0134", - " \u0135 \u0124\u0125\u0125 \u0116\u0112\u0112 \u0099\u0126\u0126\u010d\u010d \u0110\u0111\u0127\u0127\u0136\u0136\u0137\u0137 \u0129\u0129\u011e\u011e \u0138 \u0132\u012b %%% \u00fa\u00fa\u00fa\u0139\u013a\u00cb, \u010b \u013b\u010b \u00ac\u00ac\u00ac\u00ac\u013c\u013c\u013c \u013d \u013e \u0115\u0115 \u012f\u012f\u012f\u012f\u012f \u0134\u0134\u0134\u0134 ", - " \u013f \u0135 \u0124\u0125\u0125 \u0116\u0116\u0112 \u0140\u0141\u0126 \u0110\u0111\u0127\u0127\u0136\u0136\u0136\u0136\u0137\u0137\u0129 \u011e \u0142\u0143\u0132\u0132\u012b\u0144%% \u00fa\u00fa\u00fa\u0133\u0139\u00da', \u010b \u013b \u010b \u013c\u013c\u013c\u013c\u013c\u013c\u013c\u013c\u013c\u013c\u0145\u0145\u0115\u0115 \u012f\u012f\u012f\u012f \u0134\u0134\u0134\u0134 \u0146\u0146\u0146\u0146", - "\u00bf \u013f \u00f6 \u0147\u0124\u0125\u0148 \u0116\u0116\u0112\u0112 \u0140\u0141\u0141 \u0110\u0110\u0127\u0127\u0128\u0149\u0149\u014a\u0136\u0136\u0137\u0129 \u011e\u0143\u0143\u0143\u014b\u0132\u014c\u014d\u014d% \u00fa\u00fa\u0133\u0139 \u013a\u014e' \u010b\u010b \u013b\u013b \u010b\u010b \u014f\u014f \u012f\u012f\u012f\u012f \u0134\u0134\u0134\u0146\u0146\u0146\u0146\u0150\u0150\u0150 ", - "\u00bf \u00f6\u00f6 \u0147\u0124\u0125\u0148 \u0116\u0112\u0112 \u0140\u0140\u0141 \u0151\u0151 \u0110\u0111\u0127\u0128\u0149\u0149\u014a\u014a\u0136\u0136 \u0129\u0152\u0143\u0143\u011e\u011e\u0153\u0154\u0155\u014d\u0156\u0156%\u00fa\u00fa\u0133 \u0139 &\u014e', \u010b \u013b\u013b \u010b\u010b \u012f\u012f\u012f \u0134\u0134\u0134\u0134\u0146\u0146\u0150\u0146\u0150\u0150 ", - " \u00f6\u00f6 \u0124\u0125\u0125 \u0116\u0116\u0112 \u0140\u0141 \u0151\u0157 \u0158\u0111\u0127\u0128\u014a\u0149\u014a\u014a\u0136\u0159\u0159\u0159\u0129\u0152 \u011e\u011e\u0154\u014d\u014d\u0156\u0156\u00fa\u00fa\u00fa\u0133 \u0139 \u00da\u014e', \u010b \u015a\u013b \u010b\u010b \u0134\u0134\u0134\u0134\u0146\u0146\u0146\u0146\u0150\u0150 ", - "\u015b \u00f6 \u0147\u0124\u0125 \u0116\u0116\u0112\u0112 \u0140\u0141\u0141 \u0157\u015c \u0110\u0111\u0127\u0127\u0128 \u014a\u0159\u0159\u0159\u0159\u0159\u0159\u0129 \u014d\u014d\u014d\u0156\u0156\u0156\u00fa\u00fa\u0133 \u0139 &\u014e\u00cb, \u010b\u015a\u015a\u013b\u013b \u013b\u013b\u013b \u0134\u0134\u0134\u0146\u0146\u0146\u0146\u0150\u0150\u0150 \u015d", - "\u015b\u00f6 \u0147\u015e\u015f\u0148 \u0116\u0116\u0112\u0112 \u0140\u0141\u0141 \u015c\u015c \u015c \u0110\u0111\u0127\u0127\u0128\u0160\u0160\u0160\u0159\u0159\u0159\u0159 \u0161\u0161\u0162\u0162\u0162\u014d\u014d\u014d\u014d\u014d\u0156\u0156\u00fa\u00fa\u0133\u014c\u014c & ',, \u010b\u015a \u013b\u013b \u013b\u013b\u0163\u013b\u013b \u0134\u0134\u0134\u0146\u0146\u0146\u0146\u0150\u0150\u0150 \u015d\u0164\u0164", - " \u015b \u0124\u0125\u0125 \u0116\u0116\u0140\u0140\u0141 \u015c\u015c \u015c\u0165 \u0110\u0111\u0127\u0128\u0160\u0160\u0160\u0160\u0162\u0162\u0162\u0162\u0162\u0161\u0161\u0162\u0162\u0162\u014d\u014d\u014d \u0156\u0156\u0156\u00fa\u00fa\u0133 \u014c \u0166 \u014e', \u010b\u010b \u013b\u013b \u013b\u0163\u0163\u0163\u013b\u013b\u013b \u0167\u0167\u0167\u0134\u0134\u0134\u0134\u0146\u0146\u0146\u0146 \u0150\u0150\u0150 \u015d\u0164\u0164\u0168\u0169", - "\u016a \u015b\u015b \u0124\u015f\u0125 \u0116\u0140\u0141 \u015c \u0165\u0165 \u0110\u0111\u0127\u0128\u0160\u0160\u0160\u016b\u016b\u016b\u016b\u016b\u016b\u016b\u0161\u0161\u016b\u0162\u0162 \u016c\u0156\u00fa\u00fa\u0133\u0154\u0155\u014c\u014c \u0166\u00da\u014e',\u016d \u010b\u010b \u013b\u013b \u013b \u0163\u0163\u0167\u0167\u0167\u0167\u0167\u0167\u0167\u0167\u0167\u0134\u0134\u0134\u0146\u0146\u0146\u0146\u016e\u016e \u0150\u0150 \u015d\u0164\u0164\u0168\u0169\u0169 ", - "\u016f\u016a \u015b\u015b \u0147\u015f\u0125\u0148 \u0140\u0141 \u015c \u0110\u0111\u0127\u0127\u0160\u0160\u016b\u016b\u016b\u016b\u016b\u0170\u0170\u0170\u016b\u016b\u0161\u016b\u016b\u016b \u016c\u0171\u0171\u0133\u0172\u0172\u0154\u0155\u014c \u0173\u00da\u014e' ,\u016d \u0174\u0174\u010b\u010b \u013b\u013b\u0175 \u0167 \u0176\u0177\u0134\u0177\u0146\u0146\u0146 \u0178\u016e \u0150\u0150 \u015d\u0164\u0164\u0168\u0169\u0169 ", - "\u016f\u016a\u016a \u0179\u015b \u0147\u0124\u0125\u0125 \u0140\u0141\u0141 \u015c \u0110\u0111\u0127\u0127\u0160\u0160\u016b\u016b\u016b\u0170\u0170\u0170\u0170\u0170\u0170\u0170\u0170\u0161\u016b\u016b\u016b\u016b\u016b \u016c\u016c\u0171\u0171\u017a\u017b\u0172\u0172\u0155\u014c \u0166\u00da \u014e',\u016d\u016d\u0174\u0174 \u0174\u0174\u0174\u010b \u0175\u0175\u0175 \u0167 \u0176\u0176\u0176\u0177\u017c\u0146\u0146 \u0178\u0178\u0178\u016e \u0150 \u015d\u015d\u0164\u0164\u0168\u0169\u0169 ", - "\u016f \u016a\u016a\u0179 \u015b \u0124\u0124\u0125 \u0140\u0140\u0141 \u015c\u015c \u0110\u0110\u0111\u0127\u0160\u0160\u016b\u016b\u0170\u0170 \u017d\u017d \u0161\u0161\u0170\u016b\u016b\u016b\u016b\u017e\u017e\u017f\u017a\u017a\u017b\u017b\u0172\u0154\u014c \u0166\u00da \u014e',,\u016d\u0174 \u010b\u010b \u0167\u0167\u0167\u0176\u0176\u0176\u0180\u0177\u0181\u017c \u0178\u0178\u0178 \u016e \u0150 \u015d\u015d\u0164\u0182\u0168\u0169\u0169 \u0183\u0183", - "\u016f\u016a\u016a\u0179\u0179 \u015b\u015b \u0147\u0125\u0125\u0148 \u0140\u0140\u0141 \u015c\u015c \u0110\u0111\u0127\u0160\u0160\u0160\u016b\u0170\u0170 \u017d \u017d\u017d\u017d\u017d \u0184\u0184\u0170\u0185\u0185\u016b\u016b\u017e\u017e\u017f\u017a\u017a\u017b\u017b\u0172\u0172\u0155\u014c \u0173\u00da \u014e', \u016d \u010b\u010b \u0167\u0167\u0167\u0176\u0176\u0176\u0180\u017c\u017c\u0181 \u0178\u0178\u0178 \u016e\u016e \u0150 \u015d\u0164\u0164\u0168\u0168\u0169\u0169 \u0183\u0183\u0183 ", - " \u016a\u0179\u0179 \u015b\u015b \u0147\u0124\u0125\u0148\u0140\u0141 \u0186\u0187 \u0110\u0111\u0127\u0127\u0160\u0160\u016b\u0170\u0170 \u017d\u017d\u0188 \u017d\u017d\u0189\u0184\u0189\u0185\u0185 \u017e\u017e\u017f\u017f\u017a\u017a \u017b\u017b\u0172\u0155\u014c \u0173\u00da \u014e',, \u016d \u010b\u010b\u0167\u0176\u0176\u0176\u0180\u0180\u017c\u017c\u0181 \u0178\u0178 \u018a\u018a\u016e \u0150 \u015d\u0164\u0164\u0168\u0168\u0169\u0169 \u0183\u0183 ", - "\u016a \u0179\u018b \u015b\u015b \u0124\u0148\u0148\u0141 \u0186 \u0187 \u0111\u0127\u0127\u0160\u0160\u016b\u0170\u0170 \u017d\u017d \u0188\u0188\u0188\u0188\u0188 \u018c\u0184\u0189\u0185\u0185\u0185\u017e\u017e\u017f\u017f\u017a\u017a \u017b\u017b\u0172\u0155\u014c\u018d\u018e\u018e\u018e\u018f\u014e\u00cb', \u016d \u0190\u0190\u0176\u0180\u0177\u017c\u017c\u0181 \u0178\u0178\u0178 \u018a\u018a\u018a\u016e\u016e\u0150 \u015d\u0164\u0164\u0168\u0169\u0169\u0169 \u0183\u0183 ", - " \u0191 \u015b\u015b \u0140\u0147\u0141 \u0192 \u0187 \u0111\u0111\u0127\u0160\u0160\u016b\u016b\u0170 \u017d\u017d \u0193\u0193 \u0188\u0188\u0188\u017d\u0184\u0184\u0189\u0185\u0185\u017e\u017e\u017f\u016b\u017a\u017a\u017a\u017b\u017b\u0172\u018d \u0173\u0194 \u018f\u018f\u014e',, \u016d \u0176\u0176 \u0190\u0190\u0190\u017c\u0181 \u0178\u0178\u0178 \u018a\u018a \u016e\u0150\u0150 \u015d\u0164\u0164\u0168\u0169\u0169\u0169 \u0183\u0183 ", - "\u0179 \u015b\u015b \u0140\u0140\u0141 \u0192\u0192\u0187\u0187 \u0111\u0127\u0160\u0160\u0160\u016b\u0170\u0195\u0195\u0195\u0193\u0193 \u0193\u0193\u0193 \u0188\u017d \u0184\u0189\u0185\u0185\u017e\u017e\u017f\u016b\u016b\u017a\u017a\u017b\u017b\u0196\u0197 \u0173\u0194 \u018f\u014e\u00cb', \u016d\u016d \u0176\u0176 \u0198\u0177\u0199\u017c\u0190\u0190 \u016e\u016e\u016e\u016e\u018a\u018a\u018a \u016e \u0150 \u015d\u0164\u0164\u0168\u0169\u0169 \u0183\u0183 ", - "\u019a \u019b\u019b\u015b \u0140\u0141 \u019c\u019c\u019c\u019c\u019c \u0111\u0127\u0127\u0160\u0160\u016b\u0170\u0195\u0195\u0195 \u0193\u0193\u0193\u0193 \u0184\u0189\u0189\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u017b\u017b\u0196\u0197 \u0173\u00da \u018f \u014e',, \u016d \u0176\u0176 \u0180\u0177\u017c\u017c\u0181\u0181 \u019f\u019f \u016e\u016e\u016e\u016e\u01a0\u01a0\u016e\u016e\u0150 \u015d\u0164\u0164\u01a1\u0168\u0169\u0169 \u0183\u0183 ", - " \u019b \u015b \u0140\u0141\u0141 \u019c\u019c\u01a2\u01a2\u01a2\u01a2 \u0111\u0127\u0127\u0160\u0160\u016b\u016b\u0195\u0195\u0195 \u0193 \u0184\u0184\u0189\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u017b\u017b\u0196\u0197 \u0173 \u0194 \u01a3\u014e\u00cb',\u01a4\u0176\u0176 \u0180\u0177\u017c\u017c\u0181\u0181 \u01a0\u01a0 \u0150\u0150 \u015d\u0164\u0164\u01a1\u0168\u0169\u0169 \u0183\u0183 ", - " \u01a5 \u019b \u015b\u015b\u0140\u0141\u0141 \u01a2\u01a2\u01a2\u01a2\u01a2\u01a2\u01a2\u01a2 \u0111\u0127\u0127\u0160\u0160\u016b\u016b\u0195\u0195\u0195 \u01a6\u01a6\u01a7\u01a7\u01a7\u01a7 \u01a8\u01a8\u0184\u0189\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u017b\u0196\u0196 \u0173 \u0194 \u01a9\u01aa\u01a4\u01a4 \u0180\u0177\u017c\u017c \u0181\u0181 \u01a0\u01a0 \u0150 \u015d\u0164\u0164\u01a1\u0169\u0169\u0169 \u0183\u0183 ", - " \u01a5\u01a5\u01ab\u01ab\u01ab \u015b\u0140\u0141 \u01a2\u01a2\u01a2 \u01a2\u01a2 \u0111\u0127\u0160\u0160\u0160\u016b\u0195\u0195\u0195 \u01a7\u01ac\u01a7 \u01a7\u01a7\u01a7 \u01ad\u01ad\u01ae\u01ae\u0184\u0184\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u017b\u0196\u0197 \u0173 \u0194\u00da \u01a9\u01a9\u01aa\u01a4\u01a4\u017c\u017c \u0181\u0181 \u01a0\u01a0 \u0150 \u015d\u0164\u0164\u01af\u01af\u0169\u0169 \u0183\u0183\u0183 ", - "\u01b0\u01b1 \u019b\u019b\u01ab \u01ab\u01ab\u01ab \u015b\u015b\u01b2\u01b3 \u019c\u01a2\u01a2\u01b4\u01b4\u01b4\u01b4 \u01a2\u01a2\u0127\u0127\u0160\u0160\u01b5\u0195\u0195 \u01b6\u01a7 \u01ac\u01ac \u01a7\u01ad\u01ad \u01ae\u0184\u0184\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u017b\u0196 \u0173\u0173 \u0194\u00da \u0176\u0176\u01a9\u01b7\u01aa\u01a4\u01a4 \u0181\u0181 \u01a0\u01a0\u01a0\u01a0\u01a0 \u01b8\u0150\u015d\u015d\u0164\u01af\u0168\u0169\u0169 \u0183\u0183 ", - "\u01b1\u01b0\u01b0 \u01b9\u01b9 \u01ab \u01ba\u01bb\u01b2\u019c\u01a2\u01a2\u01b4\u01b4 \u01b4 \u01bc\u0111\u0127\u0127\u01bd\u0160\u01be\u01b5\u01b5 \u01a7\u01b6\u01b6\u01b6 \u01ac\u01ac \u01a7 \u01ae\u0184\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u0196\u0196 \u0173 \u01bf\u01c0\u01c1\u0176 \u0180\u0180\u01a9\u01a9\u01aa\u01a4\u01a4\u0181 \u01a0\u01a0\u01a0\u01a0 \u01a0\u01a0\u01a0 \u01b8\u0164\u0164\u01af\u01af\u0169 \u0183\u0183 ", - "\u016a\u016a\u01c2\u01b0 \u01c3 \u01c4\u01ab \u01c5\u01c6\u01c7\u01a2\u01a2 \u01b4 \u01c8 \u01c9\u01ca\u0111\u0127\u0127\u0128\u01bd\u01bd\u01be\u01b5 \u01cb\u01cb \u01b6\u01b6 \u01ac\u01ac\u01ac\u01a7 \u01ae\u0184\u0184\u019d\u019d\u019e\u019e\u016b\u017a\u017b\u0196\u0197 \u0173\u0173 \u01bf\u01c0\u01c0\u01cc\u0180\u017c\u017c\u01a9\u01b7\u01aa\u01a4\u01a4 \u01a0\u01a0 \u01a0\u01a0\u0164\u0164\u0164\u0168\u01af\u0169 \u0183\u0183 ", - " \u016a\u016a \u01cd\u01c3 \u019b\u01c4\u01c4 \u01c5\u01ce\u01a2\u01cf\u01b4 \u01c8 \u01c8\u01c9 \u0111\u0127\u0128\u01bd\u01bd\u01be\u01b5\u01b5 \u01d0\u01a7 \u01cb\u01cb \u01b6\u01b6 \u01ac\u01ac \u01ae \u0184\u0185\u019d\u019e\u01d1\u01d1\u01d1 \u0196 \u0173\u0173 \u01c1\u01c1\u01bf\u01c0\u01c0\u01d2\u017c \u0181\u0181\u01a9\u01b7\u01aa\u01a4 \u01a0\u01a0 \u01a0\u015d\u015d\u0164\u0164\u0182\u0169\u0169 \u0183\u0183 ", - " \u016a \u01cd\u01cd\u019b\u019b\u01ab\u01ab \u01c5\u01ce \u01cf\u01cf\u01cf\u01c8 \u0111\u0127\u0128\u01bd\u01bd\u01be\u01b5\u01b5\u01d3\u01d3\u01a7\u01a7\u01d0\u01d0 \u01cb\u01cb \u01b6\u01b6 \u01a7 \u01ae \u0184\u0184\u019d\u01d1\u01d1\u01d1\u01d1\u0196\u01d4\u0173\u0173\u01c1\u01c1\u01d5\u01d6\u01bf\u01c0\u01c0 \u0181\u0181\u0181 \u01d7\u01d8\u01d9\u01d9\u01a0\u01a0\u01a0\u01a0\u01a0 \u01a0\u015d\u01da\u0164\u0164\u0168\u0169\u0169 \u01db\u01db \u0183\u0183 ", - " \u016a \u01c3\u01dc\u019b \u01ab \u01c5\u01ce\u01dd\u01de\u01dd\u01cf\u01cf\u01cf \u0111\u0127\u0127\u01bd\u01bd\u01bd\u01b5\u01b5 \u01d3\u01df\u01df \u01d0\u01d0 \u01cb\u01cb \u01b6\u01b6\u01a7 \u01ae \u0184\u01d1\u01d1\u01d1\u01d1\u016b\u01d4\u01d4\u0173\u01c1\u01d5\u01e0\u01d6\u01d6\u01bf\u01c0\u01c0\u0181\u0181 \u01d7\u01d8\u01d9\u01a0 \u01a0\u01da\u0164\u0164\u0164\u01e1\u0169\u0169\u01b8 \u01db\u01db \u01e2 ", - "\u01e3 \u016a \u01c3 \u01dc\u01ab \u01c5\u01ce\u01dd\u01de\u01e4\u01dd\u01dd\u01cf\u01cf \u0111\u0127\u0127\u0128\u01bd\u01bd\u01be\u01e5 \u01e6 \u01e7\u01d3\u01df\u01df \u01d0\u01d0 \u01cb\u01cb\u01a7\u01a7 \u01ae \u01d1\u01d1\u01d1\u01d1\u01e8\u01e8\u01d4\u01d4\u01e9\u01e0\u01ea\u01eb\u01ec\u01ed\u01bf\u01bf\u01c0 \u01d7\u01ee\u01d8\u01d9\u01a0 \u01a0\u015d\u0164\u0164\u0168\u01e1\u01e1\u0169 \u01ef \u01f0\u01f0 \u01db\u01db\u01db \u01e2 ", - "\u01e3\u01e3\u016a \u01c3 \u01ab\u01ab\u01ab \u01f1\u01f1\u01dd\u01de \u01e4\u01f2\u01dd\u01dd\u01cf\u01cf\u0127\u0127\u0128\u01bd\u01bd\u01be\u01e5\u01e5\u01f3\u01e6\u01e6\u01e7\u01d3\u01d3 \u01df\u01df \u01d0\u01d0\u01a7\u01a7\u01cb\u01a7 \u01ae\u01f4\u01f4\u01d1\u01d1\u01f5\u01f6\u01f6\u01e8\u01d4\u01d4\u01ea\u01eb\u01f7\u01ed\u0181\u0181\u01bf\u01c0\u01c0 \u01ee\u01d8\u01d9\u01d9 \u01a0\u015d\u0164\u0164\u0168\u0169\u0169\u0169 \u01ef \u01f8\u01f0\u01f0\u01f0 \u01f9\u01db\u01db \u01e2 ", - " \u01e3\u01e3 \u01c3\u01fa \u01ab \u01c5\u01f1\u01dd\u01de\u01e4\u01e4\u01f2\u01fb \u01dd\u01cf\u0127\u0128\u01bd\u01bd\u01be\u01e5\u01e5 \u01f3\u01e7\u01e6 \u01e5\u01d3 \u01a7\u01a7\u01df\u01a7\u01a7\u01a7 \u01f4\u01f4\u01f4\u01f4\u01f4\u01fc\u01f5\u01f5\u01f6\u01f6\u01d4\u01d4\u01ed\u01ec\u0181\u0181\u0181 \u01bf \u01d7\u01d7\u01d8\u01d9\u01a0 \u01a0\u01a0\u015d\u0164\u0164\u0168\u0169\u0169 \u01ef \u01f8\u01f8\u01f9\u01f9\u01f0 \u01e2 ", - " \u01e3\u01e3 \u01fd\u01fa\u01fa \u01ab \u01c5\u01c5\u01ce \u01fe\u01e4\u01f2\u01f2\u01fb\u01dd \u0127\u0128\u01bd\u01bd\u01bd\u0170\u01e5\u01e5\u01e5 \u01f3\u01e5\u01e5\u01e5\u01d3\u01e5 \u01ff\u01ff\u01f4\u01f4\u01f4\u01f4 \u0173\u01fc\u01fc\u01f5\u01f6\u01f6\u0200\u01d4\u01ec\u0181\u0181 \u0201\u0202 \u01d7\u01ee\u01d8\u0203\u0203\u0203\u0164\u0164\u0168\u0169\u0169 \u01ef \u01f8\u01f8 \u01e2 ", - "\u0173 \u01e3\u01e3\u01e3 \u01fa\u01ab \u01c5\u01ce \u01fe \u0204\u0205\u0206\u01dd\u01dd\u0127\u0127\u01bd\u01bd\u01bd\u0170\u0170 \u01e5\u01e5\u01e5\u01e5\u01e5\u01e5\u01e5\u01d3\u01d3 \u01ff\u01ff\u01ff\u01ff\u01ff\u0207\u0207\u0207\u0207\u01f4 \u0173\u0173\u01c1\u01e9\u01fc\u01f5\u01f6\u01f6\u01f6\u01d4\u0181 \u0208\u0208 \u0201\u0202 \u0203\u0203\u0209\u0209\u020a\u0168\u0169\u0169 \u01ef \u01db\u01db \u01e2 ", - "\u0173\u0173 \u020b\u01e3\u01e3\u01e3 \u01fa\u01fa\u01fa \u01c5\u01ce\u01fe\u01fe\u0204 \u0205\u020c\u01dd\u0127\u0127\u0128\u01bd\u01bd\u01be\u0170 \u01e5\u01e5\u01e5\u01e5\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u0207\u0207\u0207\u0207\u0207\u0207\u0207 \u0173\u0173\u01c1\u01e9\u01d6\u01d6\u01fc\u01fc\u01f5\u01f6\u01f6\u01d4\u020d \u0208\u0208\u020e \u0201\u0202 \u020f\u0203\u0209\u020a\u0210\u0210\u0210 \u01ef\u01db \u01db\u01db \u01e2 ", - "\u01c1\u0173\u0173 \u0211\u0212\u01e3\u01e3\u0213\u0213 \u01fa\u01fa\u01fa \u01c5\u01ce\u01fe\u01fe\u0204 \u0205 \u020c\u0127\u0127\u0128\u01bd\u01bd\u01bd\u0170 \u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u0214\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u0207\u0207\u0207\u0207\u0207\u0207\u0207 \u0173\u0173\u01c1\u01e9\u01d6\u0177\u0177\u01f7 \u01fc\u01f5\u01f5\u0215\u0216\u020d\u0208\u0208 \u020e \u0201\u0202 \u020f\u020f\u0217\u0218\u0219\u0210\u0210\u0210\u01d9 \u01ef \u01db\u01db \u01e2 ", - "\u021a\u021a\u01c1\u0173\u0211 \u0212\u0212\u021b\u0213\u0213\u0213\u0213 \u01fa\u01fa\u01fa\u01c5\u01ce\u01fe\u0204\u0204\u0205 \u020c \u0127\u0128\u01bd\u01bd\u01bd\u0170 \u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u021c\u0214\u0214 \u0207\u0207\u0207\u0207\u0207 \u0173\u0173\u01c1\u01e9\u01d6\u0177\u0177\u01f7 \u0181\u0181\u01fc\u021d\u021e\u021e\u0215\u020d\u020d \u0201\u0202 \u020f\u0217\u0217\u021f\u0218\u0220\u0220\u0210\u01d7\u01ee\u01d8\u01d9 \u01ef \u0221\u0221\u0221 \u01e2 ", - "\u0222\u021a\u021a\u0211\u0211\u0173 \u0212\u0212 \u021b\u0213\u0213\u0213\u0213 \u01c5\u01fa\u020c\u020c\u0204\u0205\u0205\u020c \u0127\u0127\u01bd\u01bd\u01bd\u0170\u01ff\u01ff\u01ff\u01ff\u01ff\u0223\u0224\u0224\u0225\u021c\u021c\u021c\u0214\u0214 \u0207\u0207\u0207\u0207\u0207 \u0173\u0173\u01c1\u01e9\u0226\u0177\u01d6\u01f7 \u0181\u0181 \u021d\u021e\u021e\u0215\u0215\u020d\u0197 \u0201\u0202 \u020f\u0217\u0217\u021f\u0220\u0220\u0220\u0227\u0227\u0227 \u01ee\u01ee\u01d8\u01d9 \u01ef \u0228 \u0221\u0221\u0221\u0221\u0221\u0221\u0221\u0221\u0221\u0221 ", - "\u0229\u0222\u021a\u0211\u0211\u0173\u0173 \u0212\u0212\u022a\u021b\u021b\u0213\u0213\u0213\u0213 \u020c\u0205\u020c \u0127\u0127\u0128\u01bd\u01bd\u01be\u01ff\u01ff\u01ff\u01ff\u01ff\u022b\u0223 \u021c\u021c\u021c\u022c\u022d \u0214\u0214\u0207\u0207\u0207 \u0173\u01c1\u01c1\u01e9\u0226\u01d6\u0177\u01f7 \u0181\u0181 \u021d\u021d\u021e\u021e\u0215\u020d\u020d \u0201\u0202 \u020f\u0217\u0217\u021f\u0220\u0220\u0220 \u022e \u0227 \u01d7\u01ee\u01d8\u01d9 \u01ef \u0228 \u01e2\u022f\u022f\u022f\u022f\u022f ", - " \u0229\u0229\u0222\u021a\u0211\u01c1\u0173\u0173 \u0230 \u021b\u021b\u0213\u0213\u0213\u0213 \u020c\u0127\u0127\u0128\u01bd\u01bd\u01bd\u01ff\u01ff\u01ff\u0231\u0232\u0232\u022b\u021c\u021c\u0224\u0224\u0225 \u022c\u022d \u0214\u0214\u0207 \u0173\u01c1\u01c1\u01e9\u01e9\u01d6\u0177\u01f7\u01f7\u0181\u0181 \u021d\u021e\u021e\u0215\u0215\u020d\u0197 \u0233\u0233\u0217\u0217\u021f\u0220\u0220\u0220 \u0234\u022e \u0227 \u01ee\u01ee\u01d8\u01d9 \u01ef \u0228 \u01e2 \u022f\u022f\u022f\u022f\u022f\u022f ", - "\u0235\u0235 \u0229\u0222\u021a\u021a \u01c1\u0173\u0230\u0230 \u021b\u021b\u0213\u0213\u0213\u0213\u0127\u0128\u01bd\u01bd\u01bd\u01ff\u01ff\u01ff \u0231 \u021c\u021c\u022b\u0223 \u0224\u0225\u0225\u022c\u022d\u0236 \u0173\u01c1\u01c1\u01e9\u01e9\u01d6\u01d6\u0177\u01f7\u0181\u0181 \u021d\u021d\u021e\u021e\u0215\u020d\u020d\u0237\u0238\u0239\u0239\u0239\u021f\u0220\u0220\u0220 \u023a \u0234 \u022e \u023b\u023b\u0227 \u01d7\u01ee\u01d8\u01d9 \u01ef \u0228 \u01e2 ", - " \u0235\u0235 \u0229\u0222\u021a\u021a\u0230\u0230\u0173\u0173\u0173 \u021b\u021b\u021b\u0213\u0213\u01bd\u01bd\u01bd\u01ff\u01ff\u01ff \u023c\u021c\u021c\u0232 \u022b \u0223\u0224 \u0225\u0236 \u0173\u01c1\u01c1\u01e9\u01e9\u01d6\u01d6\u01f7\u01f7\u0181\u0181 \u023d\u021d\u021e\u021e\u0215\u0237\u0237\u0237\u023e\u023f\u0240\u0241\u0220\u0220 \u023a\u023a \u0234 \u0242\u022e\u023b \u0227\u0227 \u01ee\u01ee\u01d8\u01d9 \u01ef \u0228 \u01e2 ", - " \u0235\u0235 \u0229\u0222\u0230\u0230 \u01c1\u01c1\u0173\u0173 \u021b\u0127 \u0243\u0243\u01ff\u01ff\u01ff \u023c\u0231 \u0232\u022b\u022b\u0223\u0236\u0224 \u0173\u0173\u01c1\u01e9\u01e9 \u01f7\u01f7\u01f7\u0181\u0181 \u023d\u023d\u023d \u021d\u0237\u0237\u0237\u0237\u023e\u023e\u023e\u0241\u0241\u0244 \u023a\u023a \u0234 \u0245\u0242\u0242 \u0227 \u01d7\u01ee\u01d8\u01d9 \u01ef \u0228 \u01e2 ", - "\u0246\u0246\u0246\u0246\u0246\u0235\u0235 \u0230\u0222\u021a\u021a\u021a\u01c1\u01c1\u0173\u0173\u0173 \u0247 \u0243\u0243\u0170\u01ff\u01ff \u023c \u0231\u0232 \u022b\u0236 \u0173\u0173\u01c1\u01e9\u01e9\u01e9\u01f7\u01f7\u01f7\u0181\u0181 \u023d\u023d\u0248 \u0249\u0237\u0237\u0237\u023e\u023e\u023e\u024a\u024a\u024b\u0244 \u023a\u023a \u0245 \u024c\u024c \u024d\u024e \u01d7\u01ee\u01d8\u01d9 \u01ef \u0228 \u01e2 ", - " \u0235\u0235\u024f \u0229\u0229\u0222\u021a\u021a\u021a\u01c1\u0173\u0173\u0250\u0250\u0251\u0243\u0243\u01ff\u01ff \u023c\u0231\u0236\u0232 \u0173\u0173\u01c1\u01e9\u01e9\u01e9\u01f7\u01f7 \u0181\u0181\u0181 \u0252\u0252\u0252\u0252\u0252\u0248\u0248\u0249 \u023e\u023e\u0253\u024a\u024a\u024b\u024b\u0254\u0255 \u023a \u0234 \u0256\u024d \u024e \u01d7\u01ee\u01d8\u01d9 \u01ef\u01ef \u0228 \u01e2 ", - "\u0257 \u0258\u0258\u0258 \u0259\u025a\u025a\u025a \u0229\u0229\u0222\u0222\u021a\u0250\u0250\u0251\u0251\u025b\u025b\u025c\u01ff \u025d\u025d \u023c\u0236 \u0173\u0173\u01c1\u01e9\u01e9\u01e9\u01f7\u01f7 \u0181\u0181\u0181 \u0252\u0252\u0252\u0252\u0252\u0252 \u025e\u0248\u0248 \u0222\u0222\u025f\u024a\u0260\u024b\u024b\u024b\u0254\u0254\u0255\u023a \u0256\u0256\u0256\u0256\u0256\u024c \u024e \u01d7\u01ee\u01d8\u01d9 \u01ef \u0228\u0228 \u01e2 ", - "\u0257\u0257\u0258\u0258\u0258 \u0259\u0261 \u025a\u025a\u025a \u0229\u0229\u0250\u0251\u0251\u025b\u025b\u025c\u025c \u025d\u025d\u025d\u025d \u0173\u0173\u0173\u01c1\u01e9\u01e9\u01e9\u01f7\u01f7 \u0181\u0181\u0181 \u0252\u0252\u0252\u0252 \u025e\u0222\u0222\u0222\u0262\u0263\u0264\u0260\u0260\u024b\u024b\u0215\u0254\u0254\u0255\u0265 \u024c \u024e\u024e \u01ee \u01d9\u01d9 \u01ef \u0228\u0228 \u01e2 ", - " \u0266\u0257 \u0259\u0267 \u0268\u0269 \u0250\u0250\u0251\u025b\u025b\u025c\u025c\u0181\u01c1\u0173\u0173\u01c1\u0173\u0173\u0173\u0173\u01c1\u0173\u01c1\u01c1\u01e9\u01e9\u01f7\u01f7\u01f7 \u0181\u0181\u0181 \u0252\u0252\u0252\u0252 \u0222\u0222\u0222\u0222\u0262\u0262\u026a\u0263\u026b\u026c\u024b\u024b\u021e\u021e\u0215\u0254\u0255\u0255\u0265\u0265\u0265\u0265 \u026d\u026d\u026d\u026d\u026d \u026e \u024e\u024e \u01d7\u01d7 \u01d9\u01d9\u01ef\u01ef \u0228 \u01e2 ", - "\u0266 \u0257\u0257 \u0261\u0261\u0267 \u026f \u0270\u0270\u0251\u025b\u025b\u025b\u025c\u0229\u0229\u0222\u0222\u0181\u0181\u0181 \u01e9\u01e9\u0271\u01f7\u01f7\u0181\u0181\u0181 \u0252\u0252\u0252 \u0222\u0222\u0222\u0222\u0262\u0262\u0262\u0262\u0272\u0272\u0263\u0273\u026c\u0274 \u021d\u021d\u021e\u0254\u0254\u0255\u020d\u020d\u0265 \u026d\u026d\u026d\u026d\u026d \u026d\u026d\u026e\u026d\u026d\u026d \u024e\u024e \u01d7\u01ee \u01d9 \u01ef \u0228 \u01e2 ", - "\u0266 \u0257\u0257 \u0261 \u0267 \u026f \u0270\u0270\u0275\u0275\u025b\u025b\u025c\u025c \u0229\u0229\u0222\u0181\u0181\u0181\u0181\u0181\u0181\u0181\u0181\u0181\u0181\u0276\u0276\u0276\u0252\u0252 \u0222\u0222\u0222\u0222\u0222\u0222\u0229\u0262\u0262\u0262 \u0272\u0277\u0263\u026b\u0278\u026c\u0279 \u027a\u021d\u021d\u0254\u0255\u0255\u027b\u020d\u027c \u026d\u026d\u026d \u027d\u027d\u027d\u027d\u027d\u027d\u027d\u027d\u027d \u026e \u026d\u026d\u026d \u01d7\u01d7\u01d8\u01d9\u01ef\u01ef \u0228 \u01e2 \u027e", - " \u0257\u0257\u0261 \u0267 \u026f \u0270\u0270\u0275\u0275\u027f\u027f\u025c\u025c\u0280 \u0281\u0282\u0229\u0229\u0222\u0222\u0222\u0276\u0276\u0276\u0276\u0276\u0222\u0222\u0222\u0222\u0222\u0222\u0222\u0222\u0229\u0262\u0262\u0262\u0262\u0262\u0262 \u0283\u0283\u0272\u0277\u0277\u026b\u0278\u0279\u0284\u0274 \u027a \u0254\u0254\u0255\u0215\u027c\u027c\u027c\u0285\u0286\u0287\u0288\u0288\u027d \u027d\u027d\u027d\u027d \u026d\u026d \u01d7\u01ee\u01d8\u01d9\u01ef \u0228\u0228 \u01e2 \u027e\u027e\u027e\u027e\u027e", - " \u0289\u0257 \u0267 \u026f \u0270\u0275\u0275\u027f\u027f\u028a\u028a \u0280 \u0281\u0281\u028b\u028b\u028b \u028c\u0276\u0276\u0276\u0276\u0229\u0229\u0262\u0262\u0262\u0262\u0262\u0262\u0262\u0262 \u0283\u028d\u028e\u0272\u0277\u0263\u0273\u0278\u0279\u0284\u0274 \u027a \u0254\u0255\u0255\u027c\u027c\u0285\u0285\u0286\u028f \u0288 \u027d\u027d\u027d \u026d\u026d \u01d7\u01ee\u01d8\u01d9\u01ef \u0228\u0228 \u01e2 \u027e\u027e\u027e\u027e\u027e\u027e\u0290\u0290\u0290", - " \u0289 \u0257\u0257 \u026f \u0270\u0270\u0275\u027f\u027f\u027f\u028a \u0280 \u0281\u0281\u028b\u028b \u028c\u028c\u028c \u0262\u0262\u0262\u0262\u0262\u0262 \u0283\u028d\u028d\u028d\u028e\u0277\u026b\u026b\u0278\u0279\u0284\u0274\u027a\u027a \u0254\u0255\u027c\u0285\u0285\u0286\u0286\u020d\u020d\u0291\u0292 \u027d\u027d\u027d \u026d \u01ee\u01ee\u01d8\u01ef\u01ef \u0228\u0228\u01e2\u01e2 \u027e\u027e\u027e\u027e\u027e\u027e\u0290\u0290\u0290\u0290\u0290\u0290 ", - " \u0289\u0289 \u0257\u0257 \u0270\u0270\u0275\u027f\u027f\u027f\u028a \u0280\u0281\u0281\u028b\u028b \u028c\u0262\u0262\u0262\u0262\u0262 \u0283\u028d\u028d\u028d\u028e\u0277\u0277\u0263\u0273\u0278\u0279\u0284\u0274\u027a\u027a \u0293\u0294\u027c\u0285\u0285\u0286\u021e\u0215\u027b\u020d\u0291\u0292 \u027d\u027d \u026d\u026d\u01d7\u01ee\u01d8\u01ef \u0228\u0228 \u027e\u027e\u027e\u027e\u027e\u027e\u0290\u0290\u0290\u0290\u0290\u0290 ", - " \u0289\u0289 \u0295\u0295\u0257\u0270\u0270\u0275\u0275\u027f\u027f\u028a\u028a \u0296\u028b\u028b \u028c\u028c\u0262\u0262\u0262 \u028d\u028d\u028e\u028e\u0277\u0277\u0297\u026c\u0278\u0284\u0284 \u027a\u027a \u0293\u0294\u0298\u0298\u0286\u0286\u021e\u021e\u021e\u0215\u020d\u020d\u0291\u0292\u0292\u0292\u0292 \u027d \u026d\u026d\u01d7 \u01d8\u01ef \u01e2 \u027e\u027e\u0299\u027e\u027e\u027e\u0290\u0290\u0290\u0290\u0290\u0290 ", - " \u0289 \u0295\u0295 \u029a\u029a\u0275\u0275\u027f\u027f\u029b\u029b \u0281\u0281\u028b\u0296 \u028c\u0262\u0262\u0262 \u029c\u029d\u028e\u028e\u0277\u0277\u026b\u026c\u0278\u0284\u0284 \u027a\u027a \u0293\u0298\u0298\u0286\u029e\u029f\u021d\u021e\u021e\u021e\u0215\u020d \u0292\u0292\u0292\u0292\u0292\u0292\u0292 \u027d\u027d \u026d\u01d7\u01d7\u01d8\u02a0\u01ef \u01e2\u01e2 \u02a1\u02a1\u02a1\u02a1\u027e\u0290\u0290\u0290\u0290\u0290\u0290 ", - " \u0289 \u0295\u0295 \u029a\u0275\u0275\u027f\u027f\u029b\u029b \u0281\u0281\u028b \u02a2\u02a2\u0262\u0262 \u029c\u029d\u028e \u0277\u0263\u0297\u026c\u0278\u0284\u0284 \u027a \u0293\u0298\u0298\u02a3 \u029f\u029f\u021d\u021d\u021e\u021e\u0215\u0215\u020d \u02a4 \u0292\u0292\u0292\u0292\u0292\u0292\u0292 \u027d\u027d \u026d\u01d7\u01d8\u01ef\u01ef \u02a5\u02a1\u02a1\u02a1\u02a6\u02a6\u02a6\u02a7\u02a7\u0290 ", - " \u0289 \u0295\u029a\u029a\u0275\u027f\u027f\u027f\u029b \u0281\u0281\u028b \u02a8\u02a9\u02a9\u02a9 \u029c\u029d\u028e \u0277\u0263\u026b\u026c\u0279\u0284\u0274\u027a\u027a \u0293\u0298\u0298 \u02aa\u029f \u021d\u02ab\u021e\u021e\u0215\u020d \u02a4 \u02ac\u0292\u0292\u0292\u0292\u0292\u0292\u027d\u027d \u01d7\u01ee\u01d8\u02a0 \u02a5\u02a5\u02a5\u02a5\u02a6\u02a6\u02a6\u02a6\u02a6\u02ad\u02ad ", - "\u0289\u0289 \u029a\u029a\u0275\u0275\u027f\u027f\u029b \u0281\u028b \u02ae\u02ae \u02a9\u02af \u029d\u028e\u028e\u02af\u0277\u026b\u0273\u026c\u0279\u0284\u0274\u027a\u027a \u0293\u0298 \u02aa\u02aa \u021d\u021d\u021e\u021e\u0215\u0215\u020d \u02a4 \u02ac \u027d\u027d \u026d\u02b0\u02b1\u02b2\u02b3\u02b3\u02b3\u02a5\u02a6\u02a6\u02a6 \u02ad\u02ad ", - "\u0289 \u029a\u029a\u0275\u0275\u027f\u027f\u029b\u02b4 \u02b5\u02b6 \u02a8\u02ae\u02ae \u02af \u029c\u029d\u028e\u028e\u0277\u0277\u0263\u026b\u0278\u0279\u0284\u0274\u027a\u027a \u0293\u0293\u0298 \u02aa\u02aa\u029f \u021d\u021d\u021e\u021e\u0215\u020d\u02b7 \u02a4 \u02ac \u027d \u026d\u02b3\u02b3\u02b8\u02b8\u02b8\u02b9 \u02ad\u02ad\u02ad\u02ad ", - " \u029a\u0275\u0275\u027f\u027f\u029b\u02b4\u02b4 \u02b5\u02b6 \u02a8\u02a8 \u02ba\u02af \u029c\u029d\u028e\u028e\u0277\u0263\u026b\u0273\u0278\u0284\u0284\u0274\u027a\u027a \u0293\u0293\u0298 \u02aa\u02aa \u029f \u02ab\u021d\u021e\u021e\u0215\u0215\u02bb \u02a4\u02a4 \u02ac \u027d \u02b3\u02b3\u02b8\u02b8\u02b8\u02b8\u01d9\u02bc\u02bc \u02ad\u02ad\u02ad\u02ad\u02ad ", - " \u029a\u029a\u0275\u027f\u027f\u029b\u02b4\u02b4 \u02b5\u02b5 \u02ae\u02ae \u02ba\u02ba \u02af \u029c\u029d\u028e\u02af\u0277\u0277\u0297\u0273\u0278\u0284\u0284 \u027a \u0293\u0293\u0298 \u02aa\u02aa \u029f \u021d\u02bd\u021e\u021e\u0215\u02bb\u02b7 \u02a4 \u02ac \u02be\u02b3\u02b8\u02b8\u02b8\u02b0\u02b2\u01d9\u01d9 \u02ad\u02ad\u02ad\u02ad\u02ad ", - " \u029a\u029a\u0275\u027f\u027f\u027f\u029b\u02b4 \u02bf\u02c0 \u02a8\u02ae \u02ba\u02ba \u02af \u029c\u029d\u028e\u02af\u0277\u0263\u026b\u026c\u0278\u0284\u0284\u027a\u027a \u0293\u0298\u0298 \u02aa\u02aa \u029f \u02bd\u021e\u021e\u0215\u0215\u02b7 \u02a4 \u02ac \u02be\u02be\u02be\u02c1\u02b8 \u026d\u02b0\u02b2\u01d9\u01d9 \u02c2\u02c3 \u02ad\u02ad\u02ad\u02ad\u02ad ", - " \u029a\u029a\u0275\u027f\u027f\u027f\u029b\u02b4 \u02c0 \u02a8\u02ae \u02ba\u02ba \u02af\u02af \u029c\u029d\u028e\u02af\u0277\u026b\u026b\u026c\u0279\u0284\u0274\u027a\u027a \u0293\u0293\u0298 \u02aa\u02aa \u029f\u029f \u02bd\u02bd\u021e\u021e\u0215\u02bb \u02a4 \u02ac \u02be\u02be\u02c1\u02c1 \u02b0\u02b1\u02b2\u01d9\u01d9 \u02c3\u02c3 \u02ad\u02ad\u02ad\u02ad ", - " \u029a\u0275\u0275\u027f\u027f\u029b\u02b4 \u02bf\u02c0\u02a8\u02ae \u02ba \u02af\u02af \u02c4\u02c4 \u029c\u029d\u028e\u028e\u0277\u0277\u0263\u0297\u0278\u0279\u0284\u0274\u027a\u027a \u0293\u0293\u0298 \u02aa\u02aa \u029f \u02bd\u021e\u021e\u0215\u02bb \u02a4 \u02ac \u02be\u02be\u02be\u02c1\u02c1 \u02b0\u02b0\u02b2\u01d9\u01d9 \u02c3 \u02ad\u02ad\u02ad\u02ad ", - " \u029a\u029a\u0275\u027f\u027f\u029b\u02b4\u02b4 \u02bf\u02c0\u02a8\u02ae \u02ba \u02af\u02c4\u02c4 \u029c\u029d\u028e\u028e\u0277\u0263\u026b\u0273\u0278\u0279\u0284\u0274\u027a\u027a \u0293\u0298\u0298 \u02aa\u02aa \u02c5\u02c5\u02c5\u02c5\u02c5 \u02bd\u021e\u021e\u0215 \u02a4 \u02ac \u02be\u02be\u02be\u02c1\u02c1 \u026d\u02b1\u02b2\u01d9 \u02c3 \u02ad\u02ad\u02ad\u02ad", - "\u02c6\u02c6 \u029a\u029a\u0275\u027f\u027f\u029b\u029b\u02b4 \u02bf\u02c0\u02a8\u02ae \u02ba \u02af \u029c\u029d\u028e\u028e\u0277\u0277\u0263\u0273\u0278\u0279\u0284\u0274\u027a \u0293\u0298 \u02aa \u02c5\u02c5 \u02c5\u02c5 \u02bd\u021e\u021e\u0215\u02b7 \u02a4\u02a4\u02a4\u02a4\u02a4\u02a4\u02a4 \u02ac \u02be\u02be\u02c7\u02c1\u02c8 \u026d\u02b0\u02b2\u02b2\u01d9 \u02c3 \u02ad", - " \u02c6\u029a\u029a\u0275\u027f\u027f\u027f\u029b\u02b4 \u02c0 \u02ae \u02ba\u02ba \u02af\u02af \u029c\u029d\u028e\u02af\u0277\u0263\u0297\u026c\u0278\u0284\u0284\u0274\u027a \u0293\u0293\u0298 \u02aa\u02c9 \u02c5\u02c5\u02c5 \u02c5 \u02bd\u021e\u02bb\u02bb \u02a4\u02a4\u02a4\u02a4\u02a4\u02be\u02be\u02be\u02c7\u02c7 \u02c8\u02c8 \u026d\u02b1\u02b1 \u01d9 \u02c3 ", - " \u029a\u029a\u0275\u0275\u027f\u027f\u029b\u02b4 \u02bf\u02c0\u02ae\u02ae \u02ba\u02ba \u02af\u02af\u02af\u029c\u029d\u028e\u02af\u0277\u0263\u026b\u026c\u0279\u0284\u0284\u027a\u027a \u0293\u0293 \u02ca\u02ca \u02cb\u02cb\u02c5\u02c5 \u02c5 \u02bd\u02bd\u02bb\u02cc \u02cd\u02cd\u02be\u02c7\u02c7 \u02ce\u02c8\u02cf\u02cf \u026d\u02b0\u02b2 \u01d9 \u02c3\u02c3 ", - " \u029a\u029a\u0275\u027f\u027f\u029b\u02b4\u02b4 \u02c0\u02c0\u02a8\u02ae \u02ba\u02ba \u029c\u028e\u028e\u02af\u0277\u0263\u0297\u026c\u0278\u0284\u0284\u027a\u027a \u0293\u02d0 \u02ca \u02cb \u02c5 \u02c5\u02d1\u02d1\u02bb \u02cd\u02cd\u02d2\u02d2 \u02ce\u02ce\u02ce \u02c8 \u02cf \u026d\u02b1\u02b2\u01d9\u01d9 \u02c3\u02c3 ", - "\u029a\u029a\u0275\u027f\u027f\u029b\u029b\u02b4 \u02bf\u02c0\u02a8\u02ae \u02ba\u02ba \u029d\u028e\u028e\u0277\u0277\u02d3\u026b\u026c\u0279\u0284\u0274\u027a\u027a \u0293\u02d4\u02d0 \u02ca \u02c5\u02c5 \u02c5\u02c5\u02c5\u02bd\u02bd\u02bb\u02b7 \u02cd\u02cd\u02c7\u02c7\u02d5 \u02c8\u02cf\u02cf \u02b0\u02b0\u02b2\u01d9\u01d9 \u02c3 ", - "\u029a\u0275\u027f\u027f\u027f\u029b\u02b4 \u02c0\u02a8\u02ae \u02ba\u02ba \u029d\u028e\u028e\u0277\u0277\u02d3\u0273\u0278\u0279\u0284\u0274\u027a\u027a \u0293\u0293\u02d0 \u02d6\u02d6\u02ca \u02c5\u02c5\u02c5 \u02d7\u02bd\u02bd\u02bb \u02cd\u02cd\u02c7\u02c7 \u02d5 \u02c8\u02c8\u02cf\u02cf \u026d\u02b1\u02b2\u01d9 \u02c3 ", - "\u0275\u027f\u027f\u027f\u029b\u02b4 \u02bf\u02c0\u02ae \u02ba\u02ba \u02af\u029d\u028e\u028e\u0277\u0277\u02d3\u02d8\u02d9\u0279\u0284\u0274\u027a \u0293\u02d0 \u02d6\u02d6\u02ca \u02d7\u02bd\u02bb\u02bb \u02cd\u02cd\u02c7\u02c7 \u02d5 \u02c8\u02c8\u02cf \u02b0\u02b2\u02b2\u01d9 \u02c3 ", - "\u0275\u027f\u027f\u029b\u02b4\u02b4 \u02c0\u02c0\u02a8\u02ae \u02ba \u02af\u02af\u029d\u029d\u028e\u02da\u0277\u02db\u02dc\u02d9\u02dd\u0284\u0274\u027a \u0293\u0293\u02d0 \u02d6\u02d6 \u02ca \u02d7\u02bd\u02bd\u02bb\u02b7 \u02cd\u02cd\u02c7\u02c7 \u02d5 \u02c8 \u02cf \u02b1\u02b2 \u01d9 \u02c3\u02c3 ", - "\u027f\u027f\u029b\u02b4\u02b4 \u02bf\u02c0\u02ae\u02ae \u02ba \u02af\u02af \u029d\u028e\u028e\u02da\u0277\u02d8\u02dc\u02dd\u02de\u02df\u027a\u027a \u0293\u0293\u02d0 \u02d6 \u02ca\u02ca \u02d7\u02bd\u02bd\u02bb\u02b7\u02b7\u02cd\u02cd\u02c7\u02c7 \u02d5 \u02c8 \u02cf \u02b0\u02b0\u02b2\u01d9\u01d9 \u02c3\u02c3 ", - "\u027f\u029b\u029b\u02b4 \u02bf\u02c0\u02a8\u02ae \u02ba \u02af \u029d\u028e\u028e\u02da\u0277\u02d8\u02dc\u02dd\u02df\u02df\u027a\u027a \u0293\u0293\u02d0 \u02d6 \u02ca \u02d7\u02d7\u02bd\u02bd\u02bb\u02bb\u02cd\u02cd\u02c7\u02c7\u02e0\u02e0\u02e1 \u02d5 \u02c8 \u02cf \u02b0\u02b1\u02e2\u01d9\u01d9 ", - "\u027f\u029b\u02b4 \u02bf\u02c0\u02ae \u02ba\u02ba \u02af \u029d\u028e\u028e\u02da\u0277\u02dc\u02d9\u02dd\u02df \u027a\u027a \u0293\u0293\u02d0 \u02d6\u02d6 \u02ca \u02d7\u02d7\u02bd\u02cc\u02e3\u02cd\u02e4\u02c7 \u02e1\u02e1\u02e1\u02d5\u02d5\u02d5\u02d5\u02d5 \u02c8\u02c8\u02e5\u02cf \u02b0\u02b1\u02b2\u01d9 ", - "\u029b\u02b4 \u02c0\u02c0\u02a8 \u02ba\u02ba \u02af\u029d\u028e\u02da\u02da\u0277\u02d9\u02dc\u02df\u02df \u027a\u027a \u0293\u02e6\u0293 \u02d6\u02d6 \u02ca \u02e7 \u02d7\u02bd\u02bd\u02e3\u02cc\u02e4\u02c7 \u02d5\u02d5\u02d5\u02d5\u02d5\u02d5\u02d5\u02c8\u02c8\u02e5\u02cf \u02e8\u02b1\u02e9\u01d9 ", - "\u02b4\u02b4 \u02bf\u02c0\u02ae\u02ae \u02ba\u02ba \u02af\u02af\u02da\u02da\u0277 \u02d9\u02de\u02de \u027a\u027a \u0293\u02e6\u02d0 \u02d6\u02d6 \u02ca\u02ca \u02e7\u02e7 \u02d7\u02ea\u02ea\u02cc\u02eb\u02c7 \u02d5\u02c8\u02e5\u02e5\u02cf \u02b0\u02b2\u02e2\u01d9 ", - "\u02b4 \u02bf\u02c0\u02a8\u02ae \u02da\u0277\u0277 \u02dd\u02de \u027a\u027a \u02e6\u02e6\u02d0 \u02d6\u02d6 \u02ca\u02ca \u02e7 \u02ec\u02ea\u02ea\u02ea\u02cc\u02cc\u02ed \u02ee\u02c8\u02e5\u02cf\u02cf \u02b0\u02e8\u02e9\u02e9\u01d9 ", - " \u02bf\u02a8\u02ae \u02da\u0277\u0277 \u02dd\u02ef \u027a\u027a\u0293\u0293\u02d0 \u02d6 \u02ca\u02ca \u02e7 \u02ec\u02ec\u02f0\u02f1\u02f1\u02d7\u02ed\u02ed\u02ed\u02ed \u02ee \u02c8\u02e5\u02cf\u02cf \u02f2\u02f2 \u02b0\u02e8\u02b2\u01d9\u01d9 ", - " \u02c0\u02c0\u02a8 \u02da\u0277\u02f3\u02ef\u02dd \u027a\u0293\u0293\u02d0 \u02d6\u02d6 \u02ca\u02ca \u02e7 \u02ec\u02ec\u02f1\u02f1\u02f4\u02f5\u02f5\u02ed\u02ed\u02ed\u02ed\u02ed\u02ed \u02ee \u02c8\u02c8\u02e5\u02cf\u02cf\u02f2\u02f2 \u02e8\u02b1\u02e9\u01d9\u01d9 ", - " \u02bf\u02c0\u02ae \u02da\u02da\u0277\u02f3\u02f6\u02ef\u027a\u027a\u0293\u0293\u0293 \u02d6\u02d6 \u02ca \u02e7 \u02f7\u02ec\u02ec\u02f1 \u02f4\u02f5\u02f5\u02f5\u02ed\u02ed\u02ed\u02ed\u02ed\u02ed\u02ed\u02ed\u02ed\u02ed\u02ed\u02ed\u02ed\u02f8\u02ed \u02f9\u02e5\u02e5\u02f2\u02f2 \u02b0\u02b1\u02e2\u01d9\u01d9 ", - "\u02bf\u02c0\u02a8\u02ae \u02da\u02da\u0277\u02f3\u02f6\u02fa\u02fb\u02fb\u0293\u0293\u02d0 \u02d6\u02d6 \u02ca\u02ca \u02e7 \u02fc\u02f7\u02ec\u02f1\u02f1 \u02f4\u02f5\u02f5\u02f5\u02f5\u02ed\u02ed\u02ed\u02ed\u02ed\u02ed\u02ed\u02ed\u02ed\u02f8\u02f8\u02ed\u02ed\u02ed\u02ed\u02ed\u02ed\u02f9\u02e5\u02e5\u02cf \u02b0\u02b0\u02b2\u02e2\u01d9\u01d9 ", - "\u02bf\u02ae\u02ae \u02da\u0277\u0277\u02f6\u02f6\u02fa\u02fb\u0293\u0293\u02d0 \u02d6\u02d6 \u02ca\u02ca \u02e7 \u02f7\u02f7\u02f7\u02ec\u02f1 \u02f4\u02f4\u02f5\u02f5\u02f5\u02f5\u02f5\u02f5\u02f5\u02f5\u02f5\u02f5\u02f5\u02f8\u02f5\u02f5\u02ed\u02ed\u02ed\u02ed\u02ed\u02f9\u02ed\u02e5\u02e5\u02cf \u02b0\u02b0\u02b2\u02e2\u01d9 ", - "\u02a8\u02ae \u02da\u0277 \u02f6\u02f6\u02fa\u02fb\u0293\u0293 \u02d6 \u02ca\u02ca \u02fc \u02f1\u02f1 \u02f4\u02f4\u02f4\u02f4\u02f5\u02f4\u02f4\u02f4\u02f4\u02f4\u02f8\u02f5\u02f5\u02f5\u02f5\u02f5\u02f5\u02f5\u02ed\u02ed\u02f9\u02ed\u02ed\u02e5\u02cf \u02b0\u02b1\u02b2 \u01d9 ", - "\u02ae \u02da\u02da\u0277 \u02fa\u02fa\u02fb\u0293\u02d0 \u02ca\u02ca \u02f5\u02f5\u02f5\u02f9\u02ed\u02ed\u02ed\u02cf\u02cf \u02b0\u02b1\u02b2 \u01d9 ", - "\u02ae \u02da\u02da\u0277 \u02fa\u02fa\u02fb\u0293\u02d0 \u02ca \u02f9\u02f5\u02ed\u02ed\u02ed\u02ed\u02cf \u02b0\u02b2\u02b2\u01d9\u01d9 ", - " \u02da\u0277\u0277 \u02fa\u02fa\u0293\u0293\u02d0 \u02ca\u02ca \u02f5\u02f5\u02f5\u02ed\u02ed\u02ed\u02cf \u02b0\u02b0\u02b2\u02b2\u01d9\u01d9 ", - " \u02da\u02da\u0277 \u02fa\u02fa\u0293\u0293 \u02ca\u02ca \u02f5\u02f5\u02ed\u02ed\u02ed\u02cf \u02b0\u02b1\u02b2\u02b2\u01d9 ", - " \u02da\u02da\u0277 \u02fa\u02fb\u0293\u02d0 \u02ca\u02ca \u02f5\u02f5\u02ed\u02ed\u02ed\u02cf \u02b0\u02b1\u02b2 \u01d9 ", - " \u02da\u0277 \u02fa\u02fb\u0293\u02d0 \u02ca\u02ca \u02f5\u02f5\u02ed\u02ed\u02ed\u02cf \u02b0\u02b1\u02b2 \u01d9 ", - " \u02da \u02fa\u02fa\u02fb\u0293\u02d0 \u02f5\u02ed\u02ed\u02ed\u02cf \u02b0 \u02b2\u01d9\u01d9 ", - " \u02fa\u02fa\u0293\u0293\u02d0 \u02f5\u02ed\u02ed\u02ed\u02cf \u02b0\u02b1\u02b2\u02b2\u01d9 ", - " \u02fa\u02fa\u0293\u0293\u02d0 \u02f5\u02ed\u02ed\u02ed\u02cf \u02b0\u02b1\u02b2 \u01d9 " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/road-casings-grouped-rendering-600-600-2.0-grid-reference.json b/tests/visual_tests/grids/road-casings-grouped-rendering-600-600-2.0-grid-reference.json deleted file mode 100644 index 47f94f0ea..000000000 --- a/tests/visual_tests/grids/road-casings-grouped-rendering-600-600-2.0-grid-reference.json +++ /dev/null @@ -1,847 +0,0 @@ -{ - "keys": [ - "", - "330", - "155", - "74", - "57", - "788", - "774", - "201", - "202", - "181", - "228", - "691", - "523", - "73", - "749", - "530", - "385", - "384", - "286", - "1", - "156", - "531", - "361", - "45", - "43", - "93", - "46", - "527", - "589", - "288", - "215", - "605", - "138", - "532", - "588", - "154", - "362", - "348", - "328", - "639", - "635", - "637", - "638", - "529", - "497", - "576", - "300", - "329", - "237", - "636", - "600", - "103", - "534", - "595", - "137", - "232", - "593", - "136", - "104", - "14", - "180", - "526", - "592", - "594", - "323", - "490", - "327", - "203", - "256", - "258", - "528", - "415", - "442", - "342", - "596", - "157", - "343", - "331", - "257", - "89", - "598", - "599", - "367", - "344", - "335", - "277", - "597", - "276", - "275", - "107", - "126", - "113", - "369", - "108", - "590", - "407", - "414", - "147", - "99", - "97", - "124", - "122", - "110", - "472", - "591", - "153", - "100", - "102", - "173", - "174", - "481", - "336", - "406", - "75", - "159", - "96", - "72", - "200", - "266", - "265", - "263", - "269", - "231", - "419", - "179", - "182", - "525", - "371", - "370", - "391", - "313", - "390", - "183", - "417", - "411", - "392", - "315", - "473", - "479", - "446", - "146", - "475", - "474", - "401", - "421", - "445", - "483", - "551", - "480", - "356", - "476", - "583", - "324", - "389", - "839", - "462", - "655", - "325", - "393", - "724", - "440", - "267", - "227", - "620", - "477", - "582", - "268", - "535", - "464", - "299", - "16", - "271", - "259", - "225", - "247", - "463", - "693", - "270", - "548", - "467", - "465", - "422", - "418", - "261", - "489", - "633", - "466", - "238", - "244", - "246", - "482", - "634", - "671", - "333", - "326", - "239", - "248", - "488", - "448", - "245", - "484", - "460", - "332", - "378", - "25", - "577", - "461", - "471", - "381", - "188", - "565", - "470", - "469", - "334", - "379", - "355", - "284", - "279", - "175", - "668", - "550", - "562", - "373", - "665", - "354", - "632", - "485", - "570", - "575", - "673", - "131", - "404", - "587", - "585", - "549", - "663", - "41", - "285", - "739", - "478", - "40", - "262", - "690", - "78", - "145", - "358", - "226", - "260", - "283", - "687", - "486", - "133", - "672", - "95", - "121", - "322", - "195", - "264", - "177", - "396", - "321", - "359", - "15", - "402", - "55", - "686", - "619", - "641", - "615", - "397", - "59", - "236", - "282", - "204", - "786", - "618", - "614", - "376", - "58", - "773", - "212", - "692", - "584", - "400", - "56", - "199", - "375", - "374", - "31", - "405", - "640", - "579", - "670", - "319", - "357", - "505", - "743", - "493", - "50", - "92", - "38", - "784", - "847", - "320", - "841", - "213", - "568", - "741", - "492", - "39", - "840", - "254", - "747", - "827", - "607", - "53", - "398", - "439", - "753", - "224", - "158", - "438", - "214", - "835", - "223", - "626", - "5", - "54", - "61", - "119", - "838", - "302", - "62", - "52", - "22", - "165", - "494", - "13", - "769", - "622", - "491", - "301", - "423", - "118", - "252", - "222", - "631", - "317", - "318", - "495", - "36", - "304", - "697", - "630", - "123", - "760", - "621", - "674", - "2", - "253", - "255", - "846", - "77", - "453", - "3", - "710", - "771", - "708", - "628", - "291", - "383", - "308", - "830", - "726", - "617", - "625", - "564", - "581", - "295", - "292", - "365", - "722", - "845", - "624", - "656", - "666", - "42", - "294", - "732", - "694", - "623", - "627", - "606", - "580", - "456", - "47", - "716", - "507", - "629", - "654", - "653", - "293", - "23", - "613", - "65", - "48", - "144", - "459", - "836", - "780", - "184", - "457", - "125", - "844", - "139", - "616", - "679", - "681", - "682", - "458", - "29", - "833", - "834", - "831", - "719", - "825", - "842", - "166", - "511", - "26", - "27", - "30", - "772", - "219", - "220", - "610", - "675", - "17", - "518", - "509", - "63", - "770", - "768", - "689", - "221", - "506", - "677", - "35", - "37", - "120", - "766", - "738", - "680", - "678", - "730", - "740", - "676", - "443", - "714", - "745", - "832", - "755", - "11", - "444", - "703", - "717", - "826", - "501", - "142", - "642", - "117", - "713", - "130", - "742", - "767", - "503", - "20", - "18", - "731", - "808", - "185", - "170", - "727", - "90", - "521", - "569", - "70", - "191", - "234", - "515", - "513", - "522", - "701", - "311", - "545", - "684", - "556", - "517", - "516", - "514", - "733", - "211", - "141", - "519", - "699", - "350", - "310", - "210", - "64", - "520", - "303", - "725", - "729", - "524", - "450", - "744", - "822", - "349", - "192", - "135", - "746", - "815", - "813", - "820", - "189", - "190", - "546", - "643", - "24", - "33", - "34", - "510", - "705", - "721", - "712", - "193", - "553", - "538", - "555", - "817", - "707", - "559", - "539", - "795", - "818", - "351", - "603", - "604", - "76", - "750", - "794", - "683", - "206", - "544", - "706", - "819", - "779", - "783", - "787", - "789", - "711", - "32", - "807", - "805", - "793", - "297", - "852", - "235", - "105", - "44", - "542", - "759", - "791", - "290", - "347", - "289", - "160", - "536", - "51", - "757", - "728", - "811", - "781", - "785", - "169", - "810", - "778", - "541", - "504", - "98", - "709", - "148", - "134", - "748", - "809", - "704", - "426", - "163", - "149", - "4", - "752", - "346", - "341", - "305", - "167", - "162", - "754", - "12", - "109", - "67", - "828", - "540", - "340", - "10", - "168", - "824", - "112", - "554", - "763", - "68", - "756", - "428", - "106", - "229", - "829", - "496", - "128", - "127", - "161", - "249", - "761", - "782", - "176", - "132", - "688", - "561", - "537", - "306", - "19", - "432", - "307", - "309", - "111", - "171", - "129", - "164", - "250", - "178", - "695", - "21", - "116", - "804", - "775", - "197", - "360", - "803", - "802", - "800", - "806", - "801", - "799", - "798", - "797", - "217", - "216", - "718", - "150", - "843", - "720", - "790", - "338", - "152", - "69", - "151", - "7", - "86", - "8", - "207", - "218", - "796", - "451", - "88", - "6", - "172", - "777", - "558", - "452", - "209", - "208", - "776" - ], - "data": {}, - "grid": [ - " !! ##$$ %%%%&&' (( )))) *** + ", - " !! ##$$ %%%,&& (( )))) **** ++ ", - " - . !! ###$$ %%%/,'' (( )))) **** ++ ", - " -- ... !! ###$$ %%//&' (( )))) **** +++ ", - " -- 00 ... !! ###$$1 22%%%/&&' (( )))33 *** +++ ", - " -- 00 .... !! ###$$1 222%%%,&&44 (( )))33 **** ++ ", - " -- 00 5.... !! ###$$1 222%%%/,'4444 (( ))))33 **** +++ ", - " -- 00 655.... !! 7777777 8##$$112229%%//&'4444 (( ))) 333**** ++++ ", - " -- 00 65555.... !! 7777777 ###$$112229%%/&&'4444 ( ))) 33*** ++++ ", - " -- 00 66 5555...:. !! 77 ##;$$12229%%%,&&4444 ( )) 33** ++++ ", - " << 00 66= 5555.:::. !! 77 ###$$$12229%%%,&'4444 (( ))>>*33* ++++++ ? ", - " <<<<<< @ 0 66=== 5555::.... !! 77 ###A$$1229%%//,''444 ( )) >>333++++++++ ???? ", - " -- <<<<<<@ BBB 666 ==C CC555D...... !! 77 EEEEF ###AAAG1299%%/&&'4444 ( )))*>*33+++ ??? ???? ", - " --HHIJJK<>> ? 1 9@@ 667<<000 !! 8 #..$=422 :%%&',,55; ( )) A**3 ------- BBBB ", - " / C>>>> ? D 9 @E EE66F 0000 ! 8 ##.GG=42 ::%%+',555 ( ) H 3--- BB BB ", - " / CI J>>KKK DDDD 9 E EEE ELFFF 000 ! MMMMMMNN #O.G= ::%%&+ ,55; ( ) * 3- B ", - " //PPPPPJ Q DDDDD99 E EE L FFF 000 ! R R N## GGS: :::%&+',555 ( )) **TT BB ", - " / PC IJPPQ DD EE EE UUU FFF 0000 ! R R #VVGS.::::%%&' ,55; () TT - BBBBBBBBB ", - "W/ PXXIJP Q EE E YYUUU FFF 000 ! R R ZZ VSS[:::%%&+', 55 ) TT] - BB ^ ", - "//PPP JP Q E E __YYY UU FFF 000 ! R R ZZ``Saa[[ %%&' ,555 ))TT] - BB ^ ", - "bb C PPPPQ E E c __ YY U dFF ee0 ! R RR Z``fg [[[%%&',,55 hh T ] - B ^^ ", - "/bbbb J Q EE LLLcc ___YY dd FFF e000 ! RRR ZZ``fg [[%&+',555 hhiT ] - B ^^ ", - " bbbbQ j kkk ccc__ d FFFe 000 !!l ZZ`mmmmm [%%&+ ,555 hh iT ] - B nnn ", - " o jj kkkccc d p qFFF 00r lll Z``stttmm[%%+', 55 hh iT ]]- B uun ", - " o jj kkkk d vvppq FFFF rr00llllll wZ` sx tm%%&+',55;y hh iT ]z-- B ^ u {{{{{{{{{{", - " oo jjjjj kkd ||vvvqpp FFFr 0000llll ZZ` s}}}m[%%&'~,55 yyh iT \u007f\u007f\u007f zzzzzz--- B {{{{{{\u0080{{{{{{{{{{{{{\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081", - " o j kk|||qvv pp rrFF 00000l Z`` ssssm[%%&',555 hh iT\u007f\u007f \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0083\u0083{{{{{{{{{{\u0081\u0081\u0081\u0081\u0081\u0080\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081 ", - " o j kkk q| vv\u0084\u0085\u0086\u0087 FFF\u0088\u0088\u008800000Z`\u0089\u008a\u008bx \u008cm%%&+',55\u008d\u008dh\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008f\u008f\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0090\u0081\u0081 ", - " o j kq |||\u0084\u0084\u0091\u0087\u0086\u0086 \u0092\u0088\u0088\u0088\u0088\u0088\u0088\u0093\u0094`\u0095\u0095\u0095\u0095\u0095\u0095\u0095\u0096\u0096\u0096+\u0096,\u0096\u0096\u0096\u008d\u008d\u0082\u0082\u0082\u0082\u0082\u0097\u0097\u0097\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u0098 -- \u0099 \u0090 ", - " o jj \u009a\u009b\u009a kkk| \u009c\u0087\u0091\u0091 \u0086\u0086 \u0092\u0092\u009d\u009d\u0088\u0088\u009e\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u00a0\u00a0\u00a0&+\u00a0,\u00a0\u00a0\u0097\u0097\u00a1\u0097\u0097\u0097\u0097 \u00a2\u00a3\u00a4\u00a5\u00a5\u00a6 \u00a7\u00a7\u00a7\u00a7--- \u0099\u0099 \u0090 ", - " o jj \u009a\u009a\u009b \u009a\u009a\u009a k \u0087\u009c \u0091 k\u00a8\u009d\u00a9\u00aa\u009e\u00ab\u00ab\u00acx\u00ad %%%&',55 \u00ae \u00a2\u00a3 \u00af\u00af\u00a6\u00a7-- \u0099 \u0090 ", - " o j \u009a \u009b \u009a kkkkkkkkkk\u00b0kkk \u009d\u009d\u009e\u009e\u00b1\u00b2 x\u00b3 %%&&',55 \u00ae \u00a2\u00a3 \u00af - \u0099\u0099 \u0090 ", - "\u00b4\u00b4\u00b4 o j \u009a \u009b \u00b5 \u00b6\u00a8\u009d\u009e\u009e\u00b1\u00b2x \u00ad\u00b3 %%&+',55 \u00ae \u00a2\u00a3\u00b7\u00af - \u0099 \u0090 ", - " \u00b4\u00b4\u00b4o j \u009a\u009a \u009b\u009b \u00b8\u00b9 \u00b5 \u00b6\u00a8\u00ba\u009e \u00b1\u00b2x\u00ad \u00b3%%%&+',55 \u00ae \u00a2\u00a3\u00b7\u00af - \u0099 \u0090 ", - " \u00b4\u00b4\u00b4 jj \u009a\u009a \u009b \u00bb\u00bc \u00b8\u00b9\u00b9\u00b9 \u00bd\u00bd\u00bd\u00bd\u00be \u00bf\u00ba\u00ba\u009e\u00b1 \u00b2x\u00ad\u00b3 %%%&+',5\u00c0 \u00ae \u00a2 \u00a3\u00b7\u00af - \u0099 \u0090 ", - "\u00c1 \u00b4\u00b4\u00b4 jj \u009a \u009b \u00bb \u00bc\u00bc\u00bc \u00c2 \u00b9\u00b9 \u00bd\u00bd\u00bd \u00be \u00bf\u00ba\u009e\u009e\u00b1\u00b2 x\u00ad\u00b3 %% &+'55\u00c0 \u00ae \u00a2\u00a2\u00a3\u00b7\u00b7\u00af - \u0099 \u0090 ", - " \u00c1\u00c1 \u00b4\u00b4 j \u009a\u00c3 \u009b\u009b\u009b\u00bb \u00c4\u00c4\u00c2\u00b8 \u00b9 \u00c5 \u00c6 \u00bf\u00bf\u00ba\u009e \u00b1\u00b2x\u00ad\u00ad\u00b3 %% &+'55\u00c0 \u00ae \u00a2\u00a3\u00a3\u00b7\u00b7\u00af- \u0099 \u0090 ", - " \u00c1\u00c1 j \u009a\u009a\u00c3 \u009b\u00c7\u00c7 \u00c8 \u00b8\u00b8\u00b8\u00b8\u00b8\u00b9 \u00c5 \u00c6 \u00bf\u00c9\u00ba\u009e \u00ca\u00ca\u00b2\u00cb\u00b3\u00b3 %% \u00cc\u00cd,55 \u00ce \u00ae \u00a2 \u00a3 \u00b7\u00cf\u00cf- \u0099 \u0090 ", - " \u00c1\u00d0\u00d0\u00d0 jj j \u009a\u009a\u00c3\u00c3\u00d1\u00d1\u00d1\u00d1\u00d1\u00bb\u00d1 \u00d2\u00c7 \u00c8 \u00b9 \u00c5 \u00c6\u00c6 \u00bf\u00ba\u00ba\u009e \u00b2\u00cb\u00b3 %%%&\u00cc',55 \u00ce \u00ae \u00a2\u00a2\u00d3\u00d3\u00d4\u00d5 -- \u0099 \u0090 ", - " \u00c1\u00c1\u00d0\u00d0j jj \u009a\u00d1\u00d1\u00c3 \u00d6\u00d1\u00d1\u00d2 \u00c7\u00c8 \u00b9 \u00c5 \u00c6 \u00bf\u00ba\u009e\u009e x\u00cb\u00ad \u00d7%%&\u00cc',55 \u00ce \u00ae\u00ae \u00a2\u00d8\u00d3 \u00d5\u00d5 - \u0099 \u0090 ", - " \u00c1\u00c1 \u00d0\u00d0 \u009a\u00d1\u00d1 \u00c3\u00c3\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00da \u00d1\u00d1\u00c8 \u00b9 \u00c5 \u00c6 \u00db\u00bf\u00ba\u009e x\u00cb\u00ad %%%&\u00dc',55\u00ce\u00c0 \u00ae \u00a2\u00a2\u00dd\u00de \u00d5 - \u00df\u00df\u0099\u0099 \u0090 ", - " \u00c1\u00c1 \u00d0\u00d0 \u009a\u00e0\u00d1 \u00d9\u00d9 \u00e1 \u00d9\u00d9\u00d9 \u00e2\u00d1\u00d1 \u00b9 \u00c5 \u00e3\u00c6 \u00bfx\u00ba\u009e x\u00cb\u00ad \u00d7%% &\u00dc',55 \u00c0 \u00ae \u00a2 \u00de\u00de \u00d5 - \u00e4\u00df \u0099 \u0090 ", - " \u00c1 \u00d0\u00d0 \u009a\u009a\u00d1\u00e0\u00e0\u00e0 \u00e5\u00e5\u00e1\u00e5 \u00d9\u00e2 \u00d1 \u00b9 \u00c5 \u00c6 \u00bf\u00ba\u00ba\u009e x\u00cb\u00ad \u00d7%% &\u00cc',55 \u00c0 \u00ae \u00a2\u00a2 \u00dd\u00dd \u00d5 -- \u00e6\u00e7\u00e8 \u0099\u0099 \u0090 ", - " \u00c1 \u00e9 \u009a \u00d1\u00ea\u00ea\u00ea \u00e5 \u00e5\u00e5 \u00eb\u00d9\u00d9 \u00d1 \u00b9 \u00ec\u00ec \u00ed \u00bf\u00ba\u009e\u009e x\u00cb\u00ad \u00d7%% &\u00dc',55 \u00c0 \u00ae \u00a2 \u00dd\u00dd\u00dd -- \u00e6\u00e6\u00e7\u00e8 \u0099 \u0090 ", - " \u00c1\u00c1 \u00e9\u00ee \u00ef\u009a \u00d1\u00f0\u00f0\u00d9 \u00e5\u00e5 \u00eb\u00e5 \u00d9\u00d9 \u00d1\u00d1 \u00b9 \u00f1\u00f1\u00ec\u00ec\u00ec \u00ed \u00bf\u00ba\u009e\u009e x\u00cb\u00ad \u00d7%% &\u00cc',55 \u00c0 \u00ae \u00a2 \u00dd\u00dd\u00dd\u00dd- \u00e6\u00f2\u00f3\u00f3\u00f3\u0099 \u0090 ", - " \u00c1 \u00ee\u00ee\u00ef\u00ef \u009a\u00d1\u00f4\u00f0\u00d9 \u00e5 \u00e5 \u00d9\u00f5\u00f5\u00d1 \u00b9 \u00f6\u00f6\u00f1\u00f1\u00f1\u00ec\u00ec \u00ed \u00f7\u00bf\u00ba\u009e x\u00cb\u00ad \u00d7%% &\u00dc' 55 \u00c0 \u00ae \u00a2\u00a2 \u00d5\u00d5 - \u0099 \u0090 ", - " \u00c1 \u00f8\u00ef\u00f9\u00f9\u00f9\u00f9\u009a\u00d1 \u00d9 \u00fa\u00e5 \u00e5 \u00d9\u00f5 \u00d1 \u00b9 \u00f6\u00f6\u00f1\u00f1\u00ec \u00ed \u00fb\u00f7\u00f7\u00f7\u00f7\u00f7 x\u00cb\u00ad \u00d7\u00d7%% &\u00cc' \u00fc\u00fc \u00c0 \u00ae\u00ae \u00a2\u00a2 \u00d5 - \u0099 \u00fd ", - " \u00f8\u00f8\u00f8 \u00f9\u009a\u00d1 \u00d9\u00fa \u00e5\u00e5 \u00e5 \u00d9 \u00d1\u00b9\u00b9 \u00f6\u00f1\u00ec\u00ed\u00ed \u00fb\u00bf\u00ba\u009e\u009e\u00f7 x\u00cb\u00ad \u00d7\u00d7%% &\u00cd'\u00fc\u00fc\u00fe \u00c0 \u00ae \u00a2\u00a2 \u00d5 - \u0099 \u00fd ", - " \u00f8 \u00ef\u00ef\u00f9\u00f9\u009a \u00d1 \u00d9 \u00e5\u00ff\u00e5\u00e5 \u00e5\u00e5 \u00d9 \u00d1\u00b9 \u00f6\u00f6 \u00bf\u00ba\u009e\u00f7 x\u00cb\u00ad\u00ad \u00d7%% &\u00cd'\u00fc\u00fc\u00fe \u00c0\u00c0 \u00ae \u00a2 \u00d5 - \u0099 \u00fd ", - " \u00f8\u00f8 \u00ef\u00f9\u009a \u00d1\u00d1 \u0100\u00d9\u00d9\u00ff\u00ff \u0101 \u00d9 \u00b9\u00b9 \u0102 \u00ba\u00ba\u009e\u0103 x\u00cb\u00ad \u00d7%% &\u00cd,\u00fc\u00fc\u00fe\u00fe \u00c0 \u00ae \u00a2 \u0104\u0104\u0105 - \u0099 \u00fd \u0106\u0106\u0106", - " \u00f8\u00f8 \u00ef\u00ef \u00d1\u00d1\u0107 \u00d9\u00d9\u00d9 \u0101 \u00d9\u00d9 \u00d1\u00b9 \u0108 \u0102 \u00ba\u00ba\u009e\u0109xxx\u00cb\u00ad \u00d7%% &\u00cd'\u00fc\u00fc \u00fe \u00c0 \u00ae \u00a2\u0104\u0104\u0104\u0105\u00d5 -- \u0099 \u00fd \u0106\u0106\u0106\u0106 ", - " \u00f8 \u009a\u009a \u00d1 \u00d9\u010a\u00d9\u00d9\u00d9 \u010b \u00d1\u00b9\u00b9 \u0108\u010c \u0102 \u00bf\u00ba\u009e\u009e \u00cb\u00ad \u00d7%% &\u00cd'\u00fc\u010d\u010d\u010d \u00c0 \u00ae \u00a2\u00a2 \u0104\u00d5 - \u0099 \u00fd\u00fd \u0106\u0106\u0106\u0106 ", - " \u00f8 \u009a\u009a \u010a\u010e\u010e \u010b \u00d1\u010f \u0110\u010c\u010c\u010c\u010c\u0111 \u0112 \u0113\u0113\u00ba\u009e\u009e \u00cb\u00cb\u00ad \u00d7\u00d7%% &\u00cd\u00fc\u00fc\u010d \u010d \u00c0\u00c0 \u00ae \u00a2 \u0104\u00d5 - \u0099\u00fd\u00fd \u0106\u0106\u0106\u0106 ", - " \u00f8\u0114 \u009a\u009a \u010e \u00d1\u010b\u010f \u0110 \u010c\u010c\u0112 \u0113\u0115\u0115\u0115\u00ba\u00ba\u009e \u0116\u00ad \u00d7%%% &\u00dc'\u00fc\u010d \u010d \u00c0 \u00ae \u00a2 \u0104\u00d5 - \u0117\u00fd\u0106\u0106\u0106\u0106 ", - " \u00f8\u0118\u0118\u0114\u0114 \u009a \u010e\u00b9\u00b9\u010f\u010f \u010c\u010c \u010c\u010c \u0112 \u0113\u0115\u0115\u0115\u0119\u011a\u011b\u009e\u011c\u011c \u0116 \u00ad\u00ad\u00d7%% &\u011d\u00fc \u010d \u010d \u00c0 \u00ae \u00a2 \u0104\u00d5 -- \u0117\u0117\u0106 ", - "\u011e \u00f8 \u0118\u0118\u0114\u0114 \u009a\u009a \u011f\u00b9\u00b9\u00b9\u00b9 \u010f\u010f \u010c\u010c\u010c \u0112 \u0113\u0115\u0115\u0119\u0119\u0119\u011a\u0120\u0121\u011c\u011c\u0122\u0122\u0116 \u00d7\u00d7%% &\u00dc',\u010d \u010d\u010d \u00c0\u0123\u0123\u0123 \u00ae \u00a2 \u0104\u0104\u0124\u00d5\u00d5--\u0125\u0125\u0126 \u0117\u0117 ", - "\u0127\u0128\u0128 \u00f8 \u0118\u0114\u0114 \u009a\u009a \u011f\u0129\u0129 \u010f \u010c\u010c \u0112\u0113\u012a\u0115\u0119\u012b\u012b\u012b\u012c\u0121\u0121\u012d\u012e\u0122\u0122\u0122\u00d7\u00d7\u00d7\u00d7%% \u00fc\u00fc\u011d', \u010d \u010d\u010d\u00c0\u00c0 \u00ae\u00ae \u00a2 \u0104\u0124 \u012f\u0130\u0131\u0126 \u0117\u0117 \u0132\u0132", - " \u0127\u0128\u0128 \u00f8 \u0118\u0118\u0114\u0114 \u009a\u011f\u0129 \u0129 \u010f \u0112 \u012a\u012a\u012b \u012c\u012c\u0121\u0121\u0133\u012e\u012e\u0122\u0122\u00d7\u00d7\u00d7%% \u00fc\u00fc\u011d', \u010d \u010d \u0134 \u00ae\u00ae\u00ae \u00a2 \u0124 \u012f \u0131\u0131 \u0117\u0117 \u0132\u0132\u0132\u0132 ", - " \u0127\u0128 \u00f8\u00f8 \u0118\u0118\u0114\u0114 \u011f\u0129\u0129\u0129\u0129\u010f\u010f \u0112\u0113\u012a\u012b \u012c\u012c\u0121\u0121 \u0135\u012e\u012e %% \u00fc\u00fc\u0136\u00dc', \u010d \u0134 \u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae \u00a2 \u0124 \u0130 \u0126 \u0117\u0117 \u0132\u0132\u0132\u0132\u0132 \u0137", - " \u0138 \u0127\u0128\u0128 \u0118\u0114\u0114 \u009a\u0129\u0129\u010f\u010f \u0112\u0113\u012a\u012a\u0139\u0139\u013a\u013a \u012c\u012c\u0121\u0121 \u013b \u0135\u012e %%% \u00fc\u00fc\u00fc\u013c\u013d\u00cd, \u010d \u013e\u010d \u00ae\u00ae\u00ae\u00ae\u013f\u013f\u013f \u0140 \u0141 \u0117\u0117 \u0132\u0132\u0132\u0132\u0132 \u0137\u0137\u0137\u0137 ", - " \u0142 \u0138 \u0127\u0128\u0128 \u0118\u0118\u0114 \u0143\u0144\u0129 \u0112\u0113\u012a\u012a\u0139\u0139\u0139\u0139\u013a\u013a\u012c \u0121 \u0145\u0146\u0135\u0135\u012e\u0147%% \u00fc\u00fc\u00fc\u0136\u013c\u00dc', \u010d \u013e \u010d \u013f\u013f\u013f\u013f\u013f\u013f\u013f\u013f\u013f\u013f\u0148\u0148\u0117\u0117 \u0132\u0132\u0132\u0132 \u0137\u0137\u0137\u0137 \u0149\u0149\u0149\u0149", - "\u00c1 \u0142 \u00f8 \u014a\u0127\u0128\u014b \u0118\u0118\u0114\u0114 \u0143\u0144\u0144 \u0112\u0112\u012a\u012a\u012b\u014c\u014c\u014d\u0139\u0139\u013a\u012c \u0121\u0146\u0146\u0145\u014e\u0135\u014f\u0150\u0150% \u00fc\u00fc\u0136\u013c \u013d\u011d' \u010d\u010d \u013e\u013e \u010d\u010d \u0151\u0151 \u0132\u0132\u0132\u0132 \u0137\u0137\u0137\u0149\u0149\u0149\u0149\u0152\u0152\u0152 ", - "\u00c1 \u00f8\u00f8 \u014a\u0127\u0128\u014b \u0118\u0114\u0114 \u0143\u0143\u0144 \u0153\u0153 \u0112\u0113\u012a\u012b\u014c\u014c\u014d\u014d\u0139\u0139 \u012c\u0154\u0146\u0146\u0121\u0121\u0155\u0156\u0157\u0150\u0158\u0158%\u00fc\u00fc\u0136 \u013c &\u011d', \u010d \u013e\u013e \u010d\u010d \u0132\u0132\u0132 \u0137\u0137\u0137\u0137\u0149\u0149\u0152\u0149\u0152\u0152 ", - " \u00f8\u00f8 \u0127\u0128\u0128 \u0118\u0118\u0114 \u0143\u0144 \u0153\u0159 \u015a\u0113\u012a\u012b\u014d\u014c\u014d\u014d\u0139\u015b\u015b\u015b\u012c\u0154 \u0121\u0121\u0156\u0150\u0150\u0158\u0158\u00fc\u00fc\u00fc\u0136 \u013c \u00dc\u011d', \u010d \u015c\u013e \u010d\u010d \u0137\u0137\u0137\u0137\u0149\u0149\u0149\u0149\u0152\u0152 ", - "\u015d \u00f8 \u014a\u0127\u0128 \u0118\u0118\u0114\u0114 \u0143\u0144\u0144 \u0159\u015e \u0112\u0113\u012a\u012a\u012b \u014d\u015b\u015b\u015b\u015b\u015b\u015b\u012c \u0150\u0150\u0150\u0158\u0158\u014f\u00fc\u00fc\u0136 \u013c &\u011d\u00cd, \u010d\u015c\u015c\u013e\u013e \u013e\u013e\u013e \u0137\u0137\u0137\u0149\u0149\u0149\u0149\u0152\u0152\u0152 \u015f", - "\u015d\u00f8 \u014a\u0160\u0161\u014b \u0118\u0118\u0114\u0114 \u0143\u0144\u0144 \u015e\u015e \u015e \u0112\u0113\u012a\u012a\u012b\u0162\u0162\u0162\u015b\u015b\u015b\u015b \u0163\u0163\u0164\u0164\u0164\u0150\u0150\u0150\u0150\u0121\u0158\u0158\u00fc\u00fc\u0136\u014f\u014f & ',, \u010d\u015c \u013e\u013e \u013e\u013e\u0165\u013e\u013e \u0137\u0137\u0137\u0149\u0149\u0149\u0149\u0152\u0152\u0152 \u015f\u0166\u0166", - " \u015d \u0127\u0128\u0128 \u0118\u0118\u0143\u0143\u0144 \u015e\u015e \u015e\u0167 \u0112\u0113\u012a\u012b\u0162\u0162\u0162\u0162\u0164\u0164\u0164\u0164\u0164\u0164\u0163\u0164\u0164\u0164\u0150\u0150\u0150 \u0158\u0158\u0158\u00fc\u00fc\u0157 \u014f \u0168 \u011d', \u010d\u010d \u013e\u013e \u013e\u0165\u0165\u0165\u013e\u013e\u013e \u0169\u0169\u0169\u0137\u0137\u0137\u0137\u0149\u0149\u0149\u0149 \u0152\u0152\u0152 \u015f\u0166\u0166\u016a\u016b", - "\u016c \u015d\u015d \u0127\u0161\u0128 \u0118\u0143\u0144 \u015e \u0167\u0167 \u0112\u0113\u012a\u012b\u0162\u0162\u0162\u016d\u016d\u016d\u016d\u016d\u016d\u016d\u016d\u0163\u016d\u0164\u0164 \u016e\u0158\u00fc\u00fc\u0136\u0156\u0157\u014f\u014f \u0168\u00dc\u011d',\u016f \u010d\u010d \u013e\u013e \u013e \u0165\u0165\u0169\u0169\u0169\u0169\u0169\u0169\u0169\u0169\u0169\u0137\u0137\u0137\u0149\u0149\u0149\u0149\u0170\u0170 \u0152\u0152 \u015f\u0166\u0166\u016a\u016b\u016b ", - "\u0171\u016c \u015d\u015d \u014a\u0161\u0128\u014b \u0143\u0144 \u015e \u0112\u0113\u012a\u012a\u0162\u0162\u016d\u016d\u016d\u016d\u016d\u0172\u0172\u0172\u016d\u016d\u0163\u016d\u016d\u016d \u016e\u0173\u0173\u0136\u0174\u0174\u0156\u0157\u014f \u0175\u00dc\u011d' ,\u016f \u0176\u0176\u010d\u010d \u013e\u013e\u0177 \u0169 \u0178\u0179\u0137\u0179\u0149\u0149\u0149 \u017a\u0170 \u0152\u0152 \u015f\u0166\u0166\u016a\u016b\u016b ", - "\u0171\u016c\u016c \u017b\u015d \u014a\u0127\u0128\u0128 \u0143\u0144\u0144 \u015e \u0112\u0113\u012a\u012a\u0162\u0162\u016d\u016d\u016d\u0172\u0172\u0172\u0172\u0172\u0172\u0172\u0172\u0163\u016d\u016d\u016d\u016d\u016d \u016e\u016e\u0173\u0173\u017c\u017d\u0174\u0174\u0157\u014f \u0168\u00dc \u011d',\u016f\u016f\u0176\u0176 \u0176\u0176\u0176\u010d \u0177\u0177\u0177 \u0169 \u0178\u0178\u0178\u0179\u017e\u0149\u0149 \u017a\u017a\u017a\u0170 \u0152 \u015f\u015f\u0166\u0166\u016a\u016b\u016b ", - "\u0171 \u016c\u016c\u017b \u015d \u0127\u0127\u0128 \u0143\u0143\u0144 \u015e\u015e \u0112\u0112\u0113\u012a\u0162\u0162\u016d\u016d\u0172\u0172 \u017f\u017f \u0163\u0172\u0172\u016d\u016d\u016d\u016d\u0180\u0180\u0181\u017c\u017c\u017d\u017d\u0174\u0156\u014f \u0168\u00dc \u011d',,\u016f\u0176 \u010d\u010d \u0169\u0169\u0169\u0178\u0178\u0178\u0182\u0179\u0183\u017e \u017a\u017a\u017a \u0170 \u0152 \u015f\u015f\u0166\u0184\u016a\u016b\u016b \u0185\u0185", - "\u0171\u016c\u016c\u017b\u017b \u015d\u015d \u014a\u0128\u0128\u014b \u0143\u0143\u0144 \u015e\u015e \u0112\u0113\u012a\u0162\u0162\u0162\u016d\u0172\u0172 \u017f \u017f\u017f\u017f\u017f \u0186\u0186\u0172\u0187\u0187\u016d\u016d\u0180\u0180\u0181\u017c\u017c\u017d\u017d\u0174\u0174\u0157\u014f \u0175\u00dc \u011d', \u016f \u010d\u010d \u0169\u0169\u0169\u0178\u0178\u0178\u0182\u017e\u017e\u0183 \u017a\u017a\u017a \u0170\u0170 \u0152 \u015f\u0166\u0166\u016a\u016a\u016b\u016b \u0185\u0185\u0185 ", - " \u016c\u017b\u017b \u015d\u015d \u014a\u0127\u0128\u014b\u0143\u0144 \u0188\u0189 \u0112\u0113\u012a\u012a\u0162\u0162\u016d\u0172\u0172 \u017f\u017f\u018a \u017f\u017f\u018b\u0186\u018b\u0187\u0187 \u016d\u0180\u0181\u0181\u017c\u017c \u017d\u017d\u0174\u0157\u014f \u0175\u00dc \u011d',, \u016f \u010d\u010d\u0169\u0178\u0178\u0178\u0182\u0182\u017e\u017e\u0183 \u017a\u017a \u018c\u018c\u0170 \u0152 \u015f\u0166\u0166\u016a\u016a\u016b\u016b \u0185\u0185 ", - "\u016c \u017b\u018d \u015d\u015d \u0127\u014b\u014b\u0144 \u0188 \u0189 \u0113\u012a\u012a\u0162\u0162\u016d\u0172\u0172 \u017f\u017f \u018a\u018a\u018a\u018a\u018a \u018e\u0186\u018b\u0187\u0187\u0187\u0180\u0180\u0181\u0181\u017c\u017c \u017d\u017d\u0174\u0157\u014f\u018f\u0175\u00dc\u0190\u0191\u011d\u00cd', \u016f \u0192\u0178\u0178\u0182\u0179\u017e\u017e\u0183 \u017a\u017a\u017a \u018c\u018c\u018c\u0170\u0170\u0152 \u015f\u0166\u0166\u016a\u016b\u016b\u016b \u0185\u0185 ", - " \u0193 \u015d\u015d \u0143\u014a\u0144 \u0194 \u0189 \u0113\u0113\u012a\u0162\u0162\u016d\u016d\u0172 \u017f\u017f \u0195\u0195 \u018a\u018a\u018a\u017f\u0186\u0186\u018b\u0187\u0187\u0180\u0180\u0181\u016d\u017c\u017c\u017c\u017d\u017d\u0174\u018f \u0175\u0196 \u0191\u0191\u011d',, \u016f \u0178\u0178 \u0182\u0179\u0197\u017e\u0183 \u017a\u017a\u017a \u018c\u018c \u0170\u0152\u0152 \u015f\u0166\u0166\u016a\u016b\u016b\u016b \u0185\u0185 ", - "\u017b \u015d\u015d \u0143\u0143\u0144 \u0194\u0194\u0189\u0189 \u0113\u012a\u0162\u0162\u0162\u016d\u0172\u0198\u0198\u0198\u0195\u0195 \u0195\u0195\u0195 \u018a\u017f \u0186\u018b\u0187\u0187\u0180\u0180\u0181\u016d\u016d\u017c\u017c\u017d\u017d\u0199\u019a \u0175\u0196 \u0191\u011d\u00cd', \u016f\u016f \u0178\u0178 \u019b\u0179\u0197\u017e\u0183\u0192 \u0170\u0170\u0170\u0170\u018c\u018c\u018c \u0170 \u0152 \u015f\u0166\u0166\u016a\u016b\u016b \u0185\u0185 ", - "\u019c \u019d\u019d\u015d \u0143\u0144 \u019e\u019e\u019e\u019e\u019e \u0113\u012a\u012a\u0162\u0162\u016d\u0172\u0198\u0198\u0198 \u0195\u0195\u0195\u0195 \u0186\u018b\u018b\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u017d\u017d\u0199\u019a \u0175\u00dc \u0191 \u011d',, \u016f \u0178\u0178 \u0182\u0179\u017e\u017e\u0183\u0183 \u01a1\u01a1 \u0170\u0170\u0170\u0170\u01a2\u01a2\u0170\u0170\u0152 \u015f\u0166\u0166\u01a3\u016a\u016b\u016b \u0185\u0185 ", - " \u019d \u015d \u0143\u0144\u0144 \u019e\u019e\u01a4\u01a4\u01a4\u01a4 \u0113\u012a\u012a\u0162\u0162\u016d\u016d\u0198\u0198\u0198 \u0195 \u0186\u0186\u018b\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u017d\u017d\u0199\u019a \u0175 \u0196 \u01a5\u011d\u00cd',\u01a6\u0178\u0178 \u0182\u0179\u017e\u017e\u0183\u0183 \u01a2\u01a2 \u0152\u0152 \u015f\u0166\u0166\u01a3\u016a\u016b\u016b \u0185\u0185 ", - " \u01a7 \u019d \u015d\u015d\u0143\u0144\u0144 \u01a4\u01a4\u01a4\u01a4\u01a4\u01a4\u01a4\u01a4 \u0113\u012a\u012a\u0162\u0162\u016d\u016d\u0198\u0198\u0198 \u01a8\u01a8\u01a9\u01a9\u01a9\u01a9 \u01aa\u01aa\u0186\u018b\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u017d\u0199\u0199 \u0175 \u0196 \u011d\u01ab\u01a6\u01a6 \u0182\u0179\u017e\u017e \u0183\u0183 \u01a2\u01a2 \u0152 \u015f\u0166\u0166\u01a3\u016b\u016b\u016b \u0185\u0185 ", - " \u01a7\u01a7\u01ac\u01ac\u01ac \u015d\u0143\u0144 \u01a4\u01a4\u01a4 \u01a4\u01a4 \u0113\u012a\u0162\u0162\u0162\u016d\u0198\u0198\u0198 \u01a9\u01ad\u01a9 \u01a9\u01a9\u01a9 \u01ae\u01ae\u01af\u01af\u0186\u0186\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u017d\u0199\u019a \u0175 \u0196\u00dc \u01b0\u0178\u01ab\u01a6\u0182\u017e\u017e \u0183\u0183 \u01a2\u01a2 \u0152 \u015f\u0166\u0166\u01b1\u01b1\u016b\u016b \u0185\u0185\u0185 ", - "\u01b2\u01b3 \u019d\u019d\u01ac \u01ac\u01ac\u01ac \u015d\u015d\u01b4\u01b5 \u019e\u01a4\u01a4\u01b6\u01b6\u01b6\u01b6 \u01a4\u01a4\u012a\u012a\u0162\u0162\u01b7\u0198\u0198 \u01b8\u01a9 \u01ad\u01ad \u01a9\u01ae\u01ae \u01af\u0186\u0186\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u017d\u0199 \u0175\u0175 \u0196\u00dc \u0178\u0178\u01b0\u01b9\u0182\u01a6\u01a6 \u0183\u0183 \u01a2\u01a2\u01a2\u01a2\u01a2 \u01ba\u0152\u015f\u015f\u0166\u01b1\u016a\u016b\u016b \u0185\u0185 ", - "\u01b3\u01b2\u01b2 \u01bb\u01bb \u01ac \u01bc\u01bd\u01b4\u019e\u01a4\u01a4\u01b6\u01b6 \u01b6 \u01be\u0113\u012a\u012a\u01bf\u0162\u01c0\u01b7\u01b7 \u01a9\u01b8\u01b8\u01b8 \u01ad\u01ad \u01a9 \u01af\u0186\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u0199\u0199 \u0175 \u01c1\u01c2\u01c3\u0178 \u0182\u0182\u017e\u01b0\u01ab\u01a6\u0183\u0183 \u01a2\u01a2\u01a2\u01a2 \u01a2\u01a2\u01a2 \u01ba\u0166\u0166\u01b1\u01b1\u016b \u0185\u0185 ", - "\u016c\u016c\u01c4\u01b2 \u01c5 \u01c6\u01ac \u01c7\u01c8\u01c9\u01a4\u01a4 \u01b6 \u01ca \u01cb\u01cc\u0113\u012a\u012a\u012b\u01bf\u01bf\u01c0\u01b7 \u01cd\u01cd \u01b8\u01b8 \u01ad\u01ad\u01ad\u01a9 \u01af\u0186\u0186\u019f\u019f\u01a0\u01a0\u016d\u017c\u017d\u0199\u019a \u0175\u0175 \u01c3\u01c2\u01c2\u01ce\u0182\u017e\u017e\u01b0\u01b9\u01ab\u01a6\u01a6 \u01a2\u01a2 \u01a2\u01a2\u0166\u0166\u0166\u016a\u01b1\u016b \u0185\u0185 ", - " \u016c\u016c \u01cf\u01c5 \u019d\u01c6\u01c6 \u01c7\u01d0\u01a4\u01d1\u01b6 \u01ca \u01ca\u01cb \u0113\u012a\u012b\u01bf\u01bf\u01c0\u01b7\u01b7 \u01d2\u01a9 \u01cd\u01cd \u01b8\u01b8 \u01ad\u01ad \u01af \u0186\u0187\u019f\u01a0\u01a0\u01d3\u01d3 \u0199 \u0175\u0175 \u01c3\u01c3\u01d4\u01c2\u01d5\u01d6\u017e \u0183\u0183\u01b0\u01d7\u01ab\u01d8 \u01a2\u01a2 \u01a2\u015f\u015f\u0166\u0166\u0184\u016b\u016b \u0185\u0185 ", - " \u016c \u01cf\u01cf\u019d\u019d\u01ac\u01ac \u01c7\u01d0 \u01d1\u01d1\u01d1\u01ca \u0113\u012a\u012b\u01bf\u01bf\u01c0\u01b7\u01b7\u01d9\u01d9\u01a9\u01a9\u01d2\u01d2 \u01cd\u01cd \u01b8\u01b8 \u01a9 \u01af \u0186\u0186\u019f\u01a0\u01d3\u01d3\u016d\u0199\u01da\u0175\u0175\u01c3\u01c3\u01d4\u01d5\u01d5\u01c2\u01d6 \u0183\u0183\u0183 \u01d7\u01db\u01d8\u01d8\u01a2\u01a2\u01a2\u01a2\u01a2 \u01a2\u015f\u01dc\u0166\u0166\u016a\u016b\u016b \u01dd\u01dd \u0185\u0185 ", - " \u016c \u01c5\u01de\u019d \u01ac \u01c7\u01d0\u01df\u01e0\u01df\u01d1\u01d1\u01d1 \u0113\u012a\u012a\u01bf\u01bf\u01bf\u01b7\u01b7 \u01d9\u01e1\u01e1 \u01d2\u01d2 \u01cd\u01cd \u01b8\u01b8\u01a9 \u01af \u0186\u019f\u01d3\u01d3\u016d\u016d\u01da\u01da\u0175\u01c3\u01d4\u01e2\u01d5\u01d5\u01e3\u01c2\u0183\u0183\u0183 \u01d7\u01db\u01d8\u01a2 \u01a2\u01dc\u0166\u0166\u0166\u01e4\u016b\u016b\u01ba \u01dd\u01dd \u01e5 ", - "\u01e6 \u016c \u01c5 \u01de\u01ac \u01c7\u01d0\u01df\u01e0\u01e7\u01df\u01df\u01d1\u01d1 \u0113\u012a\u012a\u012b\u01bf\u01bf\u01c0\u01e8 \u01e9 \u01ea\u01d9\u01e1\u01e1 \u01d2\u01d2 \u01cd\u01cd\u01a9\u01a9 \u01af \u01d3\u01d3\u01d3\u01a0\u01eb\u01eb\u0175\u01c3\u01ec\u01e2\u01ed\u01ee\u01ef\u01f0\u0183\u01c1\u0183 \u01d7\u01f1\u01db\u01d8\u01a2 \u01a2\u015f\u0166\u0166\u016a\u01e4\u01e4\u016b \u01f2 \u01f3\u01f3 \u01dd\u01dd\u01dd \u01e5 ", - "\u01e6\u01e6\u016c \u01c5 \u01ac\u01ac\u01ac \u01f4\u01f4\u01df\u01e0 \u01e7\u01f5\u01df\u01df\u01d1\u01d1\u012a\u012a\u012b\u01bf\u01bf\u01c0\u01e8\u01e8\u01f6\u01e9\u01e9\u01ea\u01d9\u01d9 \u01e1\u01e1 \u01d2\u01d2\u01a9\u01a9\u01cd\u01a9 \u01af\u01f7\u01f7\u01d3\u01d3\u01f8\u01f9\u0175\u01c3\u01ec\u01da\u01ed\u01ee\u01e3\u01f0\u0183\u0183\u0183\u01c2\u01c2 \u01f1\u01db\u01d8\u01d8 \u01a2\u015f\u0166\u0166\u016a\u016b\u016b\u016b \u01f2 \u01fa\u01f3\u01f3\u01f3 \u01fb\u01dd\u01dd \u01e5 ", - " \u01e6\u01e6 \u01c5\u01fc \u01ac \u01c7\u01f4\u01df\u01e0\u01e7\u01e7\u01f5\u01fd \u01df\u01d1\u012a\u012b\u01bf\u01bf\u01c0\u01e8\u01e8 \u01f6\u01ea\u01e9 \u01e8\u01d9 \u01a9\u01a9\u01e1\u01a9\u01a9\u01a9 \u01f7\u01f7\u01f7\u01f7\u01f7\u01fe\u0175\u01c3\u01ec\u01f9\u01da\u01da\u01f0\u01ef\u0183\u0183\u0183 \u01ff \u01d7\u01d7\u01db\u01d8\u01a2 \u01a2\u01a2\u015f\u0166\u0166\u016a\u016b\u016b \u01f2 \u01fa\u01fa\u01fb\u01fb\u01f3 \u01e5 ", - " \u01e6\u01e6 \u0200\u01fc\u01fc \u01ac \u01c7\u01c7\u01d0 \u0201\u01e7\u01f5\u01f5\u01fd\u01df \u012a\u012b\u01bf\u01bf\u01bf\u0172\u01e8\u01e8\u01e8 \u01f6\u01e8\u01e8\u01e8\u01d9\u01e8 \u0202\u0202\u01f7\u01f7\u01f7\u01f7 \u0175\u01c3\u01fe\u01ec\u01d5\u01d5\u01f0\u01da\u01ef\u0183\u0183 \u01ff\u0203 \u01d7\u01f1\u01db\u01d8\u0204\u015f\u0166\u0166\u016a\u016b\u016b \u01f2 \u01fa\u01fa \u01e5 ", - "\u0175 \u01e6\u01e6\u01e6 \u01fc\u01ac \u01c7\u01d0 \u0201 \u0205\u0206\u0207\u01df\u01df\u012a\u012a\u01bf\u01bf\u01bf\u0172\u0172 \u01e8\u01e8\u01e8\u01e8\u01e8\u01e8\u01e8\u01d9\u01d9 \u0202\u0202\u0202\u0202\u0202\u0208\u0208\u0208\u0208\u01f7 \u0175\u0175\u01c3\u01ec\u01d5\u01d5\u01e3\u01f9\u01ef\u01ef\u0183 \u0209\u0209 \u01ff\u0203 \u01d7\u01f1\u01db\u020a\u020b\u016a\u016b\u016b \u01f2 \u01dd\u01dd \u01e5 ", - "\u0175\u0175 \u020c\u01e6\u01e6\u01e6 \u01fc\u01fc\u01fc \u01c7\u01d0\u0201\u0201\u0205 \u0206\u020d\u01df\u012a\u012a\u012b\u01bf\u01bf\u01c0\u0172 \u01e8\u01e8\u01e8\u01e8\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0208\u0208\u0208\u0208\u0208\u0208\u0208 \u0175\u0175\u01c3\u01ec\u01d5\u01d5\u01fe\u01e3\u01f8\u01ef\u01f9\u01da\u020e \u0209\u0209\u020f \u01ff\u0203 \u0210\u0211\u020a\u020b\u0212\u0212\u016b \u01f2\u01dd \u01dd\u01dd \u01e5 ", - "\u01c3\u0175\u0175 \u0213\u0214\u01e6\u01e6\u0215\u0215 \u01fc\u01fc\u01fc \u01c7\u01d0\u0201\u0201\u0205 \u0206 \u020d\u012a\u012a\u012b\u01bf\u01bf\u01bf\u0172 \u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0216\u0202\u0202\u0202\u0202\u0202\u0202\u0208\u0208\u0208\u0208\u0208\u0208\u0208 \u0175\u0175\u01c3\u01ec\u01d5\u0179\u0179\u01e3 \u01fe\u01f8\u01f8\u0217\u0218\u020e\u0209\u0209 \u020f \u01ff\u0203 \u0210\u0210\u0211\u0219\u021a\u0212\u0212\u01db\u01d8 \u01f2 \u01dd\u01dd \u01e5 ", - "\u021b\u021b\u01c3\u0175\u0213 \u0214\u0214\u021c\u0215\u0215\u0215\u0215 \u01fc\u01fc\u01fc\u01c7\u01d0\u0201\u0205\u0205\u0206 \u020d \u012a\u012b\u01bf\u01bf\u01bf\u0172 \u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u021d\u0216\u0216 \u0208\u0208\u0208\u0208\u0208 \u0175\u0175\u01c3\u01ec\u01d5\u0179\u0179\u01e3 \u0183\u0183\u01fe\u021e\u021f\u021f\u0217\u020e\u020e \u01ff\u0203 \u0210\u0211\u0211\u0220\u0219\u0221\u0221\u0212\u01d7\u01f1\u01db\u01d8 \u01f2 \u0222\u0222\u0222 \u01e5 ", - "\u0223\u021b\u021b\u01c3\u0175\u0175 \u0214\u0214 \u021c\u0215\u0215\u0215\u0215 \u01c7\u01fc\u020d\u020d\u0205\u0206\u0206\u020d \u012a\u012a\u01bf\u01bf\u01bf\u0172\u0202\u0202\u0202\u0202\u0202\u0224\u0225\u0225\u0226\u021d\u021d\u021d\u0216\u0216 \u0208\u0208\u0208\u0208\u0208 \u0175\u0175\u01c3\u01ec\u0227\u0179\u01d5\u01e3 \u0183\u0183 \u021e\u021f\u021f\u0217\u0217\u020e\u019a \u01ff\u0203 \u0210\u0211\u0211\u0220\u0221\u0221\u0221\u0228\u0228\u0228 \u01f1\u01f1\u01db\u01d8 \u01f2 \u0229 \u0222\u0222\u0222\u0222\u0222\u0222\u0222\u0222\u0222\u0222 ", - "\u022a\u0223\u021b\u0213\u0213\u0175\u0175 \u0214\u0214\u022b\u021c\u021c\u0215\u0215\u0215\u0215 \u020d\u0206\u020d \u012a\u012a\u012b\u01bf\u01bf\u01c0\u0202\u0202\u0202\u0202\u0202\u022c\u0224 \u021d\u021d\u021d\u022d\u022e \u0216\u0216\u0208\u0208\u0208 \u0175\u01c3\u01c3\u01ec\u0227\u01d5\u0179\u01e3 \u0183\u0183 \u021e\u021e\u021f\u021f\u0217\u020e\u020e \u01ff\u0203 \u0210\u0211\u0211\u0220\u0221\u0221\u0221 \u022f \u0228 \u01d7\u01f1\u01db\u01d8 \u01f2 \u0229 \u01e5\u0230\u0230\u0230\u0230\u0230 ", - " \u022a\u022a\u0223\u021b\u0213\u01c3\u0175\u0175 \u0231 \u021c\u021c\u0215\u0215\u0215\u0215 \u020d\u012a\u012a\u012b\u01bf\u01bf\u01bf\u0202\u0202\u0202\u0232\u0233\u0233\u022c\u021d\u021d\u0225\u0225\u0226 \u022d\u022e \u0216\u0216\u0208 \u0175\u01c3\u01c3\u01ec\u01ec\u01d5\u0179\u01e3\u01e3\u0183\u0183 \u021e\u021f\u021f\u0217\u0217\u020e\u019a \u01ff\u0234\u0211\u0211\u0220\u0221\u0221\u0221 \u0235\u022f \u0228 \u01f1\u01f1\u01db\u01d8 \u01f2 \u0229 \u01e5 \u0230\u0230\u0230\u0230\u0230\u0230 ", - "\u0236\u0236 \u022a\u0223\u021b\u021b \u01c3\u0175\u0231\u0231 \u021c\u021c\u0215\u0215\u0215\u0215\u012a\u012b\u01bf\u01bf\u01bf\u0202\u0202\u0202 \u0232 \u021d\u021d\u022c\u0224 \u0225\u0226\u0226\u022d\u022e\u0237 \u0175\u01c3\u01c3\u01ec\u01ec\u01d5\u01d5\u0179\u01e3\u0183\u0183 \u021e\u021e\u021f\u021f\u0217\u020e\u020e\u0238\u0239\u0239\u023a\u023a\u0220\u0221\u0221\u0221 \u023b \u0235 \u022f \u023c\u023c\u0228 \u01d7\u01f1\u01db\u01d8 \u01f2 \u0229 \u01e5 ", - " \u0236\u0236 \u022a\u0223\u021b\u021b\u0231\u01c3\u0175\u0175\u0175 \u021c\u021c\u021c\u0215\u0215\u01bf\u01bf\u01bf\u0202\u0202\u0202 \u023d\u021d\u021d\u0233 \u022c \u0224\u0225 \u0226\u0237 \u0175\u01c3\u01c3\u01ec\u01ec\u01d5\u01d5\u01e3\u01e3\u0183\u0183 \u023e\u021e\u021f\u021f\u0217\u0217\u0238\u0238\u023f\u0240\u0241\u0242\u0221\u0221 \u023b\u023b \u0235 \u0243\u022f\u023c \u0228\u0228 \u01f1\u01f1\u01db\u01d8 \u01f2 \u0229 \u01e5 ", - " \u0236\u0236 \u022a\u0223\u021b\u021b \u01c3\u01c3\u0175\u0175 \u021c\u012a \u0244\u0244\u0202\u0202\u0202 \u023d\u0232 \u0233\u022c\u022c\u0224\u0237\u0225 \u0175\u0175\u01c3\u01ec\u01ec \u01e3\u01e3\u01e3\u0183\u0183 \u023e\u023e\u023e \u021e\u0238\u021f\u0238\u0238\u023f\u023f\u023f\u0245\u0246\u0247 \u023b\u023b \u0235 \u0248\u0243\u0243 \u0228 \u01d7\u01f1\u01db\u01d8 \u01f2 \u0229 \u01e5 ", - "\u0249\u0249\u0249\u0249\u0249\u0236\u0236 \u0231\u0223\u021b\u021b\u021b\u01c3\u01c3\u0175\u0175\u0175 \u024a \u0244\u0244\u0172\u0202\u0202 \u023d \u0232\u0233 \u022c\u0237 \u0175\u0175\u01c3\u01ec\u01ec\u01ec\u01e3\u01e3\u01e3\u0183\u0183 \u023e\u023e\u024b \u024c\u024c\u0238\u0238\u023f\u023f\u023f\u024d\u024d\u024e\u0203 \u023b\u023b \u0248 \u024f\u024f \u0250\u0251 \u01d7\u01f1\u01db\u01d8 \u01f2 \u0229 \u01e5 ", - " \u0236\u0236\u0252 \u022a\u022a\u0223\u021b\u021b\u021b\u01c3\u0175\u0175\u0175\u0253\u0254\u0244\u0244\u0202\u0202 \u023d\u0232\u0237\u0233 \u0175\u0175\u01c3\u01ec\u01ec\u01ec\u01e3\u01e3 \u0183\u0183\u0183 \u0255\u0255\u0255\u0255\u0255\u0256\u0256\u024c \u023f\u023f\u0257\u024d\u024d\u0258\u020e\u01ff\u0203 \u023b \u0235 \u0259\u0250 \u0251 \u01d7\u01f1\u01db\u01d8 \u01f2\u01f2 \u0229 \u01e5 ", - "\u025a \u025b\u025b\u025b \u025c\u025d\u025d\u025d \u022a\u022a\u0223\u0223\u021b\u0253\u01c3\u0175\u0254\u025e\u025e\u025f\u0202 \u0260\u0260 \u023d\u0237 \u0175\u0175\u01c3\u01ec\u01ec\u01ec\u01e3\u01e3 \u0183\u0183\u0183 \u0255\u0255\u0255\u0255\u0255\u0255 \u024b\u024b\u0256 \u0223\u0223\u0261\u024d\u0262\u0258\u0258\u0217\u020e\u0263\u0264\u023b \u0259\u0259\u0259\u0259\u0259\u024f \u0251 \u01d7\u01f1\u01db\u01d8 \u01f2 \u0229\u0229 \u01e5 ", - "\u025a\u025a\u025b\u025b\u025b \u025c\u0265 \u025d\u025d\u025d \u022a\u022a\u0223\u0223\u0254\u021b\u021b\u01c3\u0175 \u0260\u0260\u0260\u0260 \u0175\u0175\u0175\u01c3\u01ec\u01ec\u01ec\u01e3\u01e3 \u0183\u0183\u0183 \u0255\u0255\u0255\u0255 \u024b\u0223\u0223\u0223\u0266\u0267\u0268\u0262\u0262\u0258\u021f\u0217\u0269\u0263\u020e\u026a \u024f \u0251\u0251 \u01f1 \u01d8\u01d8 \u01f2 \u0229\u0229 \u01e5 ", - " \u026b\u025a \u025c\u026c \u026d\u026e \u0253\u0253\u0254\u025e\u022a\u022a\u0223\u0183\u01c3\u0175\u0175\u01c3\u0175\u0175\u0175\u0175\u01c3\u0175\u01c3\u01c3\u01ec\u01ec\u01e3\u01e3\u01e3 \u0183\u0183\u0183 \u0255\u0255\u0255\u0255 \u0223\u0223\u0223\u0223\u0266\u0266\u026f\u0267\u0270\u0271\u0258\u021e\u021f\u021f\u0217\u0263\u0264\u020e\u026a\u026a\u026a\u026a \u0272\u0272\u0272\u0272\u0272 \u0273 \u0251\u0251 \u01d7\u01d7 \u01d8\u01d8\u01f2\u01f2 \u0229 \u01e5 ", - "\u026b \u025a\u025a \u0265\u0265\u026c \u0274 \u0275\u0275\u0254\u025e\u025e\u025e\u025f\u022a\u022a\u0223\u0223\u0183\u0183\u0183 \u01ec\u01ec\u0276\u01e3\u01e3\u0183\u0183\u0183 \u0255\u0255\u0255 \u0223\u0223\u0223\u0223\u0266\u0266\u0266\u0266\u0277\u0277\u0267\u0278\u0271\u0279 \u021e\u021e\u021f\u021f\u0263\u0264\u020e\u020e\u026a \u0272\u0272\u0272\u0272\u0272 \u0272\u0272\u0272\u0272\u0272\u0272 \u0251\u0251 \u01d7\u01f1 \u01d8 \u01f2 \u0229 \u01e5 ", - "\u026b \u025a\u025a \u0265 \u026c \u0274 \u0275\u0275\u027a\u027a\u025e\u025e\u025f\u025f \u022a\u022a\u0223\u0183\u0183\u0183\u0183\u0183\u0183\u0183\u0183\u0183\u0183\u027b\u027b\u027b\u0255\u0255 \u0223\u0223\u0223\u0223\u0223\u0223\u022a\u0266\u0266\u0266 \u0277\u027c\u0267\u0270\u027d\u0271\u027e \u027f\u021e\u021e\u021f\u0264\u0217\u0269\u020e\u020e \u0272\u0272\u0272 \u0280\u0280\u0280\u0280\u0280\u0280\u0280\u0280\u0280 \u0273 \u0272\u0272\u0272 \u01d7\u01d7\u01db\u01d8\u01f2\u01f2 \u0229 \u01e5 \u0281", - " \u025a\u025a\u0265 \u026c \u0274 \u0275\u0275\u027a\u027a\u0282\u0282\u025f\u025f\u0283 \u0284\u0285\u022a\u022a\u0223\u0223\u0223\u0223\u0223\u027b\u027b\u0223\u0223\u0223\u0223\u0223\u0223\u0223\u0223\u0223\u022a\u0266\u0266\u0266\u0266\u0266\u0266 \u0286\u0286\u0277\u027c\u027c\u0270\u027d\u027e\u0287\u0279 \u027f \u021e\u0263\u0264\u0217\u0217\u0269\u0288\u0272\u0289\u028a\u028b\u028b\u0280 \u0280\u0280\u0280\u0280 \u0272\u0272 \u01d7\u01f1\u01db\u01d8\u01f2 \u0229\u0229 \u01e5 \u0281\u0281\u0281\u0281\u0281", - " \u028c\u025a \u026c \u0274 \u0275\u027a\u027a\u0282\u0282\u028d\u028d \u0283 \u0284\u0284\u028e\u028e\u028e \u028f\u028f\u027b\u027b\u027b\u022a\u022a\u0266\u0266\u0266\u0266\u0266\u0266\u0266\u0266 \u0286\u0290\u0291\u0277\u027c\u0267\u0278\u027d\u027e\u0287\u0279 \u027f \u0263\u0264\u021f\u021f\u0288\u0292\u0292\u0289\u0293 \u028b \u0280\u0280\u0280 \u0272\u0272 \u01d7\u01f1\u01db\u01d8\u01f2 \u0229\u0229 \u01e5 \u0281\u0281\u0281\u0281\u0281\u0281\u0294\u0294\u0294", - " \u028c \u025a\u025a \u0274 \u0275\u0275\u027a\u0282\u0282\u0282\u028d \u0283 \u0284\u0284\u028e\u028e \u028f\u028f\u028f \u0266\u0266\u0266\u0266\u0266\u0266 \u0286\u0290\u0290\u0290\u0291\u027c\u0270\u0270\u027d\u027e\u0287\u0279\u027f\u027f \u0263\u0264\u021e\u0292\u0292\u0289\u0289\u020e\u020e\u0295\u0296 \u0280\u0280\u0280 \u0272 \u01f1\u01f1\u01db\u01f2\u01f2 \u0229\u0229\u01e5\u01e5 \u0281\u0281\u0281\u0281\u0281\u0281\u0294\u0294\u0294\u0294\u0294\u0294 ", - " \u028c\u028c \u025a\u025a \u0275\u0275\u027a\u0282\u0282\u0282\u028d \u0283\u0284\u0284\u028e\u028e \u028f\u0266\u0266\u0266\u0266\u0266 \u0286\u0290\u0290\u0290\u0291\u027c\u027c\u0267\u0278\u027d\u027e\u0287\u0279\u027f\u027f \u0297\u0298\u0288\u0292\u0292\u0289\u021f\u0217\u0269\u020e\u0295\u0296 \u0280\u0280 \u0272\u0272\u01d7\u01f1\u01db\u01f2 \u0229\u0229 \u0281\u0281\u0281\u0281\u0281\u0281\u0294\u0294\u0294\u0294\u0294\u0294 ", - " \u028c\u028c \u0299\u0299\u025a\u0275\u0275\u027a\u027a\u0282\u0282\u028d\u028d \u0284\u028e\u028e \u028f\u028f\u0266\u0266\u0266 \u0290\u0290\u0291\u0291\u027c\u027c\u029a\u0271\u027d\u0287\u0287 \u027f\u027f \u0297\u0298\u029b\u029b\u0289\u0289\u021f\u021f\u021f\u0217\u020e\u020e\u0295\u0296\u0296\u0296\u0296 \u0280 \u0272\u0272\u01d7 \u01db\u01f2 \u01e5 \u0281\u0281\u029c\u0281\u0281\u0281\u0294\u0294\u0294\u0294\u0294\u0294 ", - " \u028c \u0299\u0299 \u029d\u029d\u027a\u027a\u0282\u0282\u029e\u029e \u0284\u0284\u028e\u029f \u028f\u0266\u0266\u0266 \u02a0\u02a1\u0291\u0291\u027c\u027c\u0270\u0271\u027d\u0287\u0287 \u027f\u027f \u0297\u029b\u029b\u0289\u02a2\u02a3\u021e\u021f\u021f\u021f\u0217\u020e \u0296\u0296\u0296\u0296\u0296\u0296\u0296 \u0280\u0280 \u0272\u01d7\u01d7\u01db\u02a4\u01f2 \u01e5\u01e5 \u02a5\u02a5\u02a5\u02a5\u0281\u0294\u0294\u0294\u0294\u0294\u0294 ", - " \u028c \u0299\u0299 \u029d\u027a\u027a\u0282\u0282\u029e\u029e \u0284\u0284\u028e \u02a6\u02a7\u0266\u0266 \u02a0\u02a1\u0291 \u027c\u0267\u029a\u0271\u027d\u0287\u0287 \u027f \u0297\u029b\u029b\u02a8 \u02a3\u02a3\u021e\u021e\u021f\u021f\u0217\u0217\u020e \u02a9 \u0296\u0296\u0296\u0296\u0296\u0296\u0296 \u0280\u0280 \u0272\u01d7\u01db\u01f2\u01f2 \u02aa\u02a5\u02a5\u02a5\u02ab\u02ab\u02ab\u02ac\u02ac\u0294 ", - " \u028c \u0299\u029d\u029d\u027a\u0282\u0282\u0282\u029e \u0284\u0284\u028e \u02ad\u02ae\u02ae\u02ae \u02a0\u02a1\u0291 \u027c\u0267\u0270\u0271\u027e\u0287\u0279\u027f\u027f \u0297\u029b\u029b \u02af\u02a3 \u021e\u02b0\u021f\u021f\u0217\u020e \u02a9 \u02b1\u0296\u0296\u0296\u0296\u0296\u0296\u0280\u0280 \u01d7\u01f1\u01db\u02a4 \u02aa\u02aa\u02aa\u02aa\u02ab\u02ab\u02ab\u02ab\u02ab\u02b2\u02b2 ", - "\u028c\u028c \u029d\u029d\u027a\u027a\u0282\u0282\u029e \u0284\u028e \u02b3\u02b3 \u02ae\u02a6 \u02a1\u0291\u0291\u02a6\u027c\u0270\u0278\u0271\u027e\u0287\u0279\u027f\u027f \u0297\u029b \u02af\u02af \u021e\u021e\u021f\u021f\u0217\u0217\u020e \u02a9 \u02b1 \u0280\u0280 \u0272\u02b4\u02b5\u02b6\u01f2\u02b7\u02b7\u02aa\u02ab\u02ab\u02ab \u02b2\u02b2 ", - "\u028c \u029d\u029d\u027a\u027a\u0282\u0282\u029e\u02b8 \u02b9\u02ba \u02ad\u02b3\u02b3 \u02a6 \u02a0\u02a1\u0291\u0291\u027c\u027c\u0267\u0270\u027d\u027e\u0287\u0279\u027f\u027f \u0297\u0297\u029b \u02af\u02af\u02a3 \u021e\u021e\u021f\u021f\u0217\u020e\u02bb \u02a9 \u02b1 \u0280 \u0272\u02b4\u02b5\u02bc\u02bc\u02bc\u02bd \u02b2\u02b2\u02b2\u02b2 ", - " \u029d\u027a\u027a\u0282\u0282\u029e\u02b8\u02b8 \u02b9\u02ba \u02ad\u02ad \u02be\u02a6 \u02a0\u02a1\u0291\u0291\u027c\u0267\u0270\u0278\u027d\u0287\u0287\u0279\u027f\u027f \u0297\u0297\u029b \u02af\u02af \u02a3 \u02b0\u021e\u021f\u021f\u0217\u0217\u02bf \u02a9\u02a9 \u02b1 \u0280 \u02b7\u02b7\u0272\u02b4\u02bc\u01d8\u01d8\u02c0\u02c0 \u02b2\u02b2\u02b2\u02b2\u02b2 ", - " \u029d\u029d\u027a\u0282\u0282\u029e\u02b8\u02b8 \u02b9\u02b9 \u02b3\u02b3 \u02be\u02be \u02a6 \u02a0\u02a1\u0291\u02a6\u027c\u027c\u029a\u0278\u027d\u0287\u0287 \u027f \u0297\u0297\u029b \u02af\u02af \u02a3 \u021e\u02c1\u021f\u021f\u0217\u02bf\u02bb \u02a9 \u02b1 \u02c2\u02b7\u02bc\u02bc\u0272\u02b4\u02b6\u01d8\u01d8 \u02b2\u02b2\u02b2\u02b2\u02b2 ", - " \u029d\u029d\u027a\u0282\u0282\u0282\u029e\u02b8 \u02c3\u02c4 \u02ad\u02b3 \u02be\u02be \u02a6 \u02a0\u02a1\u0291\u02a6\u027c\u0267\u0270\u0271\u027d\u0287\u0287\u027f\u027f \u0297\u029b\u029b \u02af\u02af \u02a3 \u02c1\u021f\u021f\u0217\u0217\u02bb \u02a9 \u02b1 \u02c2\u02c2\u02c2\u02c5\u02bc \u0272\u02b4\u02b6\u01d8\u01d8 \u02c6\u02c7 \u02b2\u02b2\u02b2\u02b2\u02b2 ", - " \u029d\u029d\u027a\u0282\u0282\u0282\u029e\u02b8 \u02c4 \u02ad\u02b3 \u02be\u02be \u02a6\u02a6 \u02a0\u02a1\u0291\u02a6\u027c\u0270\u0270\u0271\u027e\u0287\u0279\u027f\u027f \u0297\u0297\u029b \u02af\u02af \u02a3\u02a3 \u02c1\u02c1\u021f\u021f\u0217\u02bf \u02a9 \u02b1 \u02c2\u02c2\u02c5\u02c5 \u02b4\u02b5\u02b6\u01d8\u01d8 \u02c7\u02c7 \u02b2\u02b2\u02b2\u02b2 ", - " \u029d\u027a\u027a\u0282\u0282\u029e\u02b8 \u02c3\u02c4\u02ad\u02b3 \u02be \u02a6\u02a6 \u02c8\u02c8 \u02a0\u02a1\u0291\u0291\u027c\u027c\u0267\u029a\u027d\u027e\u0287\u0279\u027f\u027f \u0297\u0297\u029b \u02af\u02af \u02a3 \u02c1\u021f\u021f\u0217\u02bf \u02a9 \u02b1 \u02c2\u02c2\u02c2\u02c5\u02c5 \u02b4\u02b4\u02b6\u01d8\u01d8 \u02c7 \u02b2\u02b2\u02b2\u02b2 ", - " \u029d\u029d\u027a\u0282\u0282\u029e\u02b8\u02b8 \u02c3\u02c4\u02ad\u02b3 \u02be \u02a6\u02c8\u02c8 \u02a0\u02a1\u0291\u0291\u027c\u0267\u0270\u0278\u027d\u027e\u0287\u0279\u027f\u027f \u0297\u029b\u029b \u02af\u02af \u02c9\u02c9\u02c9\u02c9\u02c9 \u02c1\u021f\u021f\u0217 \u02a9 \u02b1 \u02c2\u02c2\u02c2\u02c5\u02c5 \u0272\u02b5\u02b6\u01d8 \u02c7 \u02b2\u02b2\u02b2\u02b2", - "\u02ca\u02ca \u029d\u029d\u027a\u0282\u0282\u029e\u029e\u02b8 \u02c3\u02c4\u02ad\u02b3 \u02be \u02a6 \u02a0\u02a1\u0291\u0291\u027c\u027c\u0267\u0278\u027d\u027e\u0287\u0279\u027f \u0297\u029b \u02af \u02c9\u02c9 \u02c9\u02c9 \u02c1\u021f\u021f\u0217\u02bb \u02a9\u02a9\u02a9\u02a9\u02a9\u02a9\u02a9 \u02b1 \u02c2\u02c2\u02cb\u02c5\u02cc \u0272\u02b4\u02b6\u02b6\u01d8 \u02c7 \u02b2", - " \u02ca\u029d\u029d\u027a\u0282\u0282\u0282\u029e\u02b8 \u02c4 \u02b3 \u02be\u02be \u02a6\u02a6 \u02a0\u02a1\u0291\u02a6\u027c\u0267\u029a\u0271\u027d\u0287\u0287\u0279\u027f \u0297\u0297\u029b \u02af\u02cd \u02c9\u02c9\u02c9 \u02c9 \u02c1\u021f\u02bf\u02bf \u02a9\u02a9\u02a9\u02a9\u02a9\u02c2\u02c2\u02c2\u02cb\u02cb \u02cc\u02cc \u0272\u02b5\u02b5 \u01d8 \u02c7 ", - " \u029d\u029d\u027a\u027a\u0282\u0282\u029e\u02b8 \u02c3\u02c4\u02b3\u02b3 \u02be\u02be \u02a6\u02a6\u02a6\u02a0\u02a1\u0291\u02a6\u027c\u0267\u0270\u0271\u027e\u0287\u0287\u027f\u027f \u0297\u0297 \u02ce\u02ce \u02cf\u02cf\u02c9\u02c9 \u02c9 \u02c1\u02c1\u02bf\u02d0 \u02d1\u02d1\u02c2\u02cb\u02cb \u02d2\u02cc\u02d3\u02d3 \u0272\u02b4\u02b6 \u01d8 \u02c7\u02c7 ", - " \u029d\u029d\u027a\u0282\u0282\u029e\u02b8\u02b8 \u02c4\u02c4\u02ad\u02b3 \u02be\u02be \u02a0\u0291\u0291\u02a6\u027c\u0267\u029a\u0271\u027d\u0287\u0287\u027f\u027f \u0297\u02d4 \u02ce \u02cf \u02c9 \u02c9\u02d5\u02d5\u02bf \u02d1\u02d1\u02d6\u02d6 \u02d2\u02d2\u02d2 \u02cc \u02d3 \u0272\u02b5\u02b6\u01d8\u01d8 \u02c7\u02c7 ", - "\u029d\u029d\u027a\u0282\u0282\u029e\u029e\u02b8 \u02c3\u02c4\u02ad\u02b3 \u02be\u02be \u02a1\u0291\u0291\u027c\u027c\u02d7\u0270\u0271\u027e\u0287\u0279\u027f\u027f \u0297\u02d8\u02d4 \u02ce \u02c9\u02c9 \u02c9\u02c9\u02c9\u02c1\u02c1\u02bf\u02bb \u02d1\u02d1\u02cb\u02cb\u02d9 \u02cc\u02d3\u02d3 \u02b4\u02b4\u02b6\u01d8\u01d8 \u02c7 ", - "\u029d\u027a\u0282\u0282\u0282\u029e\u02b8 \u02c4\u02ad\u02b3 \u02be\u02be \u02a1\u0291\u0291\u027c\u027c\u02d7\u0278\u027d\u027e\u0287\u0279\u027f\u027f \u0297\u0297\u02d4 \u02da\u02da\u02ce \u02c9\u02c9\u02c9 \u02db\u02c1\u02c1\u02bf \u02d1\u02d1\u02cb\u02cb \u02d9 \u02cc\u02cc\u02d3\u02d3 \u0272\u02b5\u02b6\u01d8 \u02c7 ", - "\u027a\u0282\u0282\u0282\u029e\u02b8 \u02c3\u02c4\u02b3 \u02be\u02be \u02a6\u02a1\u0291\u0291\u027c\u027c\u02d7\u02dc\u02dd\u027e\u0287\u0279\u027f \u0297\u02d4 \u02da\u02da\u02ce \u02db\u02c1\u02bf\u02bf \u02d1\u02d1\u02cb\u02cb \u02d9 \u02cc\u02cc\u02d3 \u02b4\u02b6\u02b6\u01d8 \u02c7 ", - "\u027a\u0282\u0282\u029e\u02b8\u02b8 \u02c4\u02c4\u02ad\u02b3 \u02be \u02a6\u02a6\u02a1\u02a1\u0291\u02de\u027c\u02df\u02e0\u02dd\u02e1\u0287\u0279\u027f \u0297\u0297\u02d4 \u02da\u02da \u02ce \u02db\u02c1\u02c1\u02bf\u02bb \u02d1\u02d1\u02cb\u02cb \u02d9 \u02cc \u02d3 \u02b5\u02b6 \u01d8 \u02c7\u02c7 ", - "\u0282\u0282\u029e\u02b8\u02b8 \u02c3\u02c4\u02b3\u02b3 \u02be \u02a6\u02a6 \u02a1\u0291\u0291\u02de\u027c\u02dc\u02e0\u02e1\u02e2\u02e3\u027f\u027f \u0297\u0297\u02d4 \u02da \u02ce\u02ce \u02db\u02c1\u02c1\u02bf\u02bb\u02bb\u02d1\u02d1\u02cb\u02cb \u02d9 \u02cc \u02d3 \u02b4\u02b4\u02b6\u01d8\u01d8 \u02c7\u02c7 ", - "\u0282\u029e\u029e\u02b8 \u02c3\u02c4\u02ad\u02b3 \u02be \u02a6 \u02a1\u0291\u0291\u02de\u027c\u02dc\u02e0\u02e1\u02e3\u02e3\u027f\u027f \u0297\u0297\u02d4 \u02da \u02ce \u02db\u02db\u02c1\u02c1\u02bf\u02bf\u02d1\u02d1\u02cb\u02cb\u02e4\u02e4\u02e5 \u02d9 \u02cc \u02d3 \u02b4\u02b5\u02e6\u01d8\u01d8 ", - "\u0282\u029e\u02b8 \u02c3\u02c4\u02b3 \u02be\u02be \u02a6 \u02a1\u0291\u0291\u02de\u027c\u02e0\u02dd\u02e1\u02e3 \u027f\u027f \u0297\u0297\u02d4 \u02da\u02da \u02ce \u02db\u02db\u02c1\u02d0\u02e7\u02d1\u02e8\u02cb \u02e5\u02e5\u02e5\u02d9\u02d9\u02d9\u02d9\u02d9 \u02cc\u02cc\u02e9\u02d3 \u02b4\u02b5\u02b6\u01d8 ", - "\u029e\u02b8 \u02c4\u02c4\u02ad \u02be\u02be \u02a6\u02a1\u0291\u02de\u02de\u027c\u02dd\u02e0\u02e3\u02e3 \u027f\u027f \u0297\u02ea\u0297 \u02da\u02da \u02ce \u02eb \u02db\u02c1\u02c1\u02e7\u02d0\u02e8\u02cb \u02d9\u02d9\u02d9\u02d9\u02d9\u02d9\u02d9\u02cc\u02cc\u02e9\u02d3 \u02ec\u02b5\u02ed\u01d8 ", - "\u02b8\u02b8 \u02c3\u02c4\u02b3\u02b3 \u02be\u02be \u02a6\u02a6\u02de\u02de\u027c \u02dd\u02e2\u02e2 \u027f\u027f \u0297\u02ea\u02d4 \u02da\u02da \u02ce\u02ce \u02eb\u02eb \u02db\u02ee\u02ee\u02d0\u02ef\u02cb \u02d9\u02cc\u02e9\u02e9\u02d3 \u02b4\u02b6\u02e6\u01d8 ", - "\u02b8 \u02c3\u02c4\u02ad\u02b3 \u02de\u027c\u027c \u02e1\u02e2 \u027f\u027f \u02ea\u02ea\u02d4 \u02da\u02da \u02ce\u02ce \u02eb \u02f0\u02ee\u02ee\u02ee\u02d0\u02d0\u02f1 \u02f2\u02cc\u02e9\u02d3\u02d3 \u02b4\u02ec\u02ed\u02ed\u01d8 ", - " \u02c3\u02ad\u02b3 \u02de\u027c\u027c \u02e1\u02f3 \u027f\u027f\u0297\u0297\u02d4 \u02da \u02ce\u02ce \u02eb \u02f0\u02f0\u02f4\u02f5\u02f5\u02db\u02f1\u02f1\u02f1\u02f1 \u02f2 \u02cc\u02e9\u02d3\u02d3 \u02f6\u02f6 \u02b4\u02ec\u02b6\u01d8\u01d8 ", - " \u02c4\u02c4\u02ad \u02de\u027c\u02f7\u02f3\u02e1 \u027f\u0297\u0297\u02d4 \u02da\u02da \u02ce\u02ce \u02eb \u02f0\u02f0\u02f5\u02f5\u02f8\u02f9\u02f9\u02f1\u02f1\u02f1\u02f1\u02f1\u02f1 \u02f2 \u02cc\u02cc\u02e9\u02d3\u02d3\u02f6\u02f6 \u02ec\u02b5\u02ed\u01d8\u01d8 ", - " \u02c3\u02c4\u02b3 \u02de\u02de\u027c\u02f7\u02fa\u02f3\u027f\u027f\u0297\u0297\u0297 \u02da\u02da \u02ce \u02eb \u02fb\u02f0\u02f0\u02f5 \u02f8\u02f9\u02f9\u02f9\u02f1\u02f1\u02f1\u02f1\u02f1\u02f1\u02f1\u02f1\u02f1\u02f1\u02f1\u02f1\u02f1\u02fc\u02f1 \u02fd\u02e9\u02e9\u02f6\u02f6 \u02b4\u02b5\u02e6\u01d8\u01d8 ", - "\u02c3\u02c4\u02ad\u02b3 \u02de\u02de\u027c\u02f7\u02fa\u02fe\u02ff\u02ff\u0297\u0297\u02d4 \u02da\u02da \u02ce\u02ce \u02eb \u0300\u02fb\u02f0\u02f5\u02f5 \u02f8\u02f9\u02f9\u02f9\u02f9\u02f1\u02f1\u02f1\u02f1\u02f1\u02f1\u02f1\u02f1\u02f1\u02fc\u02fc\u02f1\u02f1\u02f1\u02f1\u02f1\u02f1\u02fd\u02e9\u02e9\u02d3 \u02b4\u02b4\u02b6\u02e6\u01d8\u01d8 ", - "\u02c3\u02b3\u02b3 \u02de\u027c\u027c\u02fa\u02fa\u02fe\u02ff\u0297\u0297\u02d4 \u02da\u02da \u02ce\u02ce \u02eb \u02fb\u02fb\u02fb\u02f0\u02f5 \u02f8\u02f8\u02f9\u02f9\u02f9\u02f9\u02f9\u02f9\u02f9\u02f9\u02f9\u02f9\u02f9\u02fc\u02f9\u02f9\u02f1\u02f1\u02f1\u02f1\u02f1\u02fd\u02f1\u02e9\u02e9\u02d3 \u02b4\u02b4\u02b6\u02e6\u01d8 ", - "\u02ad\u02b3 \u02de\u027c \u02fa\u02fa\u02fe\u02ff\u0297\u0297 \u02da \u02ce\u02ce \u0300 \u02f5\u02f5 \u02f8\u02f8\u02f8\u02f8\u02f9\u02f8\u02f8\u02f8\u02f8\u02f8\u02fc\u02f9\u02f9\u02f9\u02f9\u02f9\u02f9\u02f9\u02f1\u02f1\u02fd\u02f1\u02f1\u02e9\u02d3 \u02b4\u02b5\u02b6 \u01d8 ", - "\u02b3 \u02de\u02de\u027c \u02fe\u02fe\u02ff\u0297\u02d4 \u02ce\u02ce \u02f9\u02f9\u02f9\u02fd\u02f1\u02f1\u02f1\u02d3\u02d3 \u02b4\u02b5\u02b6 \u01d8 ", - "\u02b3 \u02de\u02de\u027c \u02fe\u02fe\u02ff\u0297\u02d4 \u02ce \u02fd\u02f9\u02f1\u02f1\u02f1\u02f1\u02d3 \u02b4\u02b6\u02b6\u01d8\u01d8 ", - " \u02de\u027c\u027c \u02fe\u02fe\u0297\u0297\u02d4 \u02ce\u02ce \u02f9\u02f9\u02f9\u02f1\u02f1\u02f1\u02d3 \u02b4\u02b4\u02b6\u02b6\u01d8\u01d8 ", - " \u02de\u02de\u027c \u02fe\u02fe\u0297\u0297 \u02ce\u02ce \u02f9\u02f9\u02f1\u02f1\u02f1\u02d3 \u02b4\u02b5\u02b6\u02b6\u01d8 ", - " \u02de\u02de\u027c \u02fe\u02ff\u0297\u02d4 \u02ce\u02ce \u02f9\u02f9\u02f1\u02f1\u02f1\u02d3 \u02b4\u02b5\u02b6 \u01d8 ", - " \u02de\u027c \u02fe\u02ff\u0297\u02d4 \u02ce\u02ce \u02f9\u02f9\u02f1\u02f1\u02f1\u02d3 \u02b4\u02b5\u02b6 \u01d8 ", - " \u02de \u02fe\u02fe\u02ff\u0297\u02d4 \u02f9\u02f1\u02f1\u02f1\u02d3 \u02b4 \u02b6\u01d8\u01d8 ", - " \u02fe\u02fe\u0297\u0297\u02d4 \u02f9\u02f1\u02f1\u02f1\u02d3 \u02b4\u02b5\u02b6\u02b6\u01d8 ", - " \u02fe\u02fe\u0297\u0297\u02d4 \u02f9\u02f1\u02f1\u02f1\u02d3 \u02b4\u02b5\u02b6 \u01d8 " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/road-casings-non-grouped-rendering-600-600-2.0-grid-reference.json b/tests/visual_tests/grids/road-casings-non-grouped-rendering-600-600-2.0-grid-reference.json deleted file mode 100644 index fd52148a6..000000000 --- a/tests/visual_tests/grids/road-casings-non-grouped-rendering-600-600-2.0-grid-reference.json +++ /dev/null @@ -1,856 +0,0 @@ -{ - "keys": [ - "", - "330", - "155", - "74", - "57", - "788", - "774", - "201", - "202", - "181", - "228", - "691", - "523", - "73", - "749", - "530", - "385", - "384", - "286", - "1", - "156", - "531", - "361", - "45", - "43", - "93", - "46", - "527", - "589", - "288", - "215", - "605", - "138", - "532", - "588", - "154", - "362", - "348", - "328", - "639", - "635", - "637", - "638", - "529", - "497", - "576", - "300", - "329", - "237", - "636", - "600", - "103", - "534", - "595", - "137", - "232", - "593", - "136", - "104", - "353", - "14", - "180", - "526", - "592", - "594", - "323", - "490", - "327", - "203", - "256", - "258", - "528", - "415", - "442", - "342", - "596", - "157", - "343", - "331", - "257", - "89", - "598", - "599", - "367", - "344", - "335", - "277", - "597", - "371", - "276", - "275", - "126", - "113", - "369", - "108", - "107", - "590", - "407", - "414", - "147", - "99", - "97", - "124", - "122", - "110", - "472", - "591", - "153", - "100", - "102", - "173", - "174", - "481", - "336", - "406", - "75", - "159", - "96", - "72", - "200", - "266", - "265", - "263", - "269", - "231", - "419", - "179", - "182", - "525", - "392", - "391", - "313", - "390", - "183", - "417", - "411", - "315", - "473", - "479", - "446", - "146", - "475", - "474", - "401", - "421", - "445", - "483", - "551", - "480", - "356", - "476", - "583", - "324", - "839", - "462", - "655", - "325", - "389", - "393", - "724", - "440", - "267", - "227", - "620", - "477", - "582", - "268", - "535", - "464", - "299", - "16", - "271", - "259", - "225", - "247", - "463", - "693", - "270", - "548", - "467", - "465", - "422", - "418", - "261", - "489", - "633", - "466", - "238", - "244", - "246", - "482", - "634", - "671", - "333", - "326", - "239", - "248", - "488", - "448", - "245", - "484", - "460", - "332", - "378", - "25", - "577", - "461", - "471", - "381", - "188", - "565", - "470", - "469", - "334", - "379", - "355", - "284", - "279", - "175", - "668", - "550", - "562", - "373", - "665", - "354", - "632", - "485", - "570", - "575", - "673", - "131", - "404", - "587", - "585", - "549", - "663", - "41", - "285", - "739", - "478", - "40", - "773", - "262", - "690", - "78", - "145", - "358", - "226", - "260", - "283", - "687", - "486", - "133", - "672", - "95", - "121", - "322", - "195", - "264", - "177", - "396", - "321", - "359", - "15", - "402", - "686", - "619", - "641", - "615", - "397", - "59", - "236", - "282", - "204", - "786", - "618", - "614", - "403", - "376", - "58", - "212", - "692", - "584", - "400", - "56", - "55", - "199", - "375", - "374", - "31", - "405", - "319", - "640", - "579", - "670", - "357", - "505", - "743", - "493", - "50", - "92", - "38", - "784", - "847", - "320", - "841", - "213", - "568", - "741", - "492", - "39", - "840", - "254", - "747", - "827", - "607", - "53", - "158", - "398", - "439", - "753", - "224", - "438", - "214", - "835", - "223", - "626", - "5", - "54", - "61", - "119", - "838", - "302", - "62", - "52", - "22", - "165", - "494", - "13", - "769", - "622", - "491", - "301", - "423", - "118", - "252", - "222", - "631", - "317", - "710", - "318", - "495", - "36", - "304", - "762", - "697", - "630", - "123", - "760", - "621", - "674", - "2", - "253", - "255", - "846", - "77", - "453", - "3", - "708", - "628", - "291", - "383", - "308", - "726", - "771", - "617", - "625", - "564", - "581", - "295", - "292", - "365", - "830", - "722", - "845", - "624", - "656", - "666", - "42", - "294", - "694", - "623", - "627", - "606", - "580", - "456", - "47", - "716", - "732", - "836", - "507", - "629", - "654", - "653", - "293", - "23", - "758", - "837", - "613", - "65", - "48", - "144", - "459", - "834", - "780", - "184", - "457", - "125", - "833", - "764", - "831", - "719", - "844", - "139", - "616", - "679", - "681", - "682", - "458", - "29", - "766", - "768", - "825", - "842", - "166", - "511", - "26", - "27", - "30", - "772", - "219", - "220", - "610", - "675", - "17", - "518", - "509", - "63", - "770", - "689", - "221", - "506", - "677", - "35", - "37", - "120", - "832", - "714", - "738", - "680", - "678", - "755", - "730", - "676", - "443", - "740", - "713", - "11", - "444", - "703", - "742", - "717", - "745", - "826", - "501", - "142", - "642", - "117", - "130", - "767", - "503", - "20", - "18", - "731", - "808", - "185", - "170", - "727", - "90", - "521", - "569", - "70", - "191", - "234", - "515", - "513", - "522", - "701", - "311", - "545", - "684", - "556", - "517", - "516", - "514", - "733", - "211", - "141", - "519", - "696", - "350", - "310", - "210", - "64", - "520", - "303", - "699", - "736", - "729", - "524", - "450", - "345", - "725", - "816", - "822", - "349", - "192", - "135", - "746", - "815", - "813", - "189", - "190", - "546", - "643", - "24", - "33", - "34", - "510", - "705", - "744", - "721", - "712", - "193", - "553", - "538", - "555", - "750", - "817", - "559", - "539", - "795", - "818", - "707", - "351", - "603", - "604", - "76", - "794", - "683", - "206", - "544", - "819", - "779", - "783", - "787", - "789", - "32", - "706", - "807", - "805", - "793", - "297", - "235", - "105", - "44", - "543", - "542", - "759", - "791", - "711", - "852", - "290", - "347", - "289", - "160", - "536", - "51", - "757", - "728", - "811", - "781", - "785", - "169", - "810", - "778", - "541", - "504", - "98", - "709", - "148", - "134", - "748", - "809", - "704", - "426", - "163", - "149", - "4", - "752", - "346", - "341", - "305", - "167", - "162", - "754", - "12", - "109", - "67", - "828", - "540", - "340", - "10", - "168", - "824", - "112", - "554", - "763", - "688", - "68", - "756", - "428", - "106", - "782", - "229", - "829", - "496", - "128", - "127", - "161", - "249", - "761", - "176", - "132", - "561", - "537", - "306", - "19", - "432", - "307", - "309", - "111", - "171", - "129", - "164", - "250", - "178", - "695", - "21", - "116", - "804", - "775", - "197", - "360", - "803", - "802", - "800", - "806", - "801", - "799", - "798", - "797", - "217", - "216", - "718", - "150", - "843", - "720", - "790", - "338", - "152", - "69", - "151", - "7", - "86", - "8", - "207", - "218", - "796", - "451", - "88", - "6", - "172", - "777", - "558", - "452", - "209", - "208", - "776" - ], - "data": {}, - "grid": [ - " !! ##$$ %%%%&&' (( )))) *** + ", - " !! ##$$ %%%,&& (( )))) **** ++ ", - " - . !! ###$$ %%%/,'' (( )))) **** ++ ", - " -- ... !! ###$$ %%//&' (( )))) **** +++ ", - " -- 00 ... !! ###$$1 22%%%/&&' (( )))33 *** +++ ", - " -- 00 .... !! ###$$1 222%%%,&&44 (( )))33 **** ++ ", - " -- 00 5.... !! ###$$1 222%%%/,'4444 (( ))))33 **** +++ ", - " -- 00 655.... !! 7777777 8##$$112229%%//&'4444 (( ))) 333**** ++++ ", - " -- 00 65555.... !! 7777777 ###$$112229%%/&&'4444 ( ))) 33*** ++++ ", - " -- 00 66 5555...:. !! 77 ##;$$12229%%%,&&4444 ( )) 33** ++++ ", - " << 00 66= 5555.:::. !! 77 ###$$$12229%%%,&'4444 (( ))>>*33* ++++++ ? ", - " <<<<<< @ 0 66=== 5555::.... !! 77 ###A$$1229%%//,''444 ( )) >>333++++++++ ???? ", - " -- <<<<<<@ BBB 666 ==C CC555D...... !! 77 EEEEF ###;AAG1299%%/&&'4444 ( )))*>*33+++ ??? ???? ", - " --HHIJJK<>>444499?@@< 2 $$ 3 AAA 3 3 = = $$ B ", - " & && > > 99CDEFFF FG$HIA A 3AAJ = KLL B ", - " & & > 99 E F FMNIIN AAOP KKLQ B ", - " & & RRS TT E U UV I WWW K QQ BBB ", - " XX&& R R TTY YY UZV V W [ K B ", - " X & &&&&& R RS Y Y ]Z Z^N WW W __ KK K ", - " XX && & ``a Y Y ]Z Z NNW __b [ K ", - " XX c `` ad e Y ] ffg [W [h[K i K ", - " X X ccc `` a d e eYYj Z g [[ [ ki iK ", - " X XX lmm e jZ ng [ [ ok ki ", - " XXpqr ssaa te e j j nZ n [ ki uu ", - " r vv sssd twtxexx j j ynzz [[ kkii ", - " {{{|v v }~ t w x \u007f\u007f\u007f j z z [\u0080 i u uu ", - " vv \u0081\u0081 ~ w x \u007f j j zz \u0082 k \u0083 uu ", - " | vv \u0084 ~ \u007f\u007f \u0085\u0086\u0086 \u0087zz \u0082\u0082\u0083 \u0083\u0083\u0082 ", - " \u0088 ||v \u0081 \u0089 \u008a\u008a \u0086\u0086 \u0082\u0082\u0083 \u0082 \u0082\u0082\u0082\u0082 ", - " \u008b\u008b\u008b \u0089\u0089\u0089 \u008a\u008a\u0085 \u0086\u008c\u0087\u0087z \u0082\u0082 \u0082\u0082\u0082 \u0082\u0082\u0082\u0082 ", - " \u008b | \u0089 \u0085 \u008c \u0082 \u0082\u0082 \u0082 \u008d ", - " \u008b \u0089 \u008e\u008e\u0085\u0085 \u008c \u008c \u0082\u0082 \u0082 \u0082\u0082\u008d\u008d\u008d \u008f ", - " \u008b \u008b\u0089\u0089 \u008e \u0085\u0090 \u0090\u008c\u008c \u0091 \u0091 \u008d ", - " \u008b \u0092 \u0089 \u0089 \u008e \u008e \u0085 \u0090 \u0093 \u0091 \u0091 \u0091 ", - " \u008b\u008b \u0089 \u0090 \u0094\u0094\u0095 \u0095 \u0093 \u0093 \u0091 \u0091\u0091 \u0091 ", - " \u0096 \u0097\u0097 \u0098 \u0094 \u0095\u0095 \u0093 \u0091 \u0091 ", - " \u0096\u0096\u0092\u0097\u0089\u0097 \u0089 \u0098 \u0094 \u0093\u0093 \u0091 \u0091 \u0099 ", - " \u0096\u0096 \u0097\u0089 \u0089 \u009a \u0095 \u0093 \u0091 \u0091 ", - " \u0097\u0097 \u0098\u0098 \u0091 ", - " \u0096 \u0089 \u0089 \u009b \u0091 \u0091 ", - " \u0096\u0096 \u009c \u009c \u009d\u009d\u009d\u009d \u0091\u0091\u0091 \u0091\u0091 \u0091 ", - " \u0096\u0096 \u0091 \u009e", - " \u0096\u0096 \u009f \u009e\u009e", - " \u0096 \u009f \u0091\u0091 \u009e\u009e ", - " \u0096 \u009f \u009e\u009e ", - " \u0096 \u009f ", - " \u009f\u0096 ", - " \u0096\u0096\u009f ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!!!!! ######### ", - " !!!!!!! !!#### ### %%%%%% $ $ $$$ $ ", - " !!! ! ! !!! !! ### # %% $ $$$ ", - " ! ! ! !! # ### $$$$$ $$ $ ", - " &&& !!!!!! ! !!! !! # ### $ $ $ $$ $$$$$$$$$$$$$ ", - " & !!!!!!! !! !! !! # ## ''( $$$$$$$$$$$$$$ $$ $", - " &&& !!!!!! ! # **** ''( ( $$ $ ", - " & & !!! !!!!! ## # ' ' () $ $$ $$ ", - " & &&&&&&&& ! ! !! !! # ' ) $ $$$$ $$ ", - " & !&& ! ! ! ! ++ ( ..$ $$ $$ ", - " ! !!!! ! + 116666\u00a0 $$ $$$ $$ $ $ $ $ ", - " !! !!! ! / ++441 16 \u00a022 $$ $$$3 $$3 $$ $$$$ $ $ $$ $ ", - " &&&&&&!!!!!&&& ! !! 4 111\u00a1\u00a222 2$ 3$3 3= === $$ ", - " !&&! ! 9 9?@@<< 2$ $ 3A3 3 K== == KK$ B ", - " && & > >> 9 9 \u00a3 FF$$$ IAI AA 33 KK===K KK BB ", - " & > > 9 9EEFF NN I AAAJK KK L B ", - " & >> SSST E UUFF IIN OOOWW K Q B B ", - " && & RRS UV N N W W [ K BB ", - " X &XX RRR Y Y]]]\u00a4 ZVN W K K ", - " && & & ``S Y Y Z NNNN [ _[[[[[ K ", - " X X `aa Y Y Z ff WWWW [ [ o K ", - " X X ccc ` a d eeYY jjj]]Z Z g [ ho Kii K ", - " X XXXX c Se e \u00a5j j ZZg [ [ o k i ", - " X X sa e \u00a6Znn g [ o k\u00a7ki ", - " prr ss dtt xxe j jy\u00a6 [ okk i ", - " r vvv \u00a8 \u00a9 t x x \u007fj zzzz [[ k ii u ", - " |v \u00a9\u00a9\u00aaw x\u00ab\u007f\u007f \u007f j yz u uu ", - " | | v\u0081\u00ac\u0084 ~ \u00a9\u00aa xx\u00ab \u00ab\u0085\u0085\u007f\u007f jy zz \u0082 \u0083 \u0083\u0083 u ", - " | \u0089vv \u0081\u00ac\u0084 \u00ab\u008a\u007f\u007f \u0085\u0086 \u0087z \u0082\u0083 \u0083\u0082\u0082 \u0082 ", - " \u0088\u008b\u008b\u0089| \u0089 \u008a\u008a\u0085 \u0086\u0086 z \u0082 \u0082\u0082 \u0082\u0082\u0082 \u0082\u0082 ", - " \u008b \u0089\u008b \u0089 \u0085 \u0085 \u008c\u0087 \u0082 \u0082\u0082\u0082 \u0082 \u008d \u008d ", - " \u008b \u008b \u0089 \u0085\u008e\u008e \u008c \u008c \u0082\u0082 \u0082 \u0082 \u008d ", - " \u008b\u0089 \u0089 \u008e \u0085\u0085 \u0090\u0090\u008c \u0082 \u0082 \u0082\u008d\u008d\u008d ", - " \u008b \u008b\u0089\u0089 \u008e \u008e\u0090\u0090\u0085\u0090 \u0095 \u0091\u0091 \u0091 ", - " \u008b \u0092 \u0089 \u0089 \u0090 \u0090 \u0095 \u0093 \u0091 \u0091 \u0091 ", - " \u008b \u0092 \u0089 \u0098\u0098\u0098\u0098\u0094\u0094\u0094\u0094\u0095 \u0093 \u0091 \u0091 ", - " \u0096\u0096 \u0097 \u0089 \u0098 \u0098 \u0094\u0095 \u0095 \u0093 \u0091 \u0091 \u0099 ", - " \u0096\u0096\u009f\u009f \u0097 \u0089 \u0098 \u009a\u009d\u0095 \u0093 \u0091 \u0091 ", - " \u0096 \u0097\u0097 \u0098 \u009a \u009d \u0093 \u0091 ", - " \u009f \u0089 \u0098 \u009d \u0091 \u0091 ", - " \u0096 \u009f \u009c\u0089 \u009d \u0091 \u0091\u0091\u0091 \u0091 ", - " \u0096\u0096 \u009f \u009d \u0091 \u009e ", - " \u0096\u0096 \u009f \u0091\u0091\u0091\u0091 \u009e\u009e", - " \u009f \u009f \u0091 \u009e\u009e ", - " \u009f \u009e ", - " \u0096\u0096\u009f\u009f ", - " \u0096 \u009f ", - " \u0096\u0096\u0096 ", - " \u0096 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!!!! #### ## ", - " ! !!### # ", - " ! !! !!!! ## # $$ $$ $$$$ ", - " !! !! ! # # $$ $$ $$$ ", - " & &&&!! !!!!!!!!!!!!!! # # ))'' $$ $$ $$$ ", - " & & !!!!!!!!!! ! ! !! ## # '' $$$ $$ $$ $$$ ", - " & & !!! ! ! # # '' () $) $$ $", - " & && & !!! ! ## ( ))$ $$$$ $$ ", - " && &!! !! ! ! $ $ $ ", - " & &!! ! !! ! ( \u00a0$ $$$$$$$$ $ $$ ", - " !! !!!! ! 1 6 6 $ $$$3 33 KK $$ ", - " &&&&& ! !! 44 6 22 $ $3 3 K $ ", - " & !! & && 4 4999 < 22 2$ $ 333 K =========== $KK ", - " !&& && & >>>44449 9 $$ AAA 333 K3 KK K KK$$ ", - " & > 9 E FFF $ I A AAJ KK L B ", - " & & >> EFFFFFFF NNIN II PPK L B ", - " SS T U V N OW[ K K B ", - " X&&& & RRRR Y UVV NN NO W [ K K ", - " X X &&& & RRR S YY Y] ZZ NNW [ [ KK ", - " X XX && & `a SY Y ] Z Z W W __ [K K ", - " X X c `aad YY Y ] Z [W [ K K ", - " X X c `a a d S e\u00a5YY jj Z Z [ \u00a7iKK ", - " X X a d de e j jZ ZZg [ [ o k i ", - " aadd e \u00a5j j \u00a6nnn [ [ k i ", - " v s d e xx\u00a5 j jy [ o i ", - " | vv \u00a8\u00a8\u00a9 \u00aa x\u00ab \u00a5 j jy zy z [[ i ", - " | v v \u00ad x \u007f\u007fj y zyz \u0083 ", - " |vv\u0089\u0081\u0089 \u00ab \u007f\u007f\u007f\u007f j\u0086\u0087 zz \u0082 \u0083 \u0083\u0082 ", - " \u0088 |v\u0089 \u0081 \u0089\u0089 \u00ae\u0085 \u0086 z \u0082 \u0082 \u0082 ", - " \u0088 |\u008b\u0089 \u0089\u0089 \u0085 \u0085 \u008c z \u0082 \u0082\u0082 \u0082 \u0082 ", - " \u008b \u008b \u0089\u0089 \u0085 \u0085 \u008c\u0087 \u0082 \u0082 \u0082 \u008d ", - " \u008b\u0089\u008b \u0089 \u008e\u0085 \u0082\u0082 \u0082 \u008d ", - " \u008b\u0089\u0092 \u008e \u0085\u0085 \u0090\u00af \u0095 \u0091 ", - " \u008b\u008b \u0089\u0092 \u0089 \u008e \u0085\u00af \u0095 \u0091\u0091 ", - " \u008b \u0089 \u0089 \u008e \u0095 \u0093 \u0091 \u0091 ", - " \u008b \u0097\u0092 \u0098 \u0098 \u0095 \u0095 \u0093 \u0091\u0091 \u0091 ", - " \u0092 \u0097 \u0089 \u0098 \u009a \u009d \u0091 ", - " \u009f\u0089 \u0089 \u0098 \u009a \u0095 \u0093 \u0091 \u0091 ", - " \u009f \u0089 \u0089 \u0098\u009d \u009d \u0091 ", - " \u009f \u009f \u009d\u009d \u009d \u0091 \u0091 ", - " \u009f \u009f \u0089 \u009d \u0091 ", - " \u009f \u0091\u0091\u0091\u0091\u0091\u0091 ", - " \u009e ", - " \u009f \u009f \u009e ", - " \u009f\u009f \u009e ", - " ", - " \u009f ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!! ######### ", - " #### # ", - " !! # # $$$$ ", - " # # $$$$$ $$$ ", - " & !!! !!! # # $$$$$ $$$ ", - " & !!!!!!! !!!! # # (''$ $$$ ", - " & & ! !! ! # # '( $ $$$", - " & & !!!!!! ! # # '' $ $ ", - " !& !! ! ! ( $ ", - " & &!! !! !!! ! ( $ $ ", - " !! !! ! !!!! $ 33$3$$$ K $ ", - " !! !! ! ! 22 33 $ 3 $$$ KK K $$ ", - " &&&&&& !! &&&&&& !! 2 $333 $ $$$ K $$ ", - " !! ! $ $ 333 3 KK $$$ $$ ", - " !!!! & $$ 33KK $$ ", - " & & N KK K B ", - " & & S N W K K B ", - " && & S N OW[ [K K B ", - " &&& S N O W [ [[ K ", - " && & S Y Z NW K[ K ", - " & a YY W [ KK K ", - " a S YY Z [ i K ", - " a Seeee Y [ [ k i ", - " a d \u00a5 j [ [ k i ", - " d \u00a5 j yy [ [ i ", - " \u00ab j y [[ i ", - " \u00ab j z y ", - " \u0089 \u00ab \u0085 j z ", - " \u0089 \u0089\u0089 \u00ab \u0085 z ", - " \u0089 \u0089\u0089 \u0085 \u0085 z ", - " \u0089 \u0089\u0089 \u0085 \u0085 \u008c \u008d ", - " \u0089 \u0089\u0089 \u0085 \u0085 \u008c \u008d ", - " \u008b\u0089 \u0089 \u008e\u0085\u0085 \u008c \u008d ", - " \u008b\u0089 \u0089 \u008e \u0085\u0085 \u0095 \u0091\u0091 ", - " \u008b \u0089 \u008e \u0095 \u0093 \u0091 \u0091 ", - " \u008b \u0089 \u0095 \u0093 \u0091 ", - " \u0089 \u0089 \u0098 \u0095 \u0091 \u0091 ", - " \u009f\u0089 \u0089 \u0098 \u009d \u0095 \u0091 \u0091 ", - " \u009f \u0089\u009f \u0089 \u009d ", - " \u009f \u009f \u0089 \u0091 ", - " \u009f \u0089 \u0091 \u0091 ", - " \u009f \u0091\u0091\u0091\u0091\u0091 \u0091 ", - " \u009f \u0091\u0091 ", - " \u009f \u009f ", - " \u009f ", - " \u009f\u009f ", - " \u009f ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/simplify-douglas-peucker-500-1000-2.0-grid-reference.json b/tests/visual_tests/grids/simplify-douglas-peucker-500-1000-2.0-grid-reference.json deleted file mode 100644 index 81dc3fc47..000000000 --- a/tests/visual_tests/grids/simplify-douglas-peucker-500-1000-2.0-grid-reference.json +++ /dev/null @@ -1,378 +0,0 @@ -{ - "keys": [ - "", - "24", - "71", - "238", - "245", - "207", - "154", - "189", - "82", - "60", - "205", - "103", - "51", - "153", - "72", - "163", - "102", - "98", - "65", - "206", - "110", - "86", - "182", - "105", - "186", - "80", - "236", - "170", - "210", - "30", - "89", - "74", - "200", - "202", - "94", - "165", - "84", - "194", - "96", - "114", - "2", - "199", - "190", - "88", - "31", - "162", - "107", - "175", - "83", - "120", - "50", - "235", - "116", - "155", - "113", - "226", - "118", - "41", - "126", - "188", - "14", - "18", - "193", - "214", - "220", - "79", - "181", - "208", - "54", - "99", - "158", - "38", - "152", - "56", - "164", - "212", - "76", - "87", - "69", - "19", - "40", - "185", - "172", - "77", - "197", - "35", - "26", - "121", - "157", - "59", - "104", - "28", - "204", - "92", - "223", - "49", - "21", - "67", - "161", - "203", - "166", - "6", - "17", - "221", - "108", - "122", - "9", - "160", - "216", - "222", - "33", - "124", - "8", - "180", - "178", - "209", - "159", - "101", - "93", - "36", - "123" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!!!!!!!!! ###### ####### ", - " !! !!!!!!!! ###### # $$$$$$ %%%%% ", - " !!!!! !! !!!!!! ### ## $ %%% %%%%%%%% %% ", - " !! !! !! ! !!!!! ## ##### %%%%%%% %%%% %% ", - " &&&&&&&! !!!!!!! !!!!!!!! ## ### '''''' % % %% %%%%%%%%%%%%%%% ", - " && !!!!!!!!! !!! !! !!! # ### ''(( %%%%%%%%%%%%%%%%%% %", - " &&&& !!!!!!! ! # # )) '(( (* %%%% %", - " & && !!!! !!!!! ### '' ( ( **% %%%%%%% ", - " &&&&&&&&&&& ! ! !! ! + '(( * % %%%% %%% ", - " && !&& !! !!! !! ++ ( ,,%% % % %% ", - " & !& !! ! !! - + +.//0000111% %%%2 %%2 %% %%% % ", - " !! && !! !!! +++33/ / 00444 %% %%22 %%%%% 5%%%%%% %% %% % ", - " && !!&&& !&&!! 3 /6678444444% %22 255 555 %% ", - " & !&&&!!! 9 3 36 6:;; < %% % 2=== >2 555 555 > % ?? ", - " & & & 9 39 666:@@@ AAAA%% B=BB====22 >>555 > CC ?? ", - " & & D999 66 @AAAA AEEB ===F> >> CG ?? ", - " & & 9H IIIJ @ KKKL EEMMNNNN > G ? ? ", - " &&& && HH H JOOOOO KP LE ENN N Q > ?? ", - " R&&RR &&&&&& HHHH J O SP PPEE N QN >Q>>>>> > ", - " R &&& & TTU O O P PP EEN N VVVQQQ > ", - " R R TTUUW O O P PXY NNNN QQQ > >> ", - " R R RZZZZ T U WW [[[[OO]]]]SP P Y Q Q^_ `aa>>> ", - " R RRRR U I[ [ ] ]]P PbPY Q QQ __``aa ", - " RRRRc ddUU e[W [ ] ]fbbbbY Q Q __`g`a ", - " hh i ddWWWeejjjjj ] ]kf Q Q _` aa ", - " hl m mm n oepqj j r] ] ssss QQ ` a t t ", - " iim mu oopv jjwrr r] ] kss Qx _ y tt ", - " i immmuz{ | op jjw r}rrr]~]\u007fsss \u0080 y \u0080\u0080 t ", - " \u0081 \u0082mm uz\u0082 \u0083\u0083r ~~ ss \u0080 y\u0080\u0080\u0080\u0080\u0080\u0080 ", - " \u0081\u0084\u0084\u0082i \u0082\u0082\u0082\u0082 \u0083\u0083\u0083} ~~\u007f\u007fs \u0080 \u0080\u0080 \u0080\u0080\u0080 \u0080\u0080\u0080\u0080 ", - " \u0084 \u0082\u0084 \u0082 } \u0085 \u0085\u0085 \u0080\u0080 \u0080\u0080 \u0080 \u0080\u0086 \u0086 ", - " \u0084 \u0084 \u0082 }}\u0087\u0087 \u0085 \u0085 \u0080\u0080\u0080 \u0080\u0080 \u0086 ", - " \u0084\u0084\u0082\u0088 \u0082 \u0087 }} \u0089\u0089\u0085\u0085 \u008a \u0080\u0086\u0086\u0086\u0086 ", - " \u0084 \u0088 \u0082\u0088 \u0087 \u0087\u0089\u0089\u0089\u0089 \u008b \u008a \u008c\u008c\u008c \u008c ", - " \u0084\u0084\u0084 \u0082\u0082 \u0082 \u0089\u0089\u0089\u008b \u008b \u008a\u008a \u008c\u008c \u008c\u008c \u008c ", - " \u0084\u0088 \u008d\u0088 \u0082 \u008e \u008e\u008e\u008f\u008f\u008f\u008f\u008b \u008a\u008a \u008c \u008c \u008c ", - " \u0090\u0090\u0088\u008d\u008d\u0082 \u0082 \u008e \u008e \u008f \u008b \u008a \u008c\u008c \u008c \u0091 ", - " \u0090\u0090 \u0092\u008d\u008d\u008d \u0082 \u008e\u0093\u0093\u0094\u008b \u008a \u008c \u008c ", - " \u0090 \u008d\u0082\u0092 \u0082 \u008e\u0094\u0093 \u0094 \u008a \u008c ", - " \u0090 \u0092 \u0082\u0092 \u0082 \u0094 \u0094 \u008c \u008c ", - " \u0090\u0090\u0092 \u0095\u0082 \u0094 \u0094\u0094 \u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c \u008c \u0096 ", - " \u0090\u0090 \u0092 \u008c \u008c \u0096\u0096", - " \u0090\u0090 \u0092\u0092 \u008c\u008c\u008c\u008c \u0096\u0096", - " \u0092 \u0092 \u008c \u0096\u0096 ", - " \u0090\u0090\u0092\u0092 \u0096 ", - " \u0090\u0090\u0092\u0092 ", - " \u0090\u0090\u0092 ", - " \u0090\u0090\u0090 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!!!!! ###### ###### ", - " !!! !###### # $$$ $$ ", - " !!!!! !!!!!! # ## %%% %%%%%% ", - " !! ! ## # % %%% %%%%% ", - " &&&&&&&! !!! !!!!! ## ## **' %%% % %%% %%%%% ", - " && & !!!!!!!!!!! ! !!!!!! # # ('%% %%% %%%% %%%%% ", - " && & !!!!!!!!! !!!! ## ## )) ''(* %*%%%%% %%", - " && && && !!! !! #### ' ( * %* %%%%% % ", - " && &&&!& !!!! ! ! ( * % %%% % %% ", - " && &&!! !! !!! !! ( \u0097\u0097% %%%%% % %%% ", - " & !!! !! !! !! /0000 %% %%%2 222 %%%%%%%%> % %% ", - " !!! && !!! !! 33 0 4444% %%22 222 > %>> % % ", - " && !! && !&& 3 3/66 4444 4% %222 2 55555555555 % > ", - " !!& &&& 9 3 3666 < 4 %%% ===222 >2 >>> > >%% ", - " & && & 9 39 66 @ AA % B======\u00982 > > CC ? ", - " & & 999 6@AAAA AAEEEBB B==F>> > C ? ", - " & & 9 II J KK AE EE MNQ>> > ? ", - " R&&& & HHHHHI J O KLLL E EMMNN Q >> > ? ", - " RRR&&& & HHHH IJ OOOOS LP EEE NQN Q > > ", - " R RRR &&&& & HTU OO O S P PP NN N VVVQQQ > ", - " R RR & TUUW I O O SP P Y NNNN Q >> >> ", - " R RR ZZ TUUU WW II \u0099[OOS]]SP P Q_ ga>>> ", - " R RR UU U W[[[[ \u0099] ]]P PPP Q Q _ ` a ", - " RR UUUUU W [[ \u0099] ]fPbbb Q Q _ ` a ", - " dd WW [[jjjj ] ]kf Q Q _` a ", - " m mm nWo p[ j \u0099\u0099] ]k ssss QQ ` a ", - " i m mu o pq jjwwrrr] ]k sks Q _ ", - " i immmu jw r rrr]~\u007fksss \u0080 y \u0080\u0080 ", - " \u0081 imm u \u0082 wwr}} }~ \u007f ss \u0080 \u0080\u0080\u0080 \u0080 ", - " \u0081iii\u0082 \u0082 }} }~\u0085 \u007fs \u0080 \u0080\u0080 \u0080 \u0080 \u0080 ", - " \u0084\u0084\u0084\u0084 \u0082 } } \u0085 \u007f \u0080\u0080 \u0080\u0080 \u0080 \u0086 ", - " \u0084\u0082\u0084 \u0082\u0082 }} } \u0085 \u0080\u0080\u0080 \u0080 \u0086 ", - " \u0084 \u0084\u0082\u0088 \u0082 \u0087\u0087}} \u0089 \u0085 \u008c \u0086 ", - " \u0084\u0084 \u0082\u0088 \u0082 \u0087 \u0087 }\u0089\u009a\u008b\u008b \u008c\u008c\u008c ", - " \u0084 \u0088\u0082\u0082 \u0082 \u0087 \u0089\u008b \u008b \u008a \u008c\u008c \u008c ", - " \u0084 \u0088 \u0082 \u0082 \u008e \u008e\u008e\u0087\u008f\u008f \u008b \u008a \u008c\u008c\u008c \u008c ", - " \u0088\u0088\u008d\u0082 \u0082 \u008e \u008e\u0093 \u0094 \u008b \u008c\u008c \u008c ", - " \u0092 \u0092\u0092\u008d \u0082 \u008e \u0093\u0093\u008b\u008b \u008a \u008c \u008c ", - " \u0092 \u0082\u0092\u0082 \u008e\u0094\u0093 \u0094 \u008c ", - " \u0092 \u0092 \u0082 \u008e\u0094 \u0094 \u008c \u008c ", - " \u0092 \u0092 \u0082 \u0094\u0094 \u008c \u008c ", - " \u0092\u0092 \u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c \u008c \u0096 ", - " \u0092 \u0092 \u0096 ", - " \u0092 \u0092 \u0096\u0096 ", - " \u0092\u0092 \u0096 ", - " \u0092\u0092 ", - " \u0092 ", - " \u0092 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/simplify-radial-distance-500-1000-1.0-grid-reference.json b/tests/visual_tests/grids/simplify-radial-distance-500-1000-1.0-grid-reference.json deleted file mode 100644 index 78aa6c267..000000000 --- a/tests/visual_tests/grids/simplify-radial-distance-500-1000-1.0-grid-reference.json +++ /dev/null @@ -1,396 +0,0 @@ -{ - "keys": [ - "", - "24", - "71", - "245", - "238", - "207", - "154", - "82", - "189", - "60", - "205", - "45", - "53", - "51", - "163", - "103", - "102", - "153", - "98", - "30", - "65", - "129", - "72", - "191", - "182", - "170", - "206", - "110", - "186", - "86", - "80", - "236", - "22", - "210", - "112", - "74", - "200", - "68", - "3", - "202", - "93", - "94", - "89", - "84", - "31", - "194", - "96", - "114", - "2", - "199", - "190", - "88", - "162", - "120", - "107", - "175", - "83", - "50", - "155", - "235", - "116", - "226", - "14", - "18", - "41", - "113", - "126", - "214", - "36", - "188", - "193", - "244", - "48", - "54", - "220", - "118", - "172", - "75", - "79", - "158", - "181", - "208", - "56", - "99", - "212", - "197", - "152", - "185", - "25", - "39", - "164", - "38", - "183", - "87", - "35", - "40", - "77", - "157", - "104", - "26", - "121", - "59", - "28", - "204", - "92", - "223", - "49", - "21", - "67", - "161", - "203", - "27", - "166", - "6", - "221", - "9", - "123", - "108", - "222", - "122", - "33", - "160", - "180", - "124", - "17", - "216", - "8", - "178", - "209", - "159", - "101", - "57", - "105", - "81", - "165", - "91", - "76", - "69", - "19" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!! !!######## ###### $ $$ $$ $$ ", - " !! !!! !!!!!!!!## # %%%%% $ $$$ ", - " !!!!!! !!!!!!!! #### ## $$$ $$$$ $$ $$$$$$ ", - " ! !!!!!! ! !!!! # ### $ $$ $$ $$ $ $$$$ $$$$ ", - " & &&&! !!!!!!!! !!!! !!!!! ! ## ## '''''$$ $$$ $ $$$$$$$", - " && !!! ! !! ## ## (( ) ) $$$$$$ $$$ ", - " & && ! !! !!!!! ! # (( ') )** $ $$ $", - " & &&& ! ! !! ## ' )* $ $$$ $ ", - " & & && ! ! !!! + ', ) -$ $$ $ $ $ ", - " && & !!! ! .++ ))/$01$ $$$ $ $ ", - " ! !! ! ..+ 2 / 11 $$ $ 3 $ $ $4$ $ $ ", - " !!!!!!! & !!! ! ++5556 7/// $$ $ $$$$$ $$$$$$4 $ $$ ", - " & & &!! !! 5 8899:: : ;$ $3 33 < <4 $$$ $ ", - " !&&& === 55>>?@@:A ; $$ $3 B BB < < $$ ", - " & = >> CDEE EEEFG HB B BBBII < JJ K ", - " & & = = >> D E EGLHHL BBMN 4JO K ", - " & PPQ RR DD S ST H UUU 4 O KKK ", - " &&V& P P RWW WW SX T U Y Y K ", - " VV && &&& && PP Q W ZX XXL UU U [[ Y 4 ", - " VV && & ]]^ Q W ZX XL_LU Y [`Y a 4 ", - " VV b ]] ^c QdW W Z _ U YYY 4 e 4 ", - " V VV bb ]] ^ c d dfWg gX he e4 i ", - " V VV jj ^ d d kXXllmm Y Y ah he n ", - " Vopq rr^c sd d gtl l Y ue nn ", - " qq vv rrrc swsx xx g g t y Y hhze n ", - " {||}vv v ~ \u007fs w x\u0080\u0081\u0081 t y YY h e n n ", - " v \u0082\u0082\u0083 \u0084 \u007f wx x g yy \u0085 \u0086 \u0086 n ", - " vvv\u0082 \u0087 \u0081\u0088\u0081 \u0088g\u0089\u008a\u008ay y \u008b\u008b \u0086\u008b \u008b ", - " \u008c\u008c }\u008dv \u0082 \u008d \u008e\u008e \u0089 y \u008b\u008b \u008b\u008b\u008b\u008b\u008b\u008b\u008b\u008b ", - " \u008f\u008f\u008f \u008d \u008d \u008e\u008e\u0088 \u0090\u0090\u0090 y \u008b \u008b \u008b\u008b\u008b \u008b\u008b\u008b\u008b\u008b ", - " \u008f \u008f} \u008d \u0091 \u0090 \u0090 \u008b \u008b \u008b \u0092 \u0092\u0092 ", - " \u008f \u008f \u008d \u0093\u0088\u0088\u0088 \u0094 \u0090 \u008b\u008b\u008b \u008b \u008b\u0092\u0092\u0092 ", - " \u008f \u008f\u008d \u008d \u0093 \u0088\u0094 \u0094 \u0090 \u0095 \u0092\u0092 ", - " \u008f \u008d \u008d \u0093 \u0094 \u0094\u0094\u0096 \u0097 \u0095\u0095 \u0095 ", - " \u008f\u008f \u008d \u008d \u0093 \u0094 \u0098\u0098\u0098 \u0099 \u0097 \u0097 \u0095 \u0095\u0095 \u0095 ", - " \u009a \u009b\u009b \u009c \u0098\u0099 \u0097 \u0095 \u0095 \u009d ", - " \u009a\u009a\u009e\u009b\u009b \u008d \u009f \u009c\u0098 \u0097 \u0095 \u0095 \u009d ", - " \u009a\u00a0 \u009b \u00a0 \u008d \u009c \u0099 \u0097\u0097 \u0095 \u0095 ", - " \u009a \u009b\u009b \u009f\u009f \u00a1 \u0095 ", - " \u009a \u00a2 \u008d \u00a1 ", - " \u009a \u008d \u00a1\u00a1\u00a1\u00a1 \u0095\u0095 \u0095\u0095 \u0095 ", - " \u009a\u009a \u0095 \u0095 \u00a3 ", - " \u009a \u00a0 \u00a3 ", - " \u009a \u00a0 \u0095\u0095 \u00a3 ", - " \u009a \u00a0 \u00a3 ", - " \u009a ", - " \u009a ", - " \u009a\u009a\u00a0 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!! ######### ", - " !!! !!!!! # ### %%%% $$$$ ", - " !! !! !!!!!!! # %% $$ $$$$$ ", - " !!!! !!!! # ## $$ $ $$$$ ", - " &&& ! !! ! ! !! # ## ' $ $$$ $$$$ $$$$$ ", - " && & !! !!!! !!!!!!!! ! !! # ## ')) $ $$ $$$$$$ $ $$ $$ $", - " && !!! ! ! # # (((( ) $$ $ $", - " &! ! ! !! # # ' ' ) $ $$", - " & &&&&&&& ! !!! '' ) * $$$$$ $ $ ", - " && & !! ! + )) \u00a4\u00a4$ $$ $ ", - " ! ! ! !! ++ 7 /// $ $$$$$$ $ $$$ $$ ", - " ! !! +557 / ;$; $$$$33 3$$ $$$$$< $$ $ $$ ", - " &&&&&&&&& !!! !!! 77\u00a5 \u00a6\u00a7; ;$ 3 44 < $ $ $ ", - " & !&&!!! 5 > > \u00a7: :; 3 B3 33 <4 < 4 $ ", - " & & & = = >>> AA EE FFF 3HB BBB33I <<<< J$ ", - " & = = > E E H BBBII4 4 J K ", - " & \u00a8= QQRR EEEEST H HMMN KK ", - " && & P P R ST UY Y KKK ", - " V V&& & P P W W ZZZ \u00a9 XTT MMU U 4 ", - " V V & & P]Q W W Z XLL U U [[44Y4 4 ", - " VV V ] ]^Q W W X X__ UU YY ", - " V V bb ]] ^ c Qdd WWWZgggX m Y a ee44 ", - " V VVV cd dffg X mm Y Y a he ", - " VVV ^^ ^ cc gk XX l Y Y e ", - " q rr cs xxxd g gtkll Y ahze n ", - " } v \u00aa \u00abss \u0080 yy h e ", - " }} \u00aa\u007f\u007f\u00ab\u00ac x \u0081\u0081 g g y h n ", - " v v\u0082 \u007f \u0080 \u0081 \u0081\u0081g g\u008atty \u008b h \u0086\u0086 ", - " } vv \u008d \u008e\u0081 \u0089\u0089 y \u008b\u0086 \u0086\u008b\u008b \u008b ", - " \u008c\u008f \u008d} \u008d\u008d \u008e\u008e\u0091 \u0088\u0089\u008a\u008ay \u008b \u008b \u008b\u008b \u008b\u008b ", - " \u008c \u008f \u008d\u008d \u0091\u0088 \u0090 \u008b\u008b \u008b \u008b \u008b \u0092 ", - " \u008f \u008f \u008d \u0088\u0088\u0088 \u0090 \u0090 \u008b\u008b\u008b \u008b\u0092\u0092 ", - " \u008f \u008d \u008d \u0093 \u0088 \u0094\u0090 \u008b \u0092 ", - " \u008f\u009e\u008d \u0093 \u0094\u0094 \u0094\u0090\u0099 \u0095\u0095\u0095 \u0095 ", - " \u008f\u008f\u008f \u009e \u008d \u0093 \u0093 \u0098\u0099\u0096\u0099 \u0097 \u0095 \u0095 \u0095 ", - " \u009a \u008d \u009f\u009f\u009f\u009f\u0094 \u0098 \u0099 ", - " \u009a\u009e \u009b\u009b \u008d \u009f \u009f \u0098 \u0099 \u0097 \u0095 \u0095 ", - " \u009a\u009a \u009b \u009b \u008d \u009c \u009c\u00a1\u0099 \u0097\u0097 \u0095 \u0095 ", - " \u009a\u00a0 \u009b\u009b \u00a1\u009c\u00a1 \u00a1 \u0095 ", - " \u009a \u008d \u008d \u00a1 \u00a1 \u0095 ", - " \u009a \u00a0\u00a2\u00a2 \u00a1 \u00a1 \u0095 \u0095\u0095\u0095\u0095 \u0095 ", - " \u009a \u00a1 \u0095\u0095 \u0095 \u00a3 ", - " \u009a\u009a \u00a0 \u0095\u0095\u0095\u0095 \u00a3", - " \u00a0 \u00a3 ", - " \u009a \u00a3 ", - " \u009a \u00a0 ", - " \u00a0\u00a0 ", - " \u009a ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!! ! ##### ###### ", - " !!! # # ", - " !! !!! ## $$$ $$ ", - " !!! # # $$$$ $ $$$ $$ ", - " & && ! !!!! !!! !! ! # '** $$$ $$$$$$", - " ! !!! # # ' ) *$$$$$$$ $", - " & &! ## ## '' ) ** $ ", - " & &! ! ' ' ) $ $$$ ", - " & & & ! !!! ) $ $$ $$ ", - " !! !! ! $ 33 $ ", - " ! ! $ $3 3$ $ 44 ", - " !!!!!! & ! ; $ $$3 3 $$$< $$$$$$$$$ $ ", - " && !&& ! > 3 3 4< <4 $ ", - " && == > > $ 3BBB3333 4 <44 <4 4$$ ", - " & & = = > EEEEE 3 BB II 4 K ", - " & & = EE EELLL HHHH 4 4 K ", - " & & Q Q L L MUY 4 K ", - " &&& Q Z X L L U U Y 4 ", - " & &&&& & Q WWW Z Z XX L L U Y Y4 4 ", - " V V& ^]^Q W WZ Z X L UUU Y a 4 ", - " V V ] ^cQ Q WW ZZ X X Y 44 e 44 ", - " VVVV ] ^ c d ff g X ah e ", - " VV V ^ c c d d g g XXl Y Y huee ", - " d d g g ll Y Y h e ", - " }v c xx fff gtl Y h ", - " } v v x \u0081 g g t ", - " } v x \u0080\u0081\u0081\u0081g gt y ", - " } }v\u008d \u008d\u008d \u0080\u0081\u0081 \u008a y \u008b\u008b ", - " }} \u008d \u008d \u0088 \u0088 \u008a \u008b \u008b ", - " \u008d \u008d\u008d \u0091\u0088 \u0088\u0090\u0090 \u008b \u008b \u0092 ", - " \u008f \u008d \u008d \u0088 \u0090 \u0090\u008a \u008b\u008b \u0092 ", - " \u008f\u008f\u008f \u0093\u0093\u0093\u0088 \u008b \u0092 ", - " \u008f\u008d \u008d \u0093 \u0093\u0088\u0094 \u0099 \u0095 ", - " \u009e \u008d \u008d \u0093 \u0093 \u0094 \u0099\u0099 \u0097 \u0095\u0095 \u0095 ", - " \u009e \u008d \u008d \u0093\u0093 \u0094\u0094 \u0099 \u0097\u0097 \u0095 \u0095\u0095 \u0095 ", - " \u009a \u008d \u009f \u0097\u0097 \u0095 \u0095 ", - " \u009a \u009e \u008d \u009f \u00a1\u00a1 \u0097 \u0095 ", - " \u009a\u00a0 \u00a0\u00a0 \u008d \u009f \u00a1 \u00a1 \u0097 \u0095 \u0095 ", - " \u009a \u00a0\u008d \u009f \u00a1 \u0095 ", - " \u00a0 \u00a0 \u00a1 \u0095 ", - " \u009a \u00a0 \u00a1\u00a1 \u0095\u0095\u0095\u0095\u0095 \u0095 \u0095 ", - " \u009a ", - " \u009a \u00a0 ", - " ", - " \u00a0 ", - " \u00a0 ", - " \u00a0 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !! ######## ", - " ! # # ", - " !! ## ## $$$ ", - " # # $$ $$ ", - " & # $$$$ $$$ ", - " && !!!!!!!!!!!!! # # ' $$$ $ ", - " & ! ! # # '' $ ", - " & ! ## ' ' $ $ ", - " & &&! ! !! ' $ ", - " &&& ! ! !! ! $ $$$ $ ", - " ! $ 3 $$$ 4 $ $$ ", - " ! ! $ $$$ 33$$ 4 $ ", - " !!!!!&&&! ! $ $ 3 3 <<<< $$4 $ ", - " & &&!! $ $ 3 344 << 444 $ ", - " & 333 3 444 $ ", - " & L 4 4 ", - " & & LL 4 4 ", - " & & LL YY Y 4 ", - " && & L 4YY 4 ", - " V&& Y 4 Ya 4 ", - " V &&&& Y Y44 4 ", - " V g Y Y 4 ", - " V g Y Y ", - " g Y ", - " g ", - " ", - " gg ", - " \u008d \u0088 g ", - " \u008d \u0088 g ", - " \u008d \u008d \u0088 \u0088 ", - " \u008d \u0088 \u0088 ", - " \u008d \u0088\u0088 \u0088 ", - " \u0088\u0088 ", - " \u008d \u0088\u0088 \u0095 ", - " \u008d \u008d \u0095 ", - " \u009a \u008d \u008d \u0095\u0095\u0095\u0095\u0095\u0095\u0095 ", - " \u009a \u008d \u0095 ", - " \u009a \u008d \u0095 \u0095 ", - " \u009a \u00a0 \u008d \u008d \u0095 \u0095 ", - " \u009a \u00a0 \u008d\u008d \u0095 \u0095\u0095 ", - " \u009a \u00a0 \u0095 ", - " \u009a \u0095\u0095\u0095\u0095\u0095\u0095\u0095 ", - " \u009a ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/simplify-radial-distance-500-1000-2.0-grid-reference.json b/tests/visual_tests/grids/simplify-radial-distance-500-1000-2.0-grid-reference.json deleted file mode 100644 index 352b52d93..000000000 --- a/tests/visual_tests/grids/simplify-radial-distance-500-1000-2.0-grid-reference.json +++ /dev/null @@ -1,367 +0,0 @@ -{ - "keys": [ - "", - "24", - "71", - "238", - "245", - "207", - "154", - "82", - "189", - "60", - "205", - "101", - "98", - "72", - "163", - "102", - "206", - "30", - "65", - "86", - "57", - "105", - "170", - "110", - "186", - "210", - "165", - "22", - "74", - "200", - "68", - "202", - "93", - "94", - "84", - "194", - "89", - "2", - "199", - "190", - "88", - "31", - "162", - "83", - "114", - "107", - "120", - "50", - "175", - "235", - "116", - "226", - "155", - "113", - "118", - "99", - "41", - "126", - "188", - "18", - "214", - "36", - "54", - "220", - "193", - "172", - "181", - "208", - "158", - "38", - "152", - "56", - "25", - "212", - "76", - "87", - "19", - "40", - "185", - "77", - "69", - "121", - "21", - "35", - "28", - "204", - "92", - "223", - "49", - "67", - "161", - "203", - "166", - "27", - "6", - "221", - "17", - "9", - "122", - "108", - "222", - "123", - "33", - "160", - "216", - "180", - "8", - "178", - "209", - "159" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! !!!!!!!!!################### ", - " !!! !!! !!!#### ## $$$$$ %%%% ", - " !!!!! !!!!!!!! ##### $ %%%% %%%%%%%% %%% ", - " !!!!!! !!!! # ## %%% % %% %%%%%%%% %%% ", - " &&&&&&&! !!! !! !! !!!!! ! ## ### ''' % % %%%%%% %%%%%% % ", - " &&& & !!!!!!!!!! ! ! !!! ## #### ( ))) %%%%%%%%%% %%%%% %", - " &&& &! !!!!! !! ! # ## ((((( ') )* %%%% %%%", - " & &! ! !!! ### '' ' ) *% %% %%%", - " &&&&&& &&&& ! !!! + '' ) **% %%%%% %%% ", - " && & !!! !! ++ ) ,,% - %% %% ", - " !! !! !! + + .../ / 0%1 %%-%%%%% %2 %% % ", - " !! !!!!! +33. ./// 11%%1 %%%%-- -%%%%%%%%%%%%%% %% %% ", - " &&&&&&&& &&& !!! !! 3 345 6711 1% % -228 8 % % % ", - " & & !&&&!! 993 34 4 777 %%% - ::: -- 888 88 % % ", - " & & & ;9 9 444 <=<>>>>??? @@: :::-AA 888 2B% ", - " & & 9 9 4=>> >>C @@ :::DD2 2 B E ", - " && & ;9FFFGG >>>>HI @@@JKKL EEE ", - " &&& & MMFM GN NN HI I KKL L 2 EE ", - " OO O&& &&&&& MMM NGN N PQ QQI KKKK K L L 2 ", - " OO O&& RRS N N PQ QQCTCK K UULLL2 2 ", - " OO O RRRSV NNN N PQ TTW KK LLL X 2 ", - " O O YYY R S VVFZZZZ NN[[[[Q QWW LL L ] ^^22 ", - " OO OO S S VZ Z _[ [`QaaaWW L LL ]] b^ c ", - " OOO SSdS eVZ Z_ [ [` aQaa L L ]]]b^^ c ", - " f g d VVVeehhh [ [iiaa LLL ]bj^ c ", - " gg kkk l meen h_ o[ [ pp p b ^ c ", - " gkkk kq mmrnh h o [ [ ip bb s c ", - " g k kq t m u ooov[[w[xipp yyb sy ", - " z tkk t {{ov ww p yysssyy yy ", - " z|||g ttt {{v }wxxp y yyy yy yy~ ", - " | | ttt \u007fv } } yy y y yyy~~ ", - " | | t \u0080vv \u0081 } yyy y~~ ", - " | t|\u0082 t \u0080 v \u0081\u0081}} \u0083 ~ ", - " | |\u0082tt t \u0080 \u0081\u0081\u0081 \u0081}\u0084 \u0085 \u0083\u0083\u0083\u0083 \u0083 ", - " ||| \u0082t t \u0080 \u0080\u0080\u0081\u0081\u0086\u0084\u0087\u0084 \u0085\u0085\u0085 \u0083\u0083 \u0083\u0083 \u0083 ", - " \u0088 \u0089 t \u008a\u008a\u008a\u008a\u0081\u0086 \u0086\u0084 \u0083 \u0083 ", - " \u0088\u0088\u0082\u0089\u0089 t \u008a \u008b\u008a \u0086\u0086\u0084 \u0085 \u0083\u0083 \u0083 ", - " \u0088\u0088 \u0089\u008c\u0089\u0089 tt \u008d\u008b\u008b\u008b\u008d\u0084 \u0085\u0085 \u0083 \u0083 ", - " \u0088\u008c \u0089t t \u008a\u008a\u008b \u008d \u0083 ", - " \u0088 \u008et t \u008d \u008d \u0083 ", - " \u0088 \u008e\u008e\u008e \u008d \u008d\u008d \u0083 \u0083\u0083\u0083\u0083\u0083 \u0083 ", - " \u0088\u0088 \u008e \u0083 \u0083\u0083 \u0083 \u008f ", - " \u0088\u0088 \u008c\u008c \u0083\u0083\u0083 \u008f\u008f", - " \u0088 \u008c \u008f ", - " \u0088 \u008c \u008f ", - " \u0088 \u008c ", - " \u0088\u0088 ", - " \u0088 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!! ################# ", - " !!! ## # ", - " !!! !!!!!! ## # %%%%%%% ", - " !! ## # %% %% %%%% ", - " &&&&&&&!! !!!! !!!!!! # # ''* %% %%%% %%%%% ", - " & & !!!!!!!!!! ! !! # # ')) *%%%%%%%%% %", - " & &! ! ! ### ## ((( '' ) *% % ", - " & &! ! # ''' ) % %%% ", - " & &&&&&&& ! !!! '' ) % %%%%%%%% ", - " && && !!!!!! !! %% - % ", - " !! !! %% %%- %%%% 22 % % ", - " ! !! 11 % %%%% -%%%%%8 %%%%%%%%%% % % ", - " && !&&&& !! 4 1 % %-- - 88 882 %2 % ", - " &&& !& 9 44 %% --:::-- --22 82 882 2%% ", - " &&& & 9 99 44 >>> -::: AA 88888 2 E ", - " & & 999 4 >>> >>CCC @@@: 2 2 E ", - " & & 9FFF >> C CC KL 2 E ", - " &&& & F F P CC C KKKLL 2 E ", - " OO&& &&& & F F NN PPPPQQQQCC C KKLK 2L 2 ", - " O &&& & R F N NP PP Q CC KKKK LLLL ] 2 ", - " O O R SVF F NN NPP Q Q KK L L222 ^ 2 ", - " O OOOOO R S VVFZZZ__NN [ Q Q L L ]X ^22 ", - " OOO OO S S VVZ Z _[ [ Q Qa L L ]bX^^ ", - " OO SSSS V Z Z _[ [ Qaa L L bbX^ ", - " VV hh _ [ [iaaa L b ^ ", - " ggkkkk V hh _[ [ p b ^ ", - " gkg k h uoo[ [iip ", - " g kgkttt huoooo[[[ p yy ", - " gggkk tt uv v x yy y ", - " tt t \u007fv v}}xx y y y ~ ", - " | t t v } }x yy ~ ", - " || t vvvv }}}} yy ~~ ", - " || t \u0080 \u0080\u0080v\u0081v \u0084 yy ~~ ", - " \u0082\u0082t t \u0080 \u0080 \u0081v \u0084\u0084 \u0085 \u0083 \u0083\u0083 ", - " \u0088\u0082\u0082t\u0082 t \u0080\u0080 \u0081\u0081 \u0084 \u0085\u0085 \u0083\u0083 \u0083\u0083\u0083 \u0083 ", - " \u0088\u0082 \u0082t \u008a\u008a\u008a\u008a\u0081\u0081 \u0084 \u0085\u0085 \u0083\u0083 \u0083 ", - " \u0088\u008c\u0082 t t \u008a \u008a \u008d\u0084 \u0085\u0085 \u0083 \u0083 ", - " \u0088\u008c \u008ct tt \u008a\u008d\u008a\u008d \u008d \u0085 \u0083 \u0083 ", - " \u0088\u0088 t\u008ctt \u008a \u008d \u0085 \u0083 \u0083 ", - " \u0088 tt \u008d \u008d \u0083 ", - " \u0088 \u008c \u008d \u008d\u008d \u0083 \u0083\u0083\u0083\u0083\u0083\u0083 \u0083 ", - " \u0088 \u008c \u008d \u0083 \u0083 ", - " \u0088 \u008c\u008c \u0083\u0083\u0083\u0083 ", - " \u0088 \u008c ", - " \u0088\u008c ", - " \u008c\u008c ", - " \u008c ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/simplify-visvalingam-whyatt-500-1000-1.0-grid-reference.json b/tests/visual_tests/grids/simplify-visvalingam-whyatt-500-1000-1.0-grid-reference.json deleted file mode 100644 index 5cbf97f50..000000000 --- a/tests/visual_tests/grids/simplify-visvalingam-whyatt-500-1000-1.0-grid-reference.json +++ /dev/null @@ -1,359 +0,0 @@ -{ - "keys": [ - "", - "24", - "71", - "238", - "245", - "207", - "154", - "60", - "189", - "82", - "205", - "101", - "102", - "98", - "72", - "206", - "65", - "163", - "86", - "81", - "170", - "110", - "186", - "210", - "30", - "89", - "74", - "200", - "202", - "93", - "94", - "84", - "194", - "114", - "199", - "190", - "88", - "162", - "83", - "107", - "175", - "120", - "50", - "31", - "155", - "235", - "116", - "41", - "113", - "126", - "36", - "118", - "214", - "188", - "193", - "220", - "18", - "99", - "158", - "181", - "38", - "212", - "208", - "152", - "56", - "185", - "25", - "76", - "87", - "19", - "35", - "40", - "77", - "121", - "21", - "157", - "28", - "204", - "92", - "223", - "49", - "67", - "161", - "203", - "27", - "166", - "6", - "221", - "9", - "17", - "108", - "222", - "122", - "160", - "33", - "216", - "180", - "178", - "209", - "8", - "159", - "2" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!! !!### ## ", - " !!!! !### $ $$ ", - " !!!!! !!!!! ## # %%%%% %% ", - " !!!!!!!! !! # # % %%% %%%% %%%% ", - " && &&&! !!!! ! !!!!!!! !! # ### '' (%% %%% % %%%%%%", - " && !!! ! !!! # # ') ( %%%%%%% % ", - " && ! !! # * '') ) % %% %", - " & && ! !! ! ## ' ( % % %%%% ", - " &&& ! !! ! ! ! + '' ) ,% %% %% ", - " ! !!! ! ++ ) -% .%%% % % ", - " ! ! + + / / -00% % % %%% % % ", - " !&&&&&&&&&&& !! 11 1/ /222 %% % %%%% % %%%% % %% ", - " & && ! 1 33 45 5000 % .. 6 6 % % ", - " && &&! 771 13 3 555 %% % .8888 . 6 6 9 ::: ", - " & & 7 3 ;;<<< < =. 8 .> > 6 ?? : ", - " & 7 7 ; < <@@==@ 88AA 9 ? : ", - " & & BBB CC DD E = FGG 9 ::: ", - " &&&& & B B CCH HH DI E F G 9 ", - " J & &&& && BBB H H KI II@ FL F GM G9 9 ", - " J & NOO H H KI @@ F MM G 9 ", - " J J P NN OQ HRS H K I T F GGG9 U 9 ", - " J J J PP NN O Q R S HV I I T G WUUU ", - " J JJ R V VI XXTT G G YWYWZ ", - " JJ [ ]]OO QQR R V X G G WWW ", - " [ ^_ ]]Q Q``a a V V b c G d ", - " ^ _ ee f g h iiV V c c G ", - " __ j f g a i Vb c k ", - " ^ _l_mm h in nooppc c qq kq ", - " r^ l_ j l ss oo c qq qqq qqq ", - " rttt ll ssn ouppc qq qq q ", - " tt l l vn u q q q w ", - " t t l xxnn u u qww ", - " tll x n yuu z ", - " t {l l x x y | z z z ", - " tt l y }}~ ~ | | z z ", - " t \u007f } ~ | z z ", - " \u0080\u0080{\u007fl\u007f l \u0081 } | z z ", - " \u0080 \u007f l \u0082\u0083\u0083~ || z z ", - " \u0080 \u007f \u0081\u0081 z ", - " \u0080 l l \u0083 ", - " \u0080 \u0084\u0084l \u0083\u0083\u0083 z zz z z ", - " \u0080\u0080 \u0085 z \u0086 ", - " \u0080 \u0085\u0085 z \u0086\u0086", - " \u0080 \u0085 \u0086\u0086 ", - " \u0080 \u0085 \u0086\u0086 ", - " \u0080 ", - " \u0085 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!!!!! ############# ", - " !! !# ## ", - " !!!! !! ### %%% ", - " !!!!! # ## %%% %%% ", - " &&& ! ! ! ! !! # # %%% %%% %%%% ", - " && !! !!!!!!!!!! ! !!! ! # ## '') (%%%% %%% %%%%", - " & ! ! ! # ## ') )) %% % %", - " & ! ! !! # ' ' )( (% % %%", - " & & &!! ! ! # '' ) ( % %%%%%%%%% ", - " && !! ! ! + ) % %% % % ", - " ! ! ++ /2222--%% %% .% 9 %% % ", - " ! !!! 11 /2 0-- %% %%%%% %%% %% % 9% % % ", - " && 1 // 00 % . .6 66 9 % % ", - " & && & 133 555 % %. 88. . 6 6 9%% ", - " & & 77 3 <<< %% .=8 8 >>> 66666 99 ", - " 7 3 @@ = 88 >> 9 : ", - " & & 777\u0087\u0087\u0087 <<<<<<< = = LF9 9 :: ", - " & & BB\u0087 DD @ F G 9 :: ", - " & & & B B H HHHHKKK IEE FF F G ", - " J &J& & B \u0087 H H I @ F F GG99GG 9 ", - " J O O\u0087 H H I I T@FFFF G Y ", - " J O O Q \u0087RRHH VVVVVI I T GGY 9999999 ", - " J JJJJ R R V XIT G W ", - " JJ J OOO R R II T G G Y W W ", - " QQ Raaa V VbbXX G WW ", - " ^__ e f a a i cccc G ", - " ^ ff hii V V c G ", - " ^ _ l f h hiiiVVVV bcc q ", - " ^ l_l lll hsh no c q q q ", - " rtt^ ll ssn oo c qq q q ", - " t t ll n u up qqq q w ", - " t l xnx u u q w ", - " t tll x nn ynu qwww ", - " t{ l x xyny u zz z ", - " t t l l y~ ~ | | z z ", - " t l \u0081\u0081\u0081\u0081}}}}~ | z z z ", - " \u0080{ {\u007fl l \u0081 } ~ | zz z ", - " \u0080\u0080\u0085\u007f \u007f ll \u0081 \u0082\u0083 | z z ", - " \u0080 \u007f l \u0082 z ", - " \u0080 l l \u0083 \u0083 z z ", - " \u0080 l \u0083 z zz z ", - " \u0080\u0080 \u0085 \u0083 zz z \u0086 ", - " \u0080 \u0085 zzzz \u0086\u0086", - " \u0080 \u0085 \u0086\u0086", - " ", - " \u0080 ", - " \u0085 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!! #### ## ", - " !! !## # ", - " ! ## ## %%%%%% %% ", - " ! !!!! # # %%% %%%% %%% ", - " && &&&! ! !! !!!! !! # ## ' ( %%% %%% %", - " !!!! ! ! # ## ') ( %%% ", - " ! ! # # ') ) ((%% %", - " & ! !!! ## ' ' ) % %%%%%% ", - " && &&& ! !! ! ! ' )) %% ", - " ! !!! ! ) % .% % ", - " ! ! %% % ..% %. 6 %% % ", - " !&&&&&&&&&&& ! 11 00 0 % .% .%%%%%%%%%% 9 9% % ", - " && && 1 1 3 000 .. 9 6 6 9% % ", - " && 771113 3 %% 8888...... 966 6 9% ", - " & & 77 3 << = 88 9 6 99 : ", - " & & 77 < <@ @@= = :: ", - " & & \u0087 @ =LLFF9 : :: ", - " &&&& BBBB HHHHHH @ L F FGG ", - " JJJ& && BBB H H II @ F G GG99999 9 ", - " && O H H I I @@ FF G9 9 ", - " J J O OQ \u0087HHS H K I F GY 9 9 ", - " J J JJ O Q\u0087R RS HV V I I G 9 ", - " J J Q R VI II G G YY ", - " JJ O QRRR V V X G G Y ", - " _ QQ a a V Vbb ", - " ^^ __ a h S V b b G ", - " ^ ^ _ aaa h V b b ", - " __ l h hn n b q ", - " ^^ l_ l n q ", - " ^^ ll nu q qqq ", - " t l l nu u q w ", - " tll l x x uu q ", - " t t l x nnyy u~ z ", - " t t{{l l y ~ | z z ", - " { l yy ~~ || zz z z ", - " \u0080 { l \u0082 ~ || z z ", - " \u0080 { l l \u0081 \u0081\u0082 \u0083 | z ", - " \u0080\u0085 \u0085l l \u0082 \u0083 | z z ", - " \u0080\u0085 l \u0081\u0081 ", - " \u0080 \u0085l \u0083 z z ", - " \u0080 \u0085l \u0083\u0083 z zz z z ", - " \u0080\u0080 z ", - " \u0080 \u0085\u0085 ", - " \u0080 ", - " \u0085 ", - " \u0080\u0085 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!! ############# ", - " !! ! # ", - " !!! # ## %%% ", - " # # %%% %%%% ", - " &&& # # %%% %%%%%%%% ", - " & !!!!!!!!!!!!! # ## ) %%% ", - " & ! # )) % %", - " & ! ! # # % %%%", - " && ! ! ! # ) % %%%% ", - " && !! ! ! ) % % ", - " ! ! % %%% .% 9 % ", - " ! ! % %.. %%%% 6 6 %% 9% % ", - " & & !! % ..% .996 66 % % ", - " & !& &&& % .... . 66 96 9 % ", - " &&! & % 9 666 99 ", - " & & < < @@ 9 9 ", - " & \u0087 <<<<<<< @ F9 9 ", - " & \u0087 \u0087 @ FFFG 9 ", - " && && \u0087 HHH @ F F G ", - " J && &&& \u0087 \u0087HH H K II I @ F G GGGGGG ", - " J J OO\u0087 \u0087HH H KI @ F G 9 ", - " J O O Q \u0087 SHHHKVKKI I G 9999999 ", - " J O Q Q S HV V II G ", - " JJJ O Q S V II G G ", - " Q V Vb G ", - " ^__ S V b GG ", - " V V b G ", - " ^ ^_ l nnnV bb ", - " ^ ^_l l n n ", - " ^^^l ll n ", - " ^ ll n ", - " l l x ", - " l xxnn ", - " l l x x n zz z ", - " { l l x z z ", - " \u0080{ l \u0081\u0081\u0081\u0081 zz ", - " \u0080 { l \u0081 \u0081 z z ", - " \u0080 \u0085\u0085 l \u0081 \u0081 \u0083\u0083 z z ", - " \u0080\u0085 \u0085 \u0081\u0083 ", - " \u0080\u0085 \u0083 \u0083 z z ", - " \u0080\u0085 \u0085l \u0083\u0083 z zzz z ", - " \u0080\u0080 z zz ", - " \u0080 \u0085 z ", - " \u0080\u0085 \u0085 ", - " \u0085 \u0085 ", - " \u0080\u0085\u0085 ", - " \u0085 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/simplify-visvalingam-whyatt-500-1000-2.0-grid-reference.json b/tests/visual_tests/grids/simplify-visvalingam-whyatt-500-1000-2.0-grid-reference.json deleted file mode 100644 index bca69f105..000000000 --- a/tests/visual_tests/grids/simplify-visvalingam-whyatt-500-1000-2.0-grid-reference.json +++ /dev/null @@ -1,336 +0,0 @@ -{ - "keys": [ - "", - "24", - "71", - "245", - "207", - "60", - "154", - "189", - "205", - "98", - "72", - "163", - "102", - "206", - "65", - "30", - "110", - "186", - "86", - "170", - "210", - "200", - "202", - "93", - "89", - "84", - "114", - "2", - "190", - "88", - "162", - "107", - "83", - "120", - "50", - "175", - "31", - "116", - "113", - "36", - "118", - "126", - "188", - "18", - "193", - "220", - "152", - "56", - "38", - "212", - "76", - "87", - "40", - "185", - "35", - "223", - "21", - "28", - "204", - "92", - "49", - "67", - "161", - "203", - "166", - "6", - "221", - "17", - "108", - "9", - "122", - "216", - "222", - "33", - "160", - "180", - "178", - "8", - "159" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!!!!!!!######### ####### ", - " !! ### # ", - " !!!!!!! #### # $$$$$$$$ ", - " !!!!! ! !!!! # ## $$$$ $$$$$ $$ ", - " %%%%%%%%! !!! !! ! !!!!! !!! ## ## &$ $$$$ $$ $$$$$ ", - " %%% !!!!!!!!! ! !! ! # #### '((&&$$$$$$$$$ ", - " % % !! ! ! ## ## '(( (& $$$$ $", - " % % % !! !!!! ## ''''((&&&$ $$ $$$$", - " % %% !! !!! ! !! # ''(( $ $$$$$$$$ ", - " % ! !!!!! !! )) ( $$ *$ $$ $ $ ", - " ! !! ))) ++,,,,--.$ $ $$ $$$ $$ $ ", - " ! %%%% !!! ///+++ ,,.-- $$ $$ $$ $$$$$$$ $$$ $$$ 0$ $ $ ", - " % !%% % / + .... .$ $ *11 111 $ $ ", - " %%%% % 2 ///333 44 $$$ $**5555****0* 1 11 0$$ ", - " % % %% ! 2 2 33 666666$$ 77555 8888 11111 00 9 ", - " % % 2 2 3 6 6:::7 5 8 00 9 ", - " % %% ;2 <<< 6 ===> 777 ?0 0 999 ", - " %%%% % ; ;; @@ @ == :> : ? AA 0 99 ", - " B %B %%%%%% ;;;; @ @@@@ CD DD>: ??E ? A0 00 0 ", - " B %%% % ;<< @ @ D D :: ? ? AAAAAA 0 ", - " B B F FG @@H @ D D I ???? A 0 0 ", - " B B B F F GG>>5 5?@@ABB<< 3 %% %0 C CC 0 8 8 %% D % ", - " &&& > > @ @@EFGHH HHHI JKCCC CCCL 8 MNN D ", - " & && OOO O> >> P@@ GGH QRQKKK CCSS MMMNT D ", - " & && UUU PP GGVVW W K XYX M TTDDDD ", - " &&&&& Z U UU PP[ [[ W] X Y M DD D ", - " ^ && &&&&&& >>>UU [ [ _] ]`Q XX X aaa MY MM D ", - " ^^ & &b ccd [ [ _] ]Qe X aaY Y f D DD ", - " & ^^ &gbb cc dh [i[ [ _] jee XX YYYMk l MMfD ", - " & ^ ^ ^^ gg&b cc d h i i [m m] n Y YYok p llM M f ", - " ^ ^ ^^^q rrstuvw i i m] xx n Y Y kp pl yy z ", - " ^ q{ | } ~dd \u007fi i m\u0080x x Y Y kk pl yy z \u0081 ", - " { \u0082 \u0082\u0083 \u0084\u0085 ~~~h \u007f\u0086\u007f\u0087 m \u0088 \u0088\u0089 xx Y YYkpp\u008al yyy \u0081\u0081 ", - " \u008b\u008c\u008c\u0082\u0084 \u0084 \u008d \u007f \u0086 \u0087\u008e\u008f\u008f m \u0090 \u0090 YY Y p ll y yy \u0081\u0081 ", - " \u0084\u0084 \u0084\u0091\u0092 \u0093 \u0094\u0086\u0087 \u0087 m m \u0090 \u0095 \u0096\u0096 Y p\u0097 \u0097yyy \u0098 \u0099 \u0099\u0099\u0099\u0099 \u0081\u0081 ", - " \u009a \u0082 \u0084\u0084\u0084 \u009b \u0093 \u0087\u009c \u008f\u008f\u009d \u009e\u009e\u009f\u009f\u0090 \u0090 \u0095 \u00a0\u00a0\u0097\u00a0\u00a0\u0097\u0097\u00a0y \u00a0\u00a0 ", - " \u00a1 \u00a2 \u00a2\u00a3 \u0082\u0082\u0084 \u00a4 \u00a4 \u00a5\u00a5 \u009e \u0090 \u0095 \u00a0\u00a0\u00a0\u00a0 \u00a0\u0097\u00a0\u00a0\u00a0\u00a0\u00a0 \u009a ", - " \u00a3\u00a3\u00a3 \u00a4\u00a4 \u00a4 \u00a5\u00a5\u009d \u009e\u00a6\u00a6 \u0090 \u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a7\u00a7\u00a7\u00a7\u00a7 \u009a\u009a", - " \u009a \u00a3 \u00a3\u00a3 \u00a4 \u009d \u00a6 \u00a8 \u00a9 \u00a0\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a7\u00a7\u00a7\u00a7 \u00a7 ", - " \u00a3 \u00a3 \u00a4 \u00aa \u009d\u009d \u00a6 \u00a6 \u00a8 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00ab\u00a0\u00a0\u00a0\u00a0\u00a7\u00a7\u00a7\u00a7 \u00a7\u00ac\u00ac ", - " \u00ad \u009a \u00ae \u00a3 \u00a3\u00a4\u00af \u00a4 \u00aa \u009d\u00b0 \u00b0\u00a6\u00a6 \u00b1 \u00b2 \u00b3 \u00a0\u00a0 \u00b4 \u00b4 \u00b4 \u00a7\u00a7 \u00ac\u00ac\u00ac ", - " \u00b5\u00b6\u00b6 \u00a3 \u00a4 \u00a4 \u00aa \u00b0 \u00b0 \u00b7\u00b8 \u00b4\u00b4 \u00b4 \u00b4 \u00b9 ", - "\u00ba \u00ae \u00a3\u00a3 \u00a4 \u00a4 \u00b0 \u00bb\u00bb\u00bb\u00bc\u00bd\u00be\u00b8\u00b8\u00b8 \u00b4\u00b4\u00b4 \u00b4\u00b4 \u00b4 \u00b9 \u00ba", - "\u00ba \u00bf \u00ad \u00ae \u00c0 \u00c1\u00af \u00c2 \u00c3 \u00bb\u00bd \u00b8\u00b8 \u00b4 \u00b4\u00b4 \u00c4\u00c4 \u00b9 \u00ba", - " \u00ad \u00ae \u00ae \u00ae \u00c0\u00c0\u00af\u00c1\u00c1\u00c1 \u00a4 \u00c2 \u00c3\u00bb \u00bd \u00b8 \u00b4 \u00b4 \u00c4\u00c4\u00c4 ", - " \u00c5\u00c5\u00c5 \u00c0\u00c0 \u00c1 \u00a4 \u00c3 \u00bd \u00b8\u00b8 \u00b4 \u00b4 ", - " \u00c6 \u00c1\u00c1 \u00a4 \u00c2\u00c2 \u00c7\u00bd \u00b4 ", - " \u00c0 \u00c8 \u00a4 \u00c9\u00c7 ", - " \u00c0 \u00c0 \u00c8 \u00c8 \u00c7\u00c7\u00c7\u00c7 \u00b4\u00b4\u00b4 \u00b4\u00b4 \u00b4 \u00ca ", - " \u00c0\u00c0 \u00cb \u00b4\u00b4 \u00ca ", - " \u00c0 \u00c6 \u00b4\u00b4 \u00ca\u00ca", - " \u00c0 \u00c6 \u00b4\u00b4 \u00ca\u00ca ", - " \u00ca \u00c0\u00c0\u00c0\u00c6 \u00ca \u00ca ", - " \u00c0\u00c0 \u00c6 \u00be \u00ca ", - " \u00c0\u00c0\u00c6 \u00cc\u00cc \u00ca ", - " \u00c0\u00c0\u00c6 \u00cd \u00ce ", - " \u00c0 \u00cd ", - " \u00cd ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! !!!!!!!! ############ ", - " !!!!!!!!!!!!!## #### $$$$$$$$$$ %%%%%% % %%%%% ", - " !!!!!!!!!!!!!!!! #### ### $$ $$ %% % %%%%%%% % % ", - " !!!!! !!!!!!!!!!! ## #### $ %%% % %%%%% %%%%%%%% %%%% ", - " %% &&&& !! !!! !!!!!!!!! !!!!! ### #### $$ ''' %%% % %%%% %%%%% %%%%%%% %", - " && !!! !!!!!!!!!!!!!!!!!!!!! ## ### '')) %%%%%%%%%% %% %% %%%%% ", - " &&&& !!!!!!! !!! ## ### ((((( '') )) %%%%% %%", - " && & !! !!!!!!!! ##### + ''')))* % %% %%", - " &&&&&&&&&&&&& ! !!! ! ! ### ,, ''' ))\u00cf*\u00d0% %%% %%%% ", - " && &&&& &&& !! !! ! ! ,,, \u00d1\u00d1)))//% %% % % ", - " &&& !&! !! !!! 1,,, 22..7%%/ %% 0%% %%% % %%% %% % ", - "&& !!! ! !!! 1 ,,,2. \u00d27 3\u00d3\u00d3%% %%%%% %% %%88 % % %% % ", - " && &&! !!!!!!! 5 :..\u00d4\u00d5333 % % 08 8 %% %% % ", - " & &&&!! 5 @ ;A\u00d6B 333% %00C0 00 88 88 %%% D % ", - " && & >>>>>5 @ @\u00d7B\u00d8H HH %%% KCCCCCC000 MM88 N% DD ", - " & O> >>> @@GHH HHQJK CCCS MMNN D ", - " & & O >> \u00d9\u00d9PP\u00da GGHHHHHHH QQQKKKC\u00dbXX MMTT DDD ", - " &&& && UU\u00d9 P WW \u00dbXX M TTDD D ", - " ^^&&& && U U P [ [__\u00dc]]]\u00dd` XXX X aM MM D ", - " \u00a1 ^^^ ^&& >>ccU [ [ ]] ]QQ X X aaYYYY M D ", - " && ^^^ &bb cc dd [[ [ ]ee XXXY YYYM MDD D ", - " & ^^ ^ gggb\u00de dc d h ii[[ mmmmm] ]n Y Y Yok Mlll \u00dfM ", - " ^ ^^ ^^^^ \u00e0\u00e0&st \u00e1 hii i m ]n Y Y k p lMM yy z \u00a1 ", - " \u00a1\u00a1 ^ \u00e2q \u00e3 } ~ hh i i m\u0080]xx n Y Y kk l y z ", - " \u00e2{{\u0082 \u0083 \u0085 \u00e4~~ \u007f\u007f\u007f\u0087\u0087\u0087i m m\u0088xxx Y Y pp\u00e5l yy z ", - " \u008b \u0084\u0084\u0083\u0084\u0084 \u00e6 h\u007f\u007f\u007f \u0087\u009c \u008em \u0090\u0090\u0090\u0090 YYY ppll yyy \u0081 ", - " \u008b\u008c\u008c\u0082\u0084\u0084 \u0084\u0091 \u008d\u0093 \u0086 \u009c \u008f\u008f m m \u0088\u0090 \u0095Y\u0096\u0096 Y p y yy \u0098 \u0099\u0099 \u0081 ", - " \u0084\u00a4\u0084\u0092\u0092\u009b \u0093\u00e7\u00e7\u0094\u0086\u0087\u0087\u0087 \u008f\u008f\u008f\u008fmmmm \u0090\u0090\u0090 \u0095 \u00a0\u0097p \u00a0 \u0097\u00a0y \u00a0 \u0099 \u0099 ", - " \u00a2 \u00a4\u0084\u0084 \u0091\u0092 \u00a4 \u00a5\u00a5\u008f \u009e\u009e \u0090\u0090 \u0095 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0 \u009a ", - " \u00a1 \u00a2 \u00a3\u00a3\u00a4 \u00a4\u00a4\u00a4 \u00a5 \u00a5\u009d \u009e\u009e \u0090 \u0095 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 \u009a ", - " \u009a \u00a3 \u00a3 \u00a4 \u00a4\u00a4 \u00a4 \u00a5\u00a5\u009d \u00a6 \u00a6\u009f \u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a7 \u00a7\u00a7 \u009a", - " \u00a3 \u00a4 \u009d\u009d\u009d \u00a6 \u00a6 \u00a8 \u00a9 \u00a0\u00a0\u00a0 \u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a7\u00a7 \u00a7\u00ac\u00ac \u00e8", - " \u00e9 \u00ad \u009a \u00ae \u00a3 \u00a3\u00a4 \u00aa \u009d \u00b0\u00a6 \u00a6 \u00a8 \u00a0\u00a0\u00a0\u00a0\u00ab \u00a0\u00a0\u00a7 \u00a7\u00a7 \u00ac\u00ac \u00ac ", - " \u00b5 \u00ad \u00a3 \u00a3 \u00a4 \u00a4 \u00aa \u00b0\u00b0 \u00b0\u00a6 \u00b7 \u00b2 \u00b4\u00b4\u00b4 \u00b4 \u00a7 \u00ac\u00ac\u00b9 ", - " \u00b5 \u00b6 \u00a3\u00a3 \u00af \u00a4 \u00b0 \u00bb\u00bd \u00bd \u00b8 \u00b4\u00b4 \u00b4\u00b4 \u00b4 \u00b9\u00b9 ", - "\u00ba \u00ae \u00a3 \u00a4 \u00c2\u00c2\u00c2\u00c2\u00bb \u00bb\u00bd\u00bd \u00b8 \u00b4\u00b4 \u00b4 \u00c4 \u00b9 \u00ba", - " \u00bf\u00bf \u00ad \u00ae \u00c0 \u00c1\u00c1 \u00a4 \u00a4 \u00c2 \u00bb \u00b8 \u00b4 \u00b4 \u00c4 \u00c4 ", - " \u00ae\u00ae\u00ae \u00c0\u00c0\u00c6\u00c1 \u00c1 \u00a4\u00a4\u00a4 \u00c2 \u00c3\u00c7 \u00b8 \u00b4 \u00b4 ", - " \u00c0 \u00c0 \u00c1\u00c1 \u00c2\u00c3 \u00ea\u00c7 \u00b4 ", - " \u00a4 \u00a4 \u00c2 \u00c9\u00c7 \u00b4 \u00b4 ", - " \u00c0 \u00c8\u00c8\u00a4 \u00c7 \u00b4 \u00b4\u00b4\u00b4\u00b4\u00b4 \u00b4 ", - " \u00c0\u00c0 \u00c6 \u00c7 \u00b4 \u00b4\u00b4\u00b4 \u00ca ", - " \u00c0\u00c0 \u00c6 \u00b4\u00b4\u00b4 \u00ca\u00ca", - " \u00c0\u00c6 \u00cb \u00b4\u00b4 \u00ca\u00ca ", - " \u00ca \u00c0\u00c0 \u00c6 \u00b4 \u00ca\u00ca ", - " \u00c0\u00c0 \u00c6 \u00c7 \u00be \u00ca\u00ca\u00ca ", - " \u00c0\u00c0 \u00c6 \u00be\u00be ", - " \u00c0\u00c0\u00c0\u00c0 \u00cc\u00cc \u00ca ", - " \u00c0\u00c0\u00c0\u00c6 \u00cd ", - " \u00cd ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!!!! !######### ######## $ %%%%%%% % %%% ", - " !!!!!!!!!!!!!!!### ## $$$$$$$$ % %%%% ", - " !!!!!!!!!!!!!!!! #### ### %%%% %%%%%%% %% %%%%%% ", - " !!!!!!!!!!!! !!!!!! ## #### ' %%% %%%%% %% %%%%%% %%%% ", - " &&& &&&&!!!!!!!!!!! !!!!!!!!!!!!!! ### #### '''''%% % %%%%%%% % % %%%%", - " &&& !!! ! !! !!!!!! ## ### ( ( ') * %%%%% % %% % ", - " & &&& & !!!!!!!!!!! ## # (((( '') )) % %% %%", - " & && &&& & ! !!!!!! #### + , '' **% %%%%%%% ", - " &&&&& && !! ! !!!! ,, ') ))\u00d0\u00d0% %% %% ", - " &&& && !!!! !! ,, ..))%%//% 0%% %% % % ", - " &&&& !!! !! ! ! 11,, 22 . 7\u00d3%% %% % 8 %%M %% % &&", - " !!&&&&&&&&&& !!!!! ,4556. .7773 %% %0 %%%%% %%%%%% %M % % % ", - " && &! !&&!!!9! 5 ::;;<< 3333% %00 M0 8M 88 % % % ", - " & &&!&&!!! >>> 5?@ ABB<\u00d8 3 %% %0 C0CCC 0M 8888 8 M%% % ", - " && > > @ @@EFGHH HHHI%JKCCC CCL M M NN D ", - " & && OOO O>> > P@@ GGH QRQKK CCSS MM NT DD ", - " & && UU P GGVVWW\u00dd\u00dd QK \u00db X M TT DDD ", - " &^&^& Z U U P[[ [_ W \u00dd \u00dd \u00dbX X Y M DD D ", - " ^ & &&&&& >>>UU [ _ _] ]`Q X YX aM MY M D ", - " ^^ ^& &b cd [ _ _] ]\u00ebQeQX Y aaY k f D DD ", - " & ^^ ^ &gbb cd h [[ [ _] eee XY oYY M l MMfD ", - " & ^ ^ ^ gg&b cc h\u00d9 ii \u008e[m m] ] n YYo p\u00e5llM Mff ", - " ^ ^ ^^q rrstuvw hi i \u008em \u0080] ] n Y Y kpkpll y z ", - " ^\u00e2q{ | } ~ ddd i i m m\u0080xxxx Y Y kkp ll yy z \u0081 ", - " {{\u0082 \u0082\u0083 \u0084\u0085 ~~~h \u007f\u0086\u007f \u0087\u0087 \u008e m \u0088 xx Y YYkppll yyy \u0081\u0081 ", - " \u008b\u008c\u008c\u0082\u0082 \u0084 \u008d\u0093\u00e7 \u0094\u0086 \u0087\u008e\u008f\u008f\u008f \u0088 \u0090 Y\u0096 Y p\u008all y yy \u0081\u0081 ", - " \u0084 \u0084\u0091\u0092 \u0093\u00e7\u00e7\u0094\u0086\u0087 \u0087 \u008f mm \u0088\u0088\u0090 \u0095 \u0096 Y p \u0097yyy \u0098 \u0099 \u0099\u0099\u0099\u0099 \u0081\u0081 ", - " \u009a \u0082 \u0084\u0084 \u0091\u0092\u00a4 \u0093 \u0087\u009c\u009c\u008f\u008f\u008f\u008f\u009d \u009e \u009f\u009f\u0090 \u0095 \u00a0\u00a0\u0097\u00a0\u00a0\u0097\u0097\u00a0y \u00a0\u00a0 ", - " \u00a1 \u00a2 \u00a2\u00a2 \u0082\u0082 \u0091 \u00a4 \u00a5\u00a5\u009c\u009d \u009e \u009f \u0090 \u0095 \u00a0\u00a0\u00a0\u00a0\u0097\u0097 \u00a0\u00a0\u00a0\u00a0\u00a0 \u009a ", - " \u00a3\u00a3\u0082 \u00a4\u00a4\u00a4\u00a4 \u00a5\u00a5\u009d \u00ec\u00a6\u00a6\u009f \u0090 \u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a7\u00a7\u00a7\u00a7\u00a7 \u009a\u009a", - " \u009a \u00a3 \u00a3 \u00a4\u00a4 \u009d \u00a6 \u00a6\u00a6 \u00a8 \u00a9 \u00a0\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a7\u00a7\u00a7\u00a7 \u00a7 ", - " \u00a3 \u00a3 \u00a4 \u00aa\u009d\u009d\u009d \u00b0\u00a6 \u00a6 \u00a8 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00ab\u00a0\u00a0\u00a0\u00a0\u00a7\u00a7\u00a7\u00a7 \u00a7\u00ac\u00ac ", - " \u00ad \u009a \u00ae \u00a3\u00a4\u00a4\u00af \u00aa\u00b0 \u00b0\u00a6\u00bd \u00b1 \u00b2 \u00b3 \u00a0\u00a0 \u00b4 \u00b4 \u00b4 \u00a7\u00a7 \u00ac\u00ac\u00ac ", - " \u00b5\u00b6\u00b6 \u00a3 \u00a4 \u00a4 \u00b0 \u00b0\u00bc \u00bd \u00b7\u00b8 \u00b4\u00b4\u00b4 \u00b4 \u00b9 ", - "\u00ba \u00ae \u00a3\u00a3\u00af \u00aa\u00aa \u00aa\u00b0\u00bb\u00bb\u00bb\u00bd\u00bd\u00be \u00b8\u00b8 \u00b4\u00b4\u00b4 \u00b4 \u00b4 \u00b9 \u00ba", - "\u00ba \u00bf \u00ad \u00ae \u00c0 \u00c1\u00a4 \u00a4 \u00c2 \u00c2\u00bb\u00bb \u00b8\u00b8 \u00b4 \u00b4\u00b4 \u00c4\u00c4 \u00b9 \u00ba", - " \u00ad \u00ae \u00ae \u00ae \u00c0 \u00af\u00c1\u00c1\u00a4 \u00c2 \u00c3 \u00c3\u00c7 \u00bd \u00b8 \u00b4 \u00b4 \u00c4\u00c4\u00c4 ", - " \u00c5\u00c5\u00c5 \u00c0\u00c6 \u00c6\u00c1\u00c6 \u00a4 \u00c2\u00c2\u00c3\u00c3 \u00c7\u00bd \u00b8 \u00b4 \u00b4 ", - " \u00c0\u00c6 \u00c1\u00a4 \u00a4 \u00c2\u00c7 \u00c7 \u00b4 \u00b4 ", - " \u00c0 \u00c8 \u00a4 \u00c9 \u00b4 \u00b4 ", - " \u00c0 \u00c0\u00c0 \u00c8\u00c8\u00a4 \u00c7\u00c7 \u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4 \u00b4 \u00ca ", - " \u00c0\u00c0 \u00cb \u00b4\u00b4 \u00b4 \u00ca ", - " \u00c0\u00c6 \u00c6 \u00b4\u00b4 \u00ca\u00ca", - " \u00c0\u00c6 \u00c6 \u00b4\u00b4 \u00ca\u00ca ", - " \u00ca \u00c0\u00c0 \u00ca \u00ca ", - " \u00c0\u00c0 \u00c6 \u00be \u00ca ", - " \u00c0\u00c0\u00c6 \u00cc\u00cc \u00ca ", - " \u00c0\u00c0\u00c6 \u00cd \u00ce ", - " \u00c0 \u00cd ", - " \u00cd ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! !!!!!!!! ############ ", - " !!!!!!!!!!!!!## #### $$$$$$$$$$ %%%%%% % %%%%% ", - " !!!!!!!!!!!!!!!! #### ### $$ $$ %% % %%%%%%% % % ", - " !!!!! !!!!!!!!!!! ## #### $ %%% % %%%%% %%%%%%%% %%%% ", - " %% &&&& !! !!! !!!!!!!!! !!!!! ### #### $$ ''' %%% % %%% %%%%% %%%%%%% %", - " && & !!! !!!!!!!!!!!!!!!!!!!!! ## ### '')) %%%%%%%%%% %%%%% %%%%% ", - " &&&& & !!!!!!! !!! ## ### ((((( '') )) %%%%% %%", - " && & & !! !!!!!!!! ##### + ''')))* *% %% %%", - " &&&&& &&&&&&& ! !!! ! ! ### ,, ''' ))\u00cf*\u00d0% %%% %%% ", - " && &&&& &&& !! !! ! ! ,,, \u00d1\u00d1)))//% %% % % ", - " &&& !&! ! ! !!! 1,,, 22..7%%/ %% 0%% %%% M %%% %% % ", - "&& !!! ! !!! 1 ,,,2. 7 \u00d333%% 0%%%%% %% 88%%888 %%%M %% ", - " && !!!!!&!! !!!!!!! 5 :..\u00d2\u00d5333 % % 0 8M 8 %%% % % ", - " & &&&!! 5 @ ;A\u00d6B<333% %00 00 88 MMM 88 M% D % ", - " && & >>>>>5 @ @\u00d7B\u00d8H HH %%% KCCCCCC000 88 MN% DD ", - " & O> >>> @@@GHH HHQJK CCCS MMNN D ", - " && & O >> \u00d9\u00d9\u00d9P\u00da GGHHHHHHH QQQKKKC\u00dbXX MMTT DDD ", - " &&& && UU\u00d9 \u00d9P W\u00ed \u00dbXX M TTDD D ", - " ^^&&^ && U U \u00d9P[ [ ___\u00dc\u00ed]]\u00dd` QXXX X YY MM D ", - " \u00a1 ^^^ & & >>Uc\u00d9 [ _ ]] ]`QQ X X aaYYYY M D ", - " && ^^^ ^ &bb ccc h \u00d9 [[ [ _ jee XXXY YYY M MDD D ", - " & ^^ ^ ^gggb\u00de dc d \u00d9 \u00d9 i [ [ mmm] ] n YYY Yok klll \u00dfM ", - " ^ ^^ ^^^ \u00e0\u00e0&st \u00e1 d h\u00d9ii \u008e[m ]n Y Y k p\u00e5\u00e5lM yy z \u00a1 ", - " \u00a1\u00a1 ^ \u00e2q \u00e3 } ddd hi i \u008e\u008e\u008em m\u0080]xxxx Y Y kk p l y z ", - " \u00e2{{\u0082 \u0083 \u0085 \u00e4~~ \u007f\u007f\u0087\u0087 \u008e \u008em m\u0088x Y Y pppl yy z ", - " \u008b \u0084\u0084\u0083\u0084\u0084 \u00e6\u00ee\u00eeh\u007f\u007f\u007f \u0087 m \u0090\u0090\u0090\u0090 YYY p\u008all yyy \u0081 ", - " \u008b\u008c\u008c\u0082\u0082\u0084 \u0084\u0091 \u008d\u0093 \u0094\u0086 \u0087 \u008e\u008f \u008f m\u0088 \u0090 \u0095Y\u0096\u0096 Y p y yy \u0098 \u0099\u0099 \u0081 ", - " \u0082 \u00a4\u0084\u0092\u0092\u009b \u0093\u00e7\u00e7\u0094\u0086\u0087\u0087\u009c \u009c\u00ef \u008f\u008f mm \u0088\u0088 \u0095 \u00a0pp \u00a0 \u0097\u00a0y \u00a0 \u0099 \u0099 ", - " \u00a2 \u00a4\u0084\u0084 \u0092\u00a4\u00a4 \u00a5\u00a5\u008f\u008f\u009d \u009d \u009e \u009f\u0090 \u0095 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0 \u009a ", - " \u00a1 \u00a2 \u00a3\u00a3\u00a4 \u00a4\u00a4 \u00a5 \u00a5\u00ef\u009d \u009d\u009e \u009f \u0090 \u0095 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 \u009a ", - " \u009a \u00a3 \u00a3 \u00a4 \u00a4\u00a4 \u00a4 \u00ef \u009d \u00a6\u00a6 \u009f \u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a7 \u00a7\u00a7 \u009a", - " \u00a3 \u00a4 \u009d\u009d\u009d \u009d\u00a6\u00a6\u00a6 \u00a8 \u00a9 \u00a0\u00a0\u00a0 \u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a7\u00a7 \u00a7\u00ac\u00ac \u00e8", - " \u00e9 \u00ad \u009a \u00ae \u00a3\u00a3 \u00a4 \u00aa \u009d \u00b0\u00bc\u00a6\u00a6 \u00a8 \u00a0\u00a0\u00a0\u00a0\u00ab \u00a0\u00a0\u00a7 \u00a7\u00a7 \u00ac\u00ac \u00ac ", - " \u00b5 \u00ad \u00a3 \u00a4\u00a4 \u00a4 \u00b0\u00b0 \u00bc \u00bd \u00b7 \u00b2 \u00b4\u00b4\u00b4 \u00b4 \u00a7 \u00ac\u00ac\u00b9 ", - " \u00b5 \u00b6 \u00a3 \u00af \u00af \u00a4 \u00aa\u00aa \u00b0\u00bb\u00bd \u00b8 \u00b4\u00b4 \u00b4\u00b4 \u00b4 \u00b9\u00b9 ", - "\u00ba \u00ae \u00a3\u00af \u00a4 \u00a4 \u00c2\u00c2\u00c2\u00c2\u00bb \u00bb\u00bd \u00b8\u00b8 \u00b4 \u00b4 \u00c4 \u00b9 \u00ba", - " \u00bf\u00bf \u00ad \u00ae \u00c0 \u00af\u00c1 \u00a4 \u00a4 \u00c2 \u00c3 \u00bb\u00bb \u00b8 \u00b4 \u00b4 \u00c4 \u00c4 ", - " \u00ae\u00ae\u00ae \u00c0\u00c6 \u00c6\u00c1\u00c1 \u00a4\u00a4 \u00c2\u00c7\u00c3\u00c7 \u00b8 \u00b4 \u00b4 ", - " \u00c0 \u00c0\u00c6 \u00c1\u00c1 \u00c2\u00c2\u00c3 \u00ea\u00bd \u00b4 ", - " \u00c0\u00c6 \u00a4 \u00a4 \u00c9\u00c7 \u00b4 \u00b4 ", - " \u00c8\u00c8\u00c8 \u00c7\u00c7 \u00b4\u00b4 ", - " \u00c0 \u00c8 \u00c7 \u00b4 \u00b4\u00b4\u00b4\u00b4 \u00b4 \u00ca ", - " \u00c0\u00c6 \u00c6 \u00b4\u00b4 \u00ca\u00ca", - " \u00c0\u00c6 \u00c6 \u00cb \u00b4\u00b4 \u00ca\u00ca ", - " \u00ca \u00c0\u00c0\u00c6 \u00c6 \u00b4 \u00ca\u00ca ", - " \u00c0\u00c0 \u00c6 \u00c7 \u00be \u00ca\u00ca\u00ca ", - " \u00c0\u00c0 \u00be\u00be ", - " \u00c0\u00c0\u00c0\u00c0 \u00cc\u00cc \u00ca ", - " \u00c0\u00c0\u00c0\u00c6 \u00cd ", - " \u00cd ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/simplify-zhao-saalfeld-500-1000-2.0-grid-reference.json b/tests/visual_tests/grids/simplify-zhao-saalfeld-500-1000-2.0-grid-reference.json deleted file mode 100644 index 8c3f33c27..000000000 --- a/tests/visual_tests/grids/simplify-zhao-saalfeld-500-1000-2.0-grid-reference.json +++ /dev/null @@ -1,446 +0,0 @@ -{ - "keys": [ - "", - "24", - "71", - "245", - "238", - "154", - "207", - "82", - "189", - "60", - "132", - "205", - "72", - "45", - "103", - "98", - "51", - "153", - "163", - "241", - "58", - "206", - "102", - "30", - "231", - "65", - "191", - "182", - "110", - "186", - "138", - "233", - "80", - "236", - "170", - "210", - "89", - "86", - "140", - "74", - "200", - "68", - "202", - "93", - "94", - "165", - "199", - "84", - "194", - "96", - "2", - "117", - "31", - "162", - "12", - "114", - "107", - "50", - "100", - "190", - "88", - "83", - "150", - "120", - "85", - "175", - "97", - "155", - "235", - "226", - "13", - "116", - "36", - "18", - "214", - "244", - "41", - "234", - "113", - "126", - "188", - "118", - "130", - "79", - "34", - "90", - "78", - "215", - "224", - "220", - "14", - "193", - "172", - "131", - "75", - "42", - "181", - "54", - "230", - "158", - "38", - "225", - "211", - "192", - "208", - "197", - "152", - "56", - "73", - "39", - "164", - "212", - "183", - "19", - "35", - "40", - "185", - "26", - "77", - "104", - "69", - "119", - "23", - "223", - "229", - "63", - "95", - "157", - "59", - "87", - "204", - "92", - "121", - "49", - "21", - "198", - "67", - "161", - "52", - "28", - "166", - "203", - "177", - "20", - "195", - "64", - "6", - "221", - "148", - "201", - "43", - "17", - "115", - "144", - "149", - "227", - "9", - "217", - "218", - "7", - "122", - "141", - "108", - "151", - "61", - "222", - "196", - "160", - "216", - "123", - "124", - "33", - "180", - "228", - "8", - "178", - "219", - "209", - "179", - "159", - "232", - "146", - "62", - "243", - "147", - "91", - "99", - "167", - "27" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!!!!!!!#################### $$$$$$ $$$ ", - " !!!!!!!!!!!!!!#### ##### %%%%%%%%%%%% $$$$$$ $$$ $$$$$$$$ ", - " !!!!!!!!!!!!!!!!!!###### #### %%%%%% $$$$$$ $$$$$$$$$$$$$$ $$$$$ ", - " !!!!!!!!!!!!!!!!!!!! ### ##### % & $$$$ $$$$$$$$ $$$$$$$$$$$$$$$ ", - " $$ ''''''''!!!!!!!!!!! !!!!!!!!!!!!!!! ### #### %% &&&&&$$ $$$$$$$ $$$$ $$$$$$$$$$$$ $$ $", - " '''' !! !!!!!!!!!!!!!!!!!!!!!#### #### ( &&&)) $$$$$$$$$$$ $$$$$ $$ ", - " '$''' ! !!!!!!!!!!!!! ####### (((((( &&)))))*$$$$$ $$$", - " ''' ''' !! !!!!!!!!! ###### + ,&&&&))** $$ $$$$ $$$", - " ' ''''''' '''' ! !! !!!! ### ,,, &&)))))*$$ $$$$$$$$$ ", - " '' ''''' '''! !!!!!! !!!! ,,,, -.))/$/$$ 0$ $$$ $ $$ ", - " '''''' ''!! !!! !!!! 1,,,,22-33$33/$$ $$ $$$0 $$$ $$$ $$ $ ''", - " !!'!!!!!!!!!! ! !!!!!! 1,,4,2-5-3336 7 $6 $$$$$$ $$$$$$$$$$$$$$$ $8 $$ $$ ", - " '' ''! ''!!!9! ::: ;;<<<66666$$ $ 0 80== 8== $$$$$$ $$ ", - " ' !' ''''!!!! > : ? @ABBC6C6$$ $$0DD00 00 ==== == $$ EE$$ ", - " ' ''' >> >>>FFFFGBHIIIIIJ$$KKDDKDDDD00L 88= MM$ E$ ", - " '' ''' NNN N> >>>FOFFFHHI IP KK DDDQQ 88MMR E ", - " '' ''' N N>>SSSOOTT HIIIIIIII PK KKKDUVVV 88RREEEE ", - " '''' '' W NN XX X OYY YZ Z[]] ^ VVV__ 88 RREE E ", - " ` aa '' ''''''' > >XXX O Y Y ZbccccdP VVV V e88 8_ 88 EE E ", - " ` ' aaa ''' '' >>fff Y Y cc ccPgPV V eee___8 888 E EE ", - " ' aaa aa '''h ff ii YYj Y cc ggg VVVV ___8k l 88mEE E E E ", - " ''' aaa a aann'oo fff i pS qqqqYYrrrrrc cgs ___ _kk 8lll8t8mm ", - " aaa aaaaaauvw'xxyzz i pq q r rcc { s _ __ |k} }l88 ~~ \u007f ` ", - " `` aa\u0080auu z \u0081 \u0082\u0082ii qq q r r\u0083{{{{s _ __ kk} }l ~~ \u007f \u0084\u0084 ", - " \u0080\u0085\u0085\u0086 \u0086\u0087 \u0088\u0089 \u0082\u0082\u0082p \u008a\u008b\u008a\u008c\u008c\u008c\u008c r r\u008d{{ {{ ___ __k}}ll ~~~~ \u007f\u008e \u0084 ", - " \u008f\u0090\u0090\u0090\u0086\u0091\u0091\u0087\u0091\u0091\u0091 \u0092\u0092pp\u008a\u008a\u008b\u0093 \u008c\u0094j\u0095r r \u0096\u0096 \u0096 ____\u0097 __}}llll ~~~ \u0084\u0084\u0084 ", - " \u008f\u0090\u0090\u0090 \u0091\u0086 \u0091\u0098 \u0092\u0092\u0099 \u009a\u008b\u008c \u008c \u0095\u0095 r r\u008d \u0096\u0096 \u009b\u009b_\u0097\u0097 _k}l l \u009c~~~\u009d \u009e \u009f\u009f\u009f\u009f \u009f\u009f \u0084\u0084\u0084 ", - " \u00a0 \u0086 \u0091\u0091\u0091\u00a1\u00a1\u00a2 \u0099\u0099\u00a3\u009a\u008b\u008c\u008c\u0094 \u0095\u0095\u0095\u0095rr\u00a4r\u00a5\u0096 \u0096 \u009b \u0097 _\u009d}}\u009d\u009d\u00a6\u00a6\u009d\u009d \u009d\u009d \u009f \u00a0 ", - " \u00a0 \u00a7 \u00a7 \u0086\u0091\u0091 \u0098\u0098\u00a8\u00a8\u00a8 \u00a9\u00aa\u00aa\u0095 \u00a4\u00a4 \u0096\u0096 \u009b\u009b \u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d \u00a0\u00a0 ", - " \u00a0 \u00a7\u00a7 \u00a7\u00ab\u00ab\u0086 \u00a8\u00a8\u00a8\u00a8\u00a8 \u00ac\u00aa\u00aa\u00aa\u00ad \u00a4\u00a4\u00a5 \u0096 \u009b \u009d\u009d\u009d\u009d\u009d\u009d \u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u00ae\u00ae\u00ae\u00ae\u00ae \u00a0\u00a0", - " \u00a0 \u00ab\u00ab \u00a8\u00ab \u00a8\u00a8 \u00a8\u00a8\u00a8\u00a8\u00a8 \u00aa\u00aa\u00ad \u00af \u00af\u00af \u00b0\u00b0 \u009d\u009d\u009d\u009d \u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d \u009d\u00ae\u00ae \u00ae\u00ae\u00b1\u00b1 \u00a0", - " \u00b2 \u00b3 \u00ab \u00ab \u00a8 \u00b4\u00ad\u00ad\u00ad\u00ad \u00b5 \u00af \u00b0 \u00b6\u00b6 \u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00b1 \u00b7", - " \u00b8\u00b8 \u00a0\u00a0 \u00b3\u00b3\u00b3 \u00ab \u00ab\u00ab\u00a8\u00b9 \u00a8 \u00b4 \u00ad\u00ad \u00b5\u00b5 \u00af \u00b0 \u00ba \u00bb \u00bc \u009d\u009d\u009d\u009d\u00bd\u00be\u00be \u009d\u009d\u00ae\u00ae\u00ae\u00ae\u00ae\u00b1\u00b1\u00b1\u00b1 ", - " \u00bf\u00c0 \u00c1 \u00a0 \u00ab \u00ab \u00a8\u00a8 \u00a8 \u00b4 \u00b5\u00b5\u00b5\u00b5\u00b5 \u00c2 \u00c3\u00c4\u00c4 \u00bb \u00be\u00be\u00be\u00be\u00be \u00be \u00b1\u00b1\u00c5 \u00c6", - "\u00c6\u00bf\u00c1 \u00b3\u00b3\u00b3 \u00ab\u00ab \u00a8\u00a8 \u00a8 \u00b4\u00b4\u00b4 \u00b5 \u00c7\u00c7\u00c7 \u00c2 \u00c4\u00c4\u00c4 \u00be\u00be\u00be \u00be\u00be\u00be \u00be \u00c5\u00c5 \u00c6", - "\u00c6 \u00c8 \u00b8\u00b8 \u00b3\u00b3 \u00ab \u00c9\u00a8 \u00a8 \u00ca\u00ca\u00ca\u00ca\u00c7\u00c7 \u00c7\u00cb \u00c4\u00c4 \u00be \u00be \u00be\u00be \u00cc\u00cc \u00c5 \u00c6\u00c6", - "\u00c6\u00c8\u00c8 \u00b8\u00b8 \u00b3 \u00b3 \u00b3 \u00b3 \u00cd\u00cd\u00b9\u00c9\u00c9\u00c9 \u00a8 \u00a8 \u00ca \u00ce \u00ce\u00c7\u00c2\u00c2 \u00c4\u00c4 \u00be\u00be \u00be \u00cc \u00cc\u00cc\u00cc ", - " \u00b3\u00b3\u00b3 \u00cf\u00cf\u00cf \u00cd\u00cd \u00c9\u00c9\u00c9\u00d0 \u00a8\u00a8 \u00ca \u00ca \u00ce\u00ce\u00d1\u00c2 \u00c4\u00c4 \u00be \u00be\u00be \u00cc ", - " \u00b3 \u00cf \u00cd\u00cd \u00cd\u00cd \u00cd\u00cd \u00c9\u00c9 \u00a8 \u00ca\u00ca\u00ce \u00d2\u00d2 \u00be \u00be ", - " \u00d0 \u00d3\u00d0 \u00a8 \u00ca \u00d4\u00d1 \u00be \u00be ", - " \u00cd \u00cd\u00cd \u00d3\u00d3\u00d3 \u00d1 \u00d1 \u00be\u00be\u00be\u00be\u00be\u00be\u00be\u00be\u00be \u00be ", - " \u00cd\u00cd \u00d0 \u00be \u00be\u00be\u00be \u00be \u00d5 ", - " \u00cd\u00cd \u00d0\u00d0\u00d0 \u00be\u00be\u00be \u00d5\u00d5", - " \u00cd\u00cd\u00d0 \u00d0\u00d0 \u00d6 \u00be\u00be\u00be \u00d5\u00d5 ", - " \u00d5 \u00cd\u00cd\u00cd \u00d0 \u00be \u00d5\u00d5 ", - " \u00cd\u00cd \u00d0\u00d0 \u00d1\u00d1 \u00d7 \u00d7 ", - " \u00cd\u00cd\u00d0\u00d0 \u00d8 \u00d7\u00d7 \u00d5\u00d5\u00d5 ", - " \u00cd\u00cd\u00cd\u00cd \u00d8\u00d8 \u00d9 \u00da \u00be ", - " \u00cd\u00cd\u00cd\u00cd \u00d9\u00d9 \u00d9 \u00be ", - " \u00d9\u00d9\u00d9 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!!!!!!!#################### $$$$$$ $$$ ", - " !!!!!!!!!!!!!!#### ##### %%%%%%%%%%%% $$$$$$ $$$ $$$$$$$$ ", - " !!!!!!!!!!!!!!!!!!###### #### %%%%%% $$$$$$ $$$$$$$$$$$$$$ $$$$$ ", - " !!!!!!!!!!!!!!!!!!!! ### ##### % & $$$$ $$$$$$$$ $$$$$$$$$$$$$$$ ", - " $$ ''''''''!!!!!!!!!!! !!!!!!!!!!!!!!! ### #### %% &&&&&$$ $$$$$$$$$$$$ $$$$$$$$$$$$ $$ $", - " '''' !! !!!!!!!!!!!!!!!!!!!!!#### #### ( &&&)) $$$$$$$$$$$ $$$$$ $$ ", - " '$''' ' ! !!!!!!!!!!!!! ####### (((((( &&)))))*$$$$$ $$$", - " ''' ''' ' !! !!!!!!!!! ###### + ,&&&&))** $$ $$$$ $$$", - " ' ''''''' '''' ! !! !!!! ### ,,, &&)))))*$$ $$$$$$$$ ", - " '' ''''' '''! !!!!! !!!! ,,,, -.))/$/$$ 0$ $$ $ $$ ", - " '''''' ''!! !!! !!!! 1,,,,22-33$33/$$ $$ $$$$ $88 $$$ $$ $ ''", - " !!'! ! !!!!!! 1,,4,2- -33366 $6 $$$$$$ $$$$$$$$$$$$$$ $$8 $$ $ ", - " '' ''! ''!!!9! ::: ;;<<666666$$ $ 0 80==8 == $$$ $$ $$ ", - " ' '' !''''!!!! > : ? @ABBC6C6$$ $$00DDD 00 ==== == 8$$ EE$$ ", - " ' ''' >> >>>FFFFGBHIIIIIJ$$KKDDK00DD00L 88= MM$ E$ ", - " '' ''' NNN N>>>>>FOFFFHHI IP KK DDDQQ 88MMR E ", - " '' ''' N N>> SSSOTT HIIIIIIII PKPKKKDUVVV 88RREEEE ", - " '''' '' W NN XXXX OYY YZ Z[]\u00db^ ^ PUVVV__ 8 RREE E ", - " ` aa '' ''''''' > >XXX O Y Z ZbccccdP VVV _V e8 _ 8 EE E ", - " ` ' aaa '''' '' >>Xfi Y Y cc cccPgPV V eee___ 888 E EE ", - " ' aaa a '''h fff i Yq Y cc ggg VVV_ ___ 8 l 88mEE E E E ", - " ''' aaa a aann'oo fff ipS SqqjYYrrrrrc cgs ___ _kk \u00dclll8t8mm ", - " aaa aaaaaauvw'xxyzz i pq q jr rcc cc _ __ |k}k}ll8 ~~ \u007f ` ", - " `` aa\u0080auu z \u0081 \u0082iiii qq q r r\u0083{{{{{ _ __ kk} ll ~~ \u007f \u0084\u0084 ", - " \u0080\u0085\u0085\u0086 \u0086\u0087 \u0088\u0089 \u0082\u0082\u0082\u0082 \u008a\u008a\u008a\u008c\u008c\u008c\u008c jr r\u008d{ {{ ___ __k}}ll ~~~~ \u007f\u008e \u0084 ", - " \u008f\u0090\u0090\u0090\u0086\u0091\u0091\u0087\u0091\u0091\u0091 \u00dd\u0092\u0092\u008a\u008a\u008a\u008b\u0093 \u008cjj\u0095\u0095 r \u0096\u0096 \u0096 ____\u0097 __}}lll ~~~ \u0084\u0084\u0084 ", - " \u008f\u0090\u0090\u0090\u0086\u0091 \u0091\u0098 \u0092\u0092\u0099 \u00a3\u009a\u008b\u008c \u008c \u0095\u0095 rrr\u008dr \u008d\u008d\u0096 \u009b\u009b_\u0097\u0097 _k}l l \u009c~~~\u009d \u009e \u009f\u009f\u009f\u009f \u009f\u009f \u0084\u0084\u0084 ", - " \u00a0 \u0086 \u0086\u0091\u0091\u0091\u00a1\u00a1\u00a2\u00a8 \u0099\u0099\u00a3\u009a\u008b\u008c\u008c\u0094\u0094\u0095 \u0095\u0095\u0095 \u00a4r\u00a5\u00a5\u0096 \u009b \u0097 _\u009d}}\u009d\u009d\u00a6\u00a6\u009d\u009d \u009d\u009d \u009f \u00a0 ", - " \u00a0 \u00a7 \u00a7 \u0086\u0091\u0091 \u0098\u00a8\u00a8\u00a8 \u00a9\u00aa\u00aa\u0095\u00ad \u00ad\u00a4\u00a4\u00a5 \u0096\u0096 \u009b\u009b \u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d \u00a0\u00a0 ", - " \u00a0 \u00a7\u00a7 \u00ab\u00a7\u00ab\u00ab\u0086 \u00a8\u00a8\u00a8\u00a8\u00a8 \u00ac\u00aa\u00aa\u00aa\u00ad \u00a4\u00af\u00a5 \u0096 \u009b \u009d\u009d\u009d\u009d\u009d\u009d \u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u00ae\u00ae\u00ae\u00ae\u00ae \u00a0\u00a0", - " \u00a0 \u00ab \u00ab \u00a8\u00a8 \u00a8\u00a8 \u00a8 \u00de\u00ad\u00ad \u00af\u00af\u00af\u00af \u00b0\u00b0 \u009d\u009d\u009d\u009d \u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d \u009d\u00ae\u00ae \u00ae\u00ae\u00b1\u00b1 \u00a0", - " \u00b2 \u00b3 \u00ab \u00ab \u00a8\u00a8 \u00b4\u00ad\u00ad\u00ad\u00b4 \u00b5\u00af\u00af\u00af \u00b0 \u00b6\u00b6 \u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00b1 \u00b7", - " \u00b8\u00b8 \u00a0\u00a0 \u00b3\u00b3\u00b3 \u00ab \u00ab\u00a8\u00b9\u00b9 \u00a8 \u00b4 \u00ad\u00ad \u00b5\u00b5\u00af\u00af \u00b0 \u00ba \u00bb \u00bc \u009d\u009d\u009d\u009d\u00bd\u00be\u00be \u009d\u009d\u00ae\u00ae\u00ae\u00ae\u00ae\u00b1\u00b1\u00b1\u00b1 ", - " \u00bf\u00c0 \u00c1 \u00a0 \u00ab \u00b9\u00a8\u00a8 \u00a8 \u00b5\u00b5\u00b5\u00b5\u00cb \u00c2 \u00c3\u00c4\u00c4 \u00bb \u00be\u00be\u00be\u00be\u00be \u00be \u00b1\u00b1\u00c5 \u00c6", - "\u00c6\u00bf\u00c1 \u00b3\u00b3\u00b3 \u00ab\u00ab\u00b9 \u00a8\u00b9 \u00a8 \u00b4\u00b4 \u00b4\u00b5\u00c7\u00c7\u00c7\u00c2 \u00c4\u00c4\u00c4 \u00be\u00be\u00be \u00be\u00be\u00be \u00be \u00c5\u00c5 \u00c6", - "\u00c6 \u00c8 \u00b8\u00b8 \u00b3\u00b3 \u00cd\u00b9 \u00c9\u00a8 \u00a8 \u00ca\u00ca\u00ca\u00ca\u00c7 \u00c7\u00c7\u00cb \u00c4\u00c4 \u00be\u00be \u00be \u00be\u00be \u00cc\u00cc \u00c5 \u00c6\u00c6", - "\u00c6\u00c8\u00c8 \u00b8\u00b8 \u00b3 \u00b3 \u00b3 \u00b3 \u00cd \u00b9\u00c9\u00c9\u00a8 \u00a8 \u00a8 \u00ca \u00ca\u00ca \u00c7\u00c7 \u00c2 \u00c4 \u00be\u00be \u00be \u00cc \u00cc\u00cc\u00cc ", - " \u00b3\u00b3\u00b3 \u00cf\u00cf\u00cf \u00cd\u00d0 \u00d0\u00c9\u00c9\u00d0 \u00a8\u00a8 \u00ca\u00ca\u00ce\u00ce\u00ce\u00d1\u00c2 \u00c4 \u00be \u00be\u00be \u00cc ", - " \u00b3 \u00cf \u00cd\u00cd \u00cd\u00cd \u00cd\u00d0 \u00c9\u00a8 \u00a8 \u00ca\u00ca\u00ce \u00d2\u00d2 \u00be \u00be\u00be ", - " \u00cd\u00d0 \u00d3\u00a8 \u00a8 \u00d4\u00d1 \u00be \u00be ", - " \u00cd \u00cd\u00cd \u00d3\u00d3\u00a8 \u00d1\u00d1\u00d1 \u00be \u00be\u00be\u00be\u00be\u00be\u00be\u00be \u00be ", - " \u00cd\u00cd \u00d3 \u00be \u00be\u00be\u00be \u00be \u00d5 ", - " \u00cd\u00cd \u00d0\u00d0\u00d0 \u00be\u00be\u00be \u00d5\u00d5", - " \u00cd\u00cd\u00d0 \u00d0\u00d0 \u00d6 \u00be\u00be\u00be \u00d5\u00d5 ", - " \u00d5 \u00cd\u00cd\u00d0 \u00d0 \u00be \u00d5\u00d5 ", - " \u00cd\u00cd \u00d0 \u00d1\u00d1 \u00d7 \u00d7 ", - " \u00cd\u00cd\u00d0 \u00d8 \u00d7\u00d7 \u00d5\u00d5\u00d5 ", - " \u00cd\u00cd\u00cd\u00cd \u00d8\u00d8 \u00d9 \u00da \u00be ", - " \u00cd\u00cd\u00cd\u00cd \u00d9\u00d9 \u00d9 \u00be ", - " \u00d9\u00d9\u00d9 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/style-level-compositing-tiled-0,0-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/style-level-compositing-tiled-0,0-512-512-1.0-grid-reference.json deleted file mode 100644 index 6dd6a4db4..000000000 --- a/tests/visual_tests/grids/style-level-compositing-tiled-0,0-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "keys": [ - "", - "71", - "24", - "245", - "207", - "238", - "82", - "132", - "205", - "51", - "65", - "231", - "186", - "165", - "114", - "2", - "120", - "235", - "116", - "13", - "113", - "41", - "234", - "34", - "78", - "48", - "15", - "90", - "173", - "215", - "1", - "75", - "224", - "181", - "79", - "42", - "158", - "208", - "38", - "127", - "70", - "167", - "212", - "76", - "39", - "164", - "183", - "87", - "69", - "104", - "77", - "157", - "59", - "21", - "49" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!! ", - " !!!!!!!!!! ", - " !!!!! !!!!!! ! ", - " ### #### !!!!!!!!!!!!!! ", - " ### ######### ! !!!!!!!!!!!!!!! ", - " ############ !!!! !!!!!!!!!!!!! ", - " ############## ! !!!!!!!!!!!!!!!!!! ", - " ## ############### !! !! !!!!!!!!!!!!!!!!! ", - " # ################# !!! ! !! !!!!!!!!!!! ", - " ################### !!!!!!!!!!! !!!!!!!!! !!! !! ! ", - " ################## !!!!!!!!!!!!!!!!!!!!!!!!! !!! !!! ", - " ################# # !!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!! ", - " ## ################# !!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!! ", - " ## ######## ######## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ### ####### ######## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " #### ## ######### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ###### ######## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ##### ## ######## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " # ################## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ###### ### ##### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ## ########### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ## ##### ####### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ### #### # ###### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ## ###### ############# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " #### ## ############# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ", - " # # ## ####### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ## # ## # ##### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ## ## # # ## ## #### ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ### # # ####### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " #### # ### ######## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ### # # # ### ############# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ### #### ## # ### ## # !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " # ### ### #### ## ### !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ######## ##### ######### !!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ######## # ## ## ######### !!!!!!!!!!!!!!!!!!!!!!!!!!! ! ", - " ### # ######## !!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ### !!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ###### # ##### !!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ###### ### ### #### ### #### !!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ####### ### ####### ## ###### !!!!!!!!!!!!!!!!!!!!!!!! ", - " ######## # #### ######## ###### ## !!!!!!!!!!!!!!!!!!!!!!!!! ", - " ############ ## #### # ### ####### !!!!!!!!!!!!!!!!!!!!!! ! ", - " #### ####### ## ### ############ !!!!!!!!!!!!!!!!!!!!!!!! ", - " $ ### ########## # ## ############## ! !!!!!!!!!!!!!!!!!!!!!! ", - " %%% ########## ## ############# !!!!!!!!!!!!!!!!!!!!!! & ", - " %%%%%%% # # ####### ### ############### !!!!!!!!!!!!!!!!!!!! !! ", - " %%%%%%%%%%%% % # # # ############ ### ###### ######## !!!!!!!!!!!!!!!!!!!!!!!! ", - " %%%%%%%%%%%%%%%%## ###### ## ########## ###### ## ########## !!!!!!!!!!!!!!!!!!!!!! ", - " %%%%%%%%%%%%%%%%%### ############# ##### ### ### ### ### # ###### !!!!!!!!!!!!!!!!!!! ", - " %%%%%%%%%%%%%%%%%%###################### ### # #### #### # ##### !!!!!!!!!!!!!!!!!!!! ", - " %%%%%%%%%%%%%%%%%%################### # ### ############ ######### !!!!!!!!!!!!!!!!! ", - " %%%%%%%%%%%%%%%%###################################### #### ## ###### !!!!!!!!!!!!!!! ", - " %%%%%%%%%%%%%%%########################################### ######### !!!!!!!!!!!!!! ", - " % %%%%%%%%%%%%%%%########################################## ######### !!!!!!!!!!!!!! ' ", - " %%%%%%%%%%%%%%%%%%%####################################### # ##### ## !!!!!!!!!! ! '' '''' ", - " %%%%%%%%%%%%%%%%%%###################################### ## ######## ## !!!!!!!!! ''''''' ", - " $ %%%%%%%%%%%%%%%%%%###################################### ### ######### !!!!!!!!! '''''' ", - " %%%%%%%%%%%%%%###################################### #### ####### !!!!!!!!! ''''' ", - " %% %%%%%%%%%%%%%%%#################################### # # # ###### !!!!!!!! '' ", - " %%%%%%%%%%%%%%%%%################################### # ### # !!!!!!! ", - " %%%%%%%%%%%%%%%%%%################################### # # #### ## !!!!! ( ", - " %%%%%%%%%%%%%%%%%%################################## ##### !!!!! ( ", - " %%%%%%%%%%%%%%%%%################################# ####### !!!! ", - " %%%%%%%%%%%%%%% %%%%%############################### ###### # !! )", - " %%%%%% %% %%%%############################ ###### # ", - " % %%%% %%%############################# ######## ### ) ", - " %%%% %%%############################# ########### ))) ", - " % % %% %%############################## ########### ))) ", - " %%% % %%%############################### ## ########### )))) ", - " %% %%%################################ ############# ))) ", - " %% % %%################################## ############### *) )))", - " % #################################### ################ *** ))", - " % # ##################################################### *** )))", - " % % ################################## ################# *** )))", - " % ################################## ################# * )))", - " ################################################# ## )))", - " ########################################### ## ### +", - " ##%%%%%%%%%%%%%%%%%%%%%##################### #### + +", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%################ ##### +++", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%## # , # +", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%###### +", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%% ## +", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%% # # +", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%% ------", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ------", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .-----", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .-----", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .-----", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .-----", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - ", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ///0", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ////0", - " %%%%%%%%%%%%%%%%%%%%%%%%%%% //////", - " 111%%%%%%%%%%%%%%%%%%%%%%% /////00", - " 1 11111%%%%%%%%%%%%%%%%%% ////000", - " 11111111%1%%%%% %% %% //00000", - " 11 11111111%%% %% ---///000000", - " 11 11111111% %% 222300000", - " 11111111111 % 2233333000", - " 1 1111111 4 22233335500", - " 1 111111 666 22233335550", - " % 1111111 666666 7 222333335555", - " 1111111 111 6666 33333335555", - " % 1 111111 111 8 9::: 33333335555", - " 111111111; < : = > ? 33333335555", - " 111111@; A BB333333555", - " 1@@CCCC D BBBB35555555", - " @CCEE BBBB555555FF", - " EEEE GH I BBJB55555FFF", - " EE GGKKK K LLLL55FFFF", - " MMN GGK KKKKKKK OOLPPPPFQ", - " NN NNGGGKKKKKKKKK OORPPPPPQ", - " GGGGKKKKKKKKKS RRRPPPQQ", - " GGGGGGGKKKKKSSSTTU RRPPPPQ", - " GGGGGGGKKKKVVSTTTUU ", - " GGGGGGGGKKKVVVSSTTUV ", - " WGGGGGGVGKKVVVSVVVVVV " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/style-level-compositing-tiled-0,0-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/style-level-compositing-tiled-0,0-512-512-2.0-grid-reference.json deleted file mode 100644 index 6dd6a4db4..000000000 --- a/tests/visual_tests/grids/style-level-compositing-tiled-0,0-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "keys": [ - "", - "71", - "24", - "245", - "207", - "238", - "82", - "132", - "205", - "51", - "65", - "231", - "186", - "165", - "114", - "2", - "120", - "235", - "116", - "13", - "113", - "41", - "234", - "34", - "78", - "48", - "15", - "90", - "173", - "215", - "1", - "75", - "224", - "181", - "79", - "42", - "158", - "208", - "38", - "127", - "70", - "167", - "212", - "76", - "39", - "164", - "183", - "87", - "69", - "104", - "77", - "157", - "59", - "21", - "49" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!! ", - " !!!!!!!!!! ", - " !!!!! !!!!!! ! ", - " ### #### !!!!!!!!!!!!!! ", - " ### ######### ! !!!!!!!!!!!!!!! ", - " ############ !!!! !!!!!!!!!!!!! ", - " ############## ! !!!!!!!!!!!!!!!!!! ", - " ## ############### !! !! !!!!!!!!!!!!!!!!! ", - " # ################# !!! ! !! !!!!!!!!!!! ", - " ################### !!!!!!!!!!! !!!!!!!!! !!! !! ! ", - " ################## !!!!!!!!!!!!!!!!!!!!!!!!! !!! !!! ", - " ################# # !!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!! ", - " ## ################# !!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!! ", - " ## ######## ######## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ### ####### ######## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " #### ## ######### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ###### ######## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ##### ## ######## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " # ################## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ###### ### ##### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ## ########### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ## ##### ####### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ### #### # ###### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ## ###### ############# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " #### ## ############# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ", - " # # ## ####### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ## # ## # ##### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ## ## # # ## ## #### ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ### # # ####### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " #### # ### ######## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ### # # # ### ############# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ### #### ## # ### ## # !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " # ### ### #### ## ### !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ######## ##### ######### !!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ######## # ## ## ######### !!!!!!!!!!!!!!!!!!!!!!!!!!! ! ", - " ### # ######## !!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ### !!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ###### # ##### !!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ###### ### ### #### ### #### !!!!!!!!!!!!!!!!!!!!!!!!!! ", - " ####### ### ####### ## ###### !!!!!!!!!!!!!!!!!!!!!!!! ", - " ######## # #### ######## ###### ## !!!!!!!!!!!!!!!!!!!!!!!!! ", - " ############ ## #### # ### ####### !!!!!!!!!!!!!!!!!!!!!! ! ", - " #### ####### ## ### ############ !!!!!!!!!!!!!!!!!!!!!!!! ", - " $ ### ########## # ## ############## ! !!!!!!!!!!!!!!!!!!!!!! ", - " %%% ########## ## ############# !!!!!!!!!!!!!!!!!!!!!! & ", - " %%%%%%% # # ####### ### ############### !!!!!!!!!!!!!!!!!!!! !! ", - " %%%%%%%%%%%% % # # # ############ ### ###### ######## !!!!!!!!!!!!!!!!!!!!!!!! ", - " %%%%%%%%%%%%%%%%## ###### ## ########## ###### ## ########## !!!!!!!!!!!!!!!!!!!!!! ", - " %%%%%%%%%%%%%%%%%### ############# ##### ### ### ### ### # ###### !!!!!!!!!!!!!!!!!!! ", - " %%%%%%%%%%%%%%%%%%###################### ### # #### #### # ##### !!!!!!!!!!!!!!!!!!!! ", - " %%%%%%%%%%%%%%%%%%################### # ### ############ ######### !!!!!!!!!!!!!!!!! ", - " %%%%%%%%%%%%%%%%###################################### #### ## ###### !!!!!!!!!!!!!!! ", - " %%%%%%%%%%%%%%%########################################### ######### !!!!!!!!!!!!!! ", - " % %%%%%%%%%%%%%%%########################################## ######### !!!!!!!!!!!!!! ' ", - " %%%%%%%%%%%%%%%%%%%####################################### # ##### ## !!!!!!!!!! ! '' '''' ", - " %%%%%%%%%%%%%%%%%%###################################### ## ######## ## !!!!!!!!! ''''''' ", - " $ %%%%%%%%%%%%%%%%%%###################################### ### ######### !!!!!!!!! '''''' ", - " %%%%%%%%%%%%%%###################################### #### ####### !!!!!!!!! ''''' ", - " %% %%%%%%%%%%%%%%%#################################### # # # ###### !!!!!!!! '' ", - " %%%%%%%%%%%%%%%%%################################### # ### # !!!!!!! ", - " %%%%%%%%%%%%%%%%%%################################### # # #### ## !!!!! ( ", - " %%%%%%%%%%%%%%%%%%################################## ##### !!!!! ( ", - " %%%%%%%%%%%%%%%%%################################# ####### !!!! ", - " %%%%%%%%%%%%%%% %%%%%############################### ###### # !! )", - " %%%%%% %% %%%%############################ ###### # ", - " % %%%% %%%############################# ######## ### ) ", - " %%%% %%%############################# ########### ))) ", - " % % %% %%############################## ########### ))) ", - " %%% % %%%############################### ## ########### )))) ", - " %% %%%################################ ############# ))) ", - " %% % %%################################## ############### *) )))", - " % #################################### ################ *** ))", - " % # ##################################################### *** )))", - " % % ################################## ################# *** )))", - " % ################################## ################# * )))", - " ################################################# ## )))", - " ########################################### ## ### +", - " ##%%%%%%%%%%%%%%%%%%%%%##################### #### + +", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%################ ##### +++", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%## # , # +", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%###### +", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%% ## +", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%% # # +", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%% ------", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ------", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .-----", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .-----", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .-----", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .-----", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - ", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ///0", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ////0", - " %%%%%%%%%%%%%%%%%%%%%%%%%%% //////", - " 111%%%%%%%%%%%%%%%%%%%%%%% /////00", - " 1 11111%%%%%%%%%%%%%%%%%% ////000", - " 11111111%1%%%%% %% %% //00000", - " 11 11111111%%% %% ---///000000", - " 11 11111111% %% 222300000", - " 11111111111 % 2233333000", - " 1 1111111 4 22233335500", - " 1 111111 666 22233335550", - " % 1111111 666666 7 222333335555", - " 1111111 111 6666 33333335555", - " % 1 111111 111 8 9::: 33333335555", - " 111111111; < : = > ? 33333335555", - " 111111@; A BB333333555", - " 1@@CCCC D BBBB35555555", - " @CCEE BBBB555555FF", - " EEEE GH I BBJB55555FFF", - " EE GGKKK K LLLL55FFFF", - " MMN GGK KKKKKKK OOLPPPPFQ", - " NN NNGGGKKKKKKKKK OORPPPPPQ", - " GGGGKKKKKKKKKS RRRPPPQQ", - " GGGGGGGKKKKKSSSTTU RRPPPPQ", - " GGGGGGGKKKKVVSTTTUU ", - " GGGGGGGGKKKVVVSSTTUV ", - " WGGGGGGVGKKVVVSVVVVVV " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/style-level-compositing-tiled-0,1-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/style-level-compositing-tiled-0,1-512-512-1.0-grid-reference.json deleted file mode 100644 index 3f8724276..000000000 --- a/tests/visual_tests/grids/style-level-compositing-tiled-0,1-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "keys": [ - "", - "49", - "161", - "38", - "21", - "95", - "64", - "17", - "218", - "196", - "61", - "33", - "160", - "8", - "209", - "62", - "243" - ], - "data": {}, - "grid": [ - " ! !!!#$$$$%%%%%%%%%%%%%%% ", - " !!!##$$$%%%%%%%%%%%%%%%%%% ", - " !!######%%%%%%%%%%%%%%%%%%%%% ", - " & #########%%%%%%%%%%%%%%%%%%%%%%% ", - " & ######%%%%%%%%%%%%%%%%%%%%%%%%%% ", - " #####%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", - " ####%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", - " & ' #####%%%%%%%%%%%%%%%%%%%%%%%%% ", - " & ######(((%%%%%%%%%%%%%%%%%%%% ", - " ######(((%%%%%%%%%%%%%%%%%% ", - " ) ######(((((%%%%%%%%%%%%%%%% ", - " * ####((((((%%%%%%%%%%%%%%%% ", - "+ ###((((((((%%%%%%%%%%%%%% ", - " #((((((((%%%%%%%%%%%%% ", - " * ,,((((---%%%%%%%%%%%%% ", - " ,,((((---%%%%%%%%%%%%% ", - " ,,((((-----%%%%%%%%%% ", - " ,,,...-----%%%%%%%% ", - " ,,......----%%%%% ", - " ,,.......---%%%% ", - " , ,,.......--.%%%% ", - " ,.........%%%%%% ", - " ,,.........%%%%% ", - " ,,........//%%%% ", - " ,,........///%% ", - " ,,........///% ", - " ,,......../// ", - " ,.......... ", - " ,,.......... ", - " ,,.......... ", - " ,,........ ", - " ,....... ", - " ,....... ", - " ,..... ", - " ,,...... ", - " ,,..... ", - " ,,,.... ", - " ,,,.. ", - " ,,..... ", - " ,,..... ", - " ,,,.... ", - " ,.... ", - " ,,.. ", - " ,,... 00 ", - " ,,,, ", - " ,,,,, ", - " ,,,. 1 ", - " ,,,. ", - " , ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/style-level-compositing-tiled-0,1-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/style-level-compositing-tiled-0,1-512-512-2.0-grid-reference.json deleted file mode 100644 index 3f8724276..000000000 --- a/tests/visual_tests/grids/style-level-compositing-tiled-0,1-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "keys": [ - "", - "49", - "161", - "38", - "21", - "95", - "64", - "17", - "218", - "196", - "61", - "33", - "160", - "8", - "209", - "62", - "243" - ], - "data": {}, - "grid": [ - " ! !!!#$$$$%%%%%%%%%%%%%%% ", - " !!!##$$$%%%%%%%%%%%%%%%%%% ", - " !!######%%%%%%%%%%%%%%%%%%%%% ", - " & #########%%%%%%%%%%%%%%%%%%%%%%% ", - " & ######%%%%%%%%%%%%%%%%%%%%%%%%%% ", - " #####%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", - " ####%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", - " & ' #####%%%%%%%%%%%%%%%%%%%%%%%%% ", - " & ######(((%%%%%%%%%%%%%%%%%%%% ", - " ######(((%%%%%%%%%%%%%%%%%% ", - " ) ######(((((%%%%%%%%%%%%%%%% ", - " * ####((((((%%%%%%%%%%%%%%%% ", - "+ ###((((((((%%%%%%%%%%%%%% ", - " #((((((((%%%%%%%%%%%%% ", - " * ,,((((---%%%%%%%%%%%%% ", - " ,,((((---%%%%%%%%%%%%% ", - " ,,((((-----%%%%%%%%%% ", - " ,,,...-----%%%%%%%% ", - " ,,......----%%%%% ", - " ,,.......---%%%% ", - " , ,,.......--.%%%% ", - " ,.........%%%%%% ", - " ,,.........%%%%% ", - " ,,........//%%%% ", - " ,,........///%% ", - " ,,........///% ", - " ,,......../// ", - " ,.......... ", - " ,,.......... ", - " ,,.......... ", - " ,,........ ", - " ,....... ", - " ,....... ", - " ,..... ", - " ,,...... ", - " ,,..... ", - " ,,,.... ", - " ,,,.. ", - " ,,..... ", - " ,,..... ", - " ,,,.... ", - " ,.... ", - " ,,.. ", - " ,,... 00 ", - " ,,,, ", - " ,,,,, ", - " ,,,. 1 ", - " ,,,. ", - " , ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/style-level-compositing-tiled-1,0-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/style-level-compositing-tiled-1,0-512-512-1.0-grid-reference.json deleted file mode 100644 index 2ded48389..000000000 --- a/tests/visual_tests/grids/style-level-compositing-tiled-1,0-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,248 +0,0 @@ -{ - "keys": [ - "", - "245", - "238", - "154", - "60", - "189", - "142", - "53", - "101", - "45", - "103", - "102", - "72", - "163", - "98", - "205", - "153", - "30", - "207", - "206", - "110", - "65", - "129", - "58", - "136", - "105", - "191", - "57", - "81", - "171", - "86", - "170", - "182", - "80", - "236", - "16", - "210", - "89", - "140", - "22", - "68", - "186", - "4", - "112", - "200", - "202", - "93", - "94", - "74", - "5", - "3", - "84", - "194", - "96", - "31", - "2", - "199", - "190", - "88", - "162", - "44", - "83", - "107", - "100", - "139", - "91", - "175", - "50", - "97", - "155", - "32", - "18", - "168", - "226", - "118", - "14", - "244", - "126", - "214", - "113", - "36", - "188", - "193", - "99", - "131", - "172", - "220", - "54", - "208", - "152", - "56", - "25", - "73", - "19", - "35", - "185", - "197", - "40", - "26", - "63", - "230", - "69", - "119", - "121", - "223", - "229", - "28", - "204", - "92", - "27", - "52", - "67", - "95" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! !! ", - " ! ", - " !!!! ", - " ! !!! ! ! !! ", - " !!! !! ! !!!! ", - " !! !! !!! !!!! ", - " # ## ! !!!! !!!! ", - " ##### # # !! !! !!!! ", - " # ####### ! !!!!!! ", - " ########### ! ! !!!!! ", - " ########## !!!!!! ", - " ###### !!! !! ", - " ######## ## !! !!! ", - " ######## !!!! ", - " ## ## # !!! ", - " #### ## ", - " #### ### ", - " ### # !!!! ", - " ## !! !!! ! ", - " ## !! !!!!! ", - " !!! !!!!!!!!!! ", - " !!!!! !!!!!!!!!!!! ! ", - " !!!! !!!!!!!!!!!!!!! !! !! ", - " !!!! !!!!!!!!!!!!!!!!! !!!!!!! ", - " !!!! !!!!!!!!!!!!!!!!!!! !!!!! !!!! ", - " !!! !!!!!!!!!!!!!!!!!!! ! ", - " !!! ! !!!!!!!!!!!!!!!!! ! ", - " !!! ! !!!!!!!!!!!!!!!!!!! ! ", - " !! ! !!!!!!!!!!!!!!!!!!!! !!! !!! !! !! ", - " !!! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! ", - " !!! !!! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! ", - " !! !!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!! ", - " !!! !!! !!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!! ", - " !!! !!!!!! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!! ", - " $$ $ !!! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!! !!! !", - " $$$$$$ ! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " $ $$$$$ ! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ", - " $$$$$$%%!!! !!! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!! ", - " $$$$%$$$%%!!!!! ! !!!!! !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!", - " $$$$&%%%%!!!!!!!! !! !! !!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$&&&&%%%%!!!!!!!! !! !!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $&&&&&%%%%!!!!!!!!! !! !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$&&&&&%%%%!!!!!!!!! ! !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$&&&&&&%%%%!!! !!! ! !!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$&&&&&&&%%%%!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $&&&&&& %%%!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$&&&&&& %%%!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$&&&&&&& %%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " $$$&&&&& %%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$$$&&&&& %%%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$$$$&&&& %%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " $$$$$&&&& %%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!! ", - " $$$$$&&&& %%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!! ", - " $$$$$&&&&&'%%%% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! ! ", - " $$$$$&&&&& ((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! !!! ", - " $$$ &&&&& (((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! ", - " &&&& )(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! ", - " ** &&&&& )))))!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! ", - " ** &&& )+)))!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!! ", - " ***&& ++++,,,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!! ", - " --* .!!!++,,,!!!!!!!!!!!!!!!!!!!!!!!!!!///!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!! !! ", - " ----.......++,,,,!!!!!!!!!!!!!!!!!!!!!!//////!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! ", - "0 11----.......,,,,,,!!!!!!!!!!!!!!!!!!!!!////////////!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2!!!!!!!!!!!!!! !!! ", - "00 111-----......,,,,,,!!!!!!!!!!!!!!!!!!!!!////////////!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2222!!!!!!!!!!!! !! 3 ", - "0 11------......4444,444!!!!!!!!!!!//!!!!!!/////////////!!!!!!!!!!!!!55!!!!!!!!!!!!!!2222!!!!!!!!!!!! ! 3", - " 6677-----8......44444444!!!!!!!!!!///////!/////////////////!!!!!!!!!!555!!!!!!!!!!!!222222!!!!!!!!! !! ! ", - "66669----8888...444444444444!!!!!!///////////////////////////!!!55555!5555555!!!!55!!222222!!!!!!!!! !! ! ", - "666666----88::::4444444444444!!!!!////////////////////////////2555555555555555555552222222222!!!!!!! ! ", - "666666;---<<=:==444>>4444444!!!!!!///////////////////////////22255555555555555555552522222222!!2!!!! ! ", - "66666;;;?<<<====@@@@>444444 !!!!!!!////////////////////////2/22225555555555555555555552222222222!!! !! ! ", - "66666;????AAB=C@@@@@>4 4 !!!!!!!! /////////////////////222222555555555555555555222222222222!!! ! ", - "66666???? BBDBCC@@@@@@ 44!!!!!!!! ////EEE///////////////22222222555555555555555522222222222!!!!! F ! ", - "666666 ??? BDDCCC@@@@ !!!!!! ////EEEE//////////////222222222255555555555522222222222222!!! FFF ", - "666 ?? BGCCCHHH II!!! ///EEEEEEEE//////////22222222222555555555522222222222222!!! FFF ", - "JJJ 6 ??? KCLHHM MM III!! NENNEEEEE//EOOOOOO222222222222222225522222222222222PPP F ", - "J ? ???? KLQQQM MMMMMMMMMMMRSSS NNNNNNEEEEEEEEEOO22222222222222222222222222222222222PPP F ", - " JJ ? ? ?QQQ QMMMMMMMMMMMMMRSTS NNNNNNNEEEEUUOO222222222222222222222222222222222 22PP F ", - "JJ QQQQMMMMMMMMMMMMMTTT NNNNNNNEEEUUUU2222222222222222222222222222222 2 PPV F ", - " ?? QQQQQMMMMMMMMMMMMTTTT NTTNNNNNNEUWUUU2222222222222222222222222222222 2 PVV V FF ", - " XXXXXYY Q Q QM MMMMZZZ[[[TTTTTTTTTTTNNWWWWW]]]]2222222222222222222222222222222 VVV FFFF ", - "XXXXXXYY QQQ ^ ZZZZ[[[TTTTTTTTTTTNWWWWWW]]]]]222222222222222222222222222222 VVV FFFFFF ", - "XXXXXXYY ZZZ[[[[TTTTTTTTTTTWWWWWW]]]____22222222222222222222222222222 V FFFFF F ", - "XXXXXXYYY` ` aZZ[[[[[TTTTTTTTTTTWWWWWW]]]____22222222222222222222222222222 FF ", - "XXXXXXXY```` ``` bcddd[[[[[TTTTTTTTTWWWW]]]]]]__2222222222222222222222222222222 FF ", - "XXXXXXXY``````````eeeeeeeccdddd[[[[TTTTTTTTTWWW]]]]]]_____22222222222222222222222222222 F ", - "XXXXXXX```````````eeeeeeeddddddd[ff TTTTTTTT]]]]]]]]_____ggg2222222__222222222222222222 ", - "XXXXXXX```````````eeeeeeedddddddddd TTTTTTTT]]]]]]]______gggg2_h2____22222222222222222 F ", - "XXXXXXX```````````eeeeeee dddddddddd TTTTTTT]]]]]___________gg______i2222222222222222 F F ", - "XXXXXXX```````````eeeeeee ddddddddddj kTTT]]]]]]]_________________ii2222222222222222 ", - "XXXXXXXX``````````eeeeeeee dddddddddd kkl ]]]_____________m___ii22222222222222n n F ", - "XXXXXXXXoo````````eeeeeeee dddddddddkkklll _______________m__iiii2222p22222222 n ", - "qXXXXXooooorrr````sssssssss ddddddddddddlll ______________m iiiii22pppp2222 ", - "qqXXXooooooorrrr``sssssssss dddddddddddll __________ iiiiituupp 2 v ", - "qqqooooooooorrrrrssssssssss dddddddddllll _________ iiittuupp 22 w ", - "qqqooooooooorrrrrsssssssssss dddddxxxlll ________ iiitttttp w ", - "qqqoooooooorrrrrrssssssssssy xxdxxxx _______ iiitttttup ww ", - "zoooooooooorrrrrssssssssssyyy xxxxxx ____ ttttttup w ", - "zooo{ooooorrrrrrssssssssss||||yxxxx _____ _ ittt}}}p www ~ ", - "zzo{{{{{{{{rrrrrssssssssss||||| xx ___ _ it t}}pp wwww ", - "z\u007f\u007f{{{{{{{\u0080rrrrrsssssssss||||||\u0081 \u0081\u0081\u0081\u0081 ___ i }ppp wwwww ", - "\u0082\u007f\u007f{{{{{{{rrrrr\u0083\u0083ssssssss||||||\u0081\u0081\u0081\u0081\u0081\u0081 ___\u0084 tt p w www \u0085 \u0086 ", - "\u0087\u0082{{{{{{{\u0080\u0080rr\u0083\u0083\u0083\u0083sssssss|||||||||\u0081\u0081\u0081 _ \u0084 _ tt w www ", - "\u0087\u0082{{{{{{{\u0080\u0080\u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083ssssss||||||||\u0081\u0081\u0081 \u0088 \u0084\u0084 tt \u0089w ww \u0085 ", - " {{{\u0080\u0080\u0080\u0080\u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083ssssss||||||\u0081\u0081\u0081 \u0088 \u008a \u0089\u0089\u0089 \u0089\u0089\u0089 w \u008b ", - " \u0080\u0080\u0080\u0080\u0083\u0083\u0083\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008css\u008d\u008e\u008e||\u008e\u0081\u0081\u0081\u0081 \u0088 \u008a\u008a \u0089\u0089 \u008a \u0089\u008a\u008a \u008a ", - " \u0080\u0080\u0080\u0080\u0080\u008f\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008d\u008d\u008d\u008e\u008e\u008e\u008e\u0081\u0081\u0081\u0081 \u0088 \u008a \u008a\u008a\u0089\u0089\u0089 \u0089\u0089\u0089\u008a\u008a \u008a ", - " \u0090\u0091\u0091\u0091\u008f\u008f\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008d\u008d\u008d\u008e\u008e\u008e\u008e\u0081\u0081\u0081 \u008a \u008a\u008a \u008a \u008a\u0089\u008a\u008a\u008a\u008a\u008a \u008a\u008a \u008a \u008a \u0092 " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/style-level-compositing-tiled-1,0-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/style-level-compositing-tiled-1,0-512-512-2.0-grid-reference.json deleted file mode 100644 index 2ded48389..000000000 --- a/tests/visual_tests/grids/style-level-compositing-tiled-1,0-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,248 +0,0 @@ -{ - "keys": [ - "", - "245", - "238", - "154", - "60", - "189", - "142", - "53", - "101", - "45", - "103", - "102", - "72", - "163", - "98", - "205", - "153", - "30", - "207", - "206", - "110", - "65", - "129", - "58", - "136", - "105", - "191", - "57", - "81", - "171", - "86", - "170", - "182", - "80", - "236", - "16", - "210", - "89", - "140", - "22", - "68", - "186", - "4", - "112", - "200", - "202", - "93", - "94", - "74", - "5", - "3", - "84", - "194", - "96", - "31", - "2", - "199", - "190", - "88", - "162", - "44", - "83", - "107", - "100", - "139", - "91", - "175", - "50", - "97", - "155", - "32", - "18", - "168", - "226", - "118", - "14", - "244", - "126", - "214", - "113", - "36", - "188", - "193", - "99", - "131", - "172", - "220", - "54", - "208", - "152", - "56", - "25", - "73", - "19", - "35", - "185", - "197", - "40", - "26", - "63", - "230", - "69", - "119", - "121", - "223", - "229", - "28", - "204", - "92", - "27", - "52", - "67", - "95" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! !! ", - " ! ", - " !!!! ", - " ! !!! ! ! !! ", - " !!! !! ! !!!! ", - " !! !! !!! !!!! ", - " # ## ! !!!! !!!! ", - " ##### # # !! !! !!!! ", - " # ####### ! !!!!!! ", - " ########### ! ! !!!!! ", - " ########## !!!!!! ", - " ###### !!! !! ", - " ######## ## !! !!! ", - " ######## !!!! ", - " ## ## # !!! ", - " #### ## ", - " #### ### ", - " ### # !!!! ", - " ## !! !!! ! ", - " ## !! !!!!! ", - " !!! !!!!!!!!!! ", - " !!!!! !!!!!!!!!!!! ! ", - " !!!! !!!!!!!!!!!!!!! !! !! ", - " !!!! !!!!!!!!!!!!!!!!! !!!!!!! ", - " !!!! !!!!!!!!!!!!!!!!!!! !!!!! !!!! ", - " !!! !!!!!!!!!!!!!!!!!!! ! ", - " !!! ! !!!!!!!!!!!!!!!!! ! ", - " !!! ! !!!!!!!!!!!!!!!!!!! ! ", - " !! ! !!!!!!!!!!!!!!!!!!!! !!! !!! !! !! ", - " !!! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! ", - " !!! !!! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! ", - " !! !!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!! ", - " !!! !!! !!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!! ", - " !!! !!!!!! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!! ", - " $$ $ !!! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!! !!! !", - " $$$$$$ ! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " $ $$$$$ ! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ", - " $$$$$$%%!!! !!! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!! ", - " $$$$%$$$%%!!!!! ! !!!!! !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!", - " $$$$&%%%%!!!!!!!! !! !! !!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$&&&&%%%%!!!!!!!! !! !!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $&&&&&%%%%!!!!!!!!! !! !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$&&&&&%%%%!!!!!!!!! ! !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$&&&&&&%%%%!!! !!! ! !!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$&&&&&&&%%%%!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $&&&&&& %%%!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$&&&&&& %%%!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$&&&&&&& %%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " $$$&&&&& %%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$$$&&&&& %%%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " $$$$$&&&& %%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", - " $$$$$&&&& %%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!! ", - " $$$$$&&&& %%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!! ", - " $$$$$&&&&&'%%%% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! ! ", - " $$$$$&&&&& ((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! !!! ", - " $$$ &&&&& (((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! ", - " &&&& )(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! ", - " ** &&&&& )))))!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! ", - " ** &&& )+)))!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!! ", - " ***&& ++++,,,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!! ", - " --* .!!!++,,,!!!!!!!!!!!!!!!!!!!!!!!!!!///!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!! !! ", - " ----.......++,,,,!!!!!!!!!!!!!!!!!!!!!!//////!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! ", - "0 11----.......,,,,,,!!!!!!!!!!!!!!!!!!!!!////////////!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2!!!!!!!!!!!!!! !!! ", - "00 111-----......,,,,,,!!!!!!!!!!!!!!!!!!!!!////////////!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2222!!!!!!!!!!!! !! 3 ", - "0 11------......4444,444!!!!!!!!!!!//!!!!!!/////////////!!!!!!!!!!!!!55!!!!!!!!!!!!!!2222!!!!!!!!!!!! ! 3", - " 6677-----8......44444444!!!!!!!!!!///////!/////////////////!!!!!!!!!!555!!!!!!!!!!!!222222!!!!!!!!! !! ! ", - "66669----8888...444444444444!!!!!!///////////////////////////!!!55555!5555555!!!!55!!222222!!!!!!!!! !! ! ", - "666666----88::::4444444444444!!!!!////////////////////////////2555555555555555555552222222222!!!!!!! ! ", - "666666;---<<=:==444>>4444444!!!!!!///////////////////////////22255555555555555555552522222222!!2!!!! ! ", - "66666;;;?<<<====@@@@>444444 !!!!!!!////////////////////////2/22225555555555555555555552222222222!!! !! ! ", - "66666;????AAB=C@@@@@>4 4 !!!!!!!! /////////////////////222222555555555555555555222222222222!!! ! ", - "66666???? BBDBCC@@@@@@ 44!!!!!!!! ////EEE///////////////22222222555555555555555522222222222!!!!! F ! ", - "666666 ??? BDDCCC@@@@ !!!!!! ////EEEE//////////////222222222255555555555522222222222222!!! FFF ", - "666 ?? BGCCCHHH II!!! ///EEEEEEEE//////////22222222222555555555522222222222222!!! FFF ", - "JJJ 6 ??? KCLHHM MM III!! NENNEEEEE//EOOOOOO222222222222222225522222222222222PPP F ", - "J ? ???? KLQQQM MMMMMMMMMMMRSSS NNNNNNEEEEEEEEEOO22222222222222222222222222222222222PPP F ", - " JJ ? ? ?QQQ QMMMMMMMMMMMMMRSTS NNNNNNNEEEEUUOO222222222222222222222222222222222 22PP F ", - "JJ QQQQMMMMMMMMMMMMMTTT NNNNNNNEEEUUUU2222222222222222222222222222222 2 PPV F ", - " ?? QQQQQMMMMMMMMMMMMTTTT NTTNNNNNNEUWUUU2222222222222222222222222222222 2 PVV V FF ", - " XXXXXYY Q Q QM MMMMZZZ[[[TTTTTTTTTTTNNWWWWW]]]]2222222222222222222222222222222 VVV FFFF ", - "XXXXXXYY QQQ ^ ZZZZ[[[TTTTTTTTTTTNWWWWWW]]]]]222222222222222222222222222222 VVV FFFFFF ", - "XXXXXXYY ZZZ[[[[TTTTTTTTTTTWWWWWW]]]____22222222222222222222222222222 V FFFFF F ", - "XXXXXXYYY` ` aZZ[[[[[TTTTTTTTTTTWWWWWW]]]____22222222222222222222222222222 FF ", - "XXXXXXXY```` ``` bcddd[[[[[TTTTTTTTTWWWW]]]]]]__2222222222222222222222222222222 FF ", - "XXXXXXXY``````````eeeeeeeccdddd[[[[TTTTTTTTTWWW]]]]]]_____22222222222222222222222222222 F ", - "XXXXXXX```````````eeeeeeeddddddd[ff TTTTTTTT]]]]]]]]_____ggg2222222__222222222222222222 ", - "XXXXXXX```````````eeeeeeedddddddddd TTTTTTTT]]]]]]]______gggg2_h2____22222222222222222 F ", - "XXXXXXX```````````eeeeeee dddddddddd TTTTTTT]]]]]___________gg______i2222222222222222 F F ", - "XXXXXXX```````````eeeeeee ddddddddddj kTTT]]]]]]]_________________ii2222222222222222 ", - "XXXXXXXX``````````eeeeeeee dddddddddd kkl ]]]_____________m___ii22222222222222n n F ", - "XXXXXXXXoo````````eeeeeeee dddddddddkkklll _______________m__iiii2222p22222222 n ", - "qXXXXXooooorrr````sssssssss ddddddddddddlll ______________m iiiii22pppp2222 ", - "qqXXXooooooorrrr``sssssssss dddddddddddll __________ iiiiituupp 2 v ", - "qqqooooooooorrrrrssssssssss dddddddddllll _________ iiittuupp 22 w ", - "qqqooooooooorrrrrsssssssssss dddddxxxlll ________ iiitttttp w ", - "qqqoooooooorrrrrrssssssssssy xxdxxxx _______ iiitttttup ww ", - "zoooooooooorrrrrssssssssssyyy xxxxxx ____ ttttttup w ", - "zooo{ooooorrrrrrssssssssss||||yxxxx _____ _ ittt}}}p www ~ ", - "zzo{{{{{{{{rrrrrssssssssss||||| xx ___ _ it t}}pp wwww ", - "z\u007f\u007f{{{{{{{\u0080rrrrrsssssssss||||||\u0081 \u0081\u0081\u0081\u0081 ___ i }ppp wwwww ", - "\u0082\u007f\u007f{{{{{{{rrrrr\u0083\u0083ssssssss||||||\u0081\u0081\u0081\u0081\u0081\u0081 ___\u0084 tt p w www \u0085 \u0086 ", - "\u0087\u0082{{{{{{{\u0080\u0080rr\u0083\u0083\u0083\u0083sssssss|||||||||\u0081\u0081\u0081 _ \u0084 _ tt w www ", - "\u0087\u0082{{{{{{{\u0080\u0080\u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083ssssss||||||||\u0081\u0081\u0081 \u0088 \u0084\u0084 tt \u0089w ww \u0085 ", - " {{{\u0080\u0080\u0080\u0080\u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083ssssss||||||\u0081\u0081\u0081 \u0088 \u008a \u0089\u0089\u0089 \u0089\u0089\u0089 w \u008b ", - " \u0080\u0080\u0080\u0080\u0083\u0083\u0083\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008css\u008d\u008e\u008e||\u008e\u0081\u0081\u0081\u0081 \u0088 \u008a\u008a \u0089\u0089 \u008a \u0089\u008a\u008a \u008a ", - " \u0080\u0080\u0080\u0080\u0080\u008f\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008d\u008d\u008d\u008e\u008e\u008e\u008e\u0081\u0081\u0081\u0081 \u0088 \u008a \u008a\u008a\u0089\u0089\u0089 \u0089\u0089\u0089\u008a\u008a \u008a ", - " \u0090\u0091\u0091\u0091\u008f\u008f\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008d\u008d\u008d\u008e\u008e\u008e\u008e\u0081\u0081\u0081 \u008a \u008a\u008a \u008a \u008a\u0089\u008a\u008a\u008a\u008a\u008a \u008a\u008a \u008a \u008a \u0092 " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/style-level-compositing-tiled-1,1-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/style-level-compositing-tiled-1,1-512-512-1.0-grid-reference.json deleted file mode 100644 index 97fda9272..000000000 --- a/tests/visual_tests/grids/style-level-compositing-tiled-1,1-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,170 +0,0 @@ -{ - "keys": [ - "", - "67", - "27", - "28", - "204", - "92", - "185", - "119", - "223", - "52", - "203", - "29", - "166", - "201", - "6", - "177", - "221", - "227", - "20", - "123", - "9", - "122", - "141", - "108", - "151", - "222", - "61", - "216", - "180", - "124", - "178", - "219", - "179", - "159", - "146" - ], - "data": {}, - "grid": [ - " !!!!##$$$$$$$$%%%%&&&&'' ( ))))) )))))) ) ) ))) ", - " * !!!!#$$$$$$$$$%++++&&&& )))) ))))) )) ) )))))) ", - " !!###$$$$$$$$$,+++++&& )))))) )))) ))) ))) )) ))))- -- ", - " ##$$$$$$$$$$$+++++++& ))) ) ) ))))))--- - ", - " $$$$$$$$$$$$+++++++ )) ) )) )))------- - . ", - " ///$$/$$$$$$$+++++++ 0 ))))) ) ))---- ", - " //////$$$$$11+++++ ))))))))22 ) )-- -- 3 3 ", - " //////$$$$$1114++++ ) ) 5 --- 33 ", - " ///////11$11114+++6 55 5 5 - ", - " ////////111111146666 7 8 55555 55 ", - " ///////1111111144666 88 5 555555 55 9 ", - " ///////1111116664666 888 555555555 555 9 ", - " ///////1111::::64666 8888 55555555555555555 ;;", - " <<<<<<<<<::::::666 8888 555555555555555555 ;;", - " <<<<<<====:::::66 888 55555555555555555555 9 ", - " <<<<<=====::::6 8888 5555555555555555555555555 > ", - " <<<<<======::666 8888 555555555555555555555555555 > ", - " <<<<=====???666 888 555555555555555555555555555 ", - " <<<<====????66 888 5555555555555555555555555555 ", - " <<<<==?????@6 5555555555555555555555555555 ", - " <<< ", - " <<<<<======::666 8888 555555555555555555555555555 > ", - " <<<<=====???666 888 555555555555555555555555555 ", - " <<<<====????66 888 5555555555555555555555555555 ", - " <<<<==?????@6 5555555555555555555555555555 ", - " <<<>>> 8 8 ??? 99 999999 :: ; ; < < ", - " ====== 111 11 2222222 333333333 4444444 5 55 666 7 >>>> 8888888888 ?? ::: ;;;;;; <<<<<<<<< ", - " ==== 1 111 11 2222222 333333333 4444444 555 55 5 6666 7 >>>> 8888888888 ????? 99 999999 ::: ;;;; ;; <<<< <<<< ", - " ==== 1 111111 2222222 333333333 4444444 555555 5 66666 7 >>>> 8 8 ????? 99 999999 :: ;;;; ; ; <<< << ", - " ====== 1 11 1 2222222 3333333 3 4444444 55 55 55 6666 7 >>>>>> 8 8 ??? 9 : ;;;; ;;;; <<<< <<<< ", - " == == 11 11 222 222 333333 4444444 55 55 66 7 >>>>>> 88 88 8 ??? 99 999999 ;;;; ; <<<< <<<< ", - " 11111 22 22 4444444 55555 6 777 > 8888888888 ??? 9 ;;;; ; <<<<<<<<< ", - " 777 ?? ; ; ", - " 6666666 7 ;;;;; ", - " ", - " ", - " ", - " ", - " ", - " ", - " @@ AAAAA BBBBBB CCCCCCCCC DDD DDD EEEE FFF GGGG HHHHHHHH III JJJJ KKKKKKKK L M NNNNNNN ", - " @@@ AA AA B BB DDD DDD EE EE FFFFFFF GGGGGGGG HHHHHHHH II I J JJJ LL MMMMMM NNN NNN ", - " @@ @@@ A A BBBBBB B CC CCCCCC DDD DDD EE EEEEE FFFFFFFF GGGGGGGG HHHHHHHH I I JJ JJJ KKKKKKKK LLL MMMMMMMM NNNN NN ", - " @@@@@@ AAA AAA BBBBBBB CC CCCCC DDD DDD EE EEE E FF FFFFF GGG GGGGGG H H H HH IIIIII I JJ JJJ KKKKKKKK LL MMMMMMMM NN NNN NNN ", - " @@@@ AAAAAAAA BBBBBBB C CCCCCC DDD DDD EEEEEE E F FFFFF GGGGGGGGGG H H HH H IIIIII JJJ JJJJ L M MM NNNNNNNNNN ", - " @@ AAAAAAAA BBBBBB B CCCCCCCCC DDD DDD EE E EE FFFFFFF GGGGGGGGG H H HH H IIIIII JJJJJJJ KKKKKKKK M NNNNNNNNNN ", - " AAAAAAA BBBBBBB CCCCCCCCC DDD DDD EEEEEE F F GGGGGGG HHHHHHHH IIIIII JJJJ J KKKKKKKK M M NN NNNNNNN ", - " BBBBBBB DDD DDD EEEE HHHHHH JJJJ MM NNN NN ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " OOO OOOOOO PPPPPPPPP Q Q RRRR ", - " OOO OOOOOO SSSSS TTTTTTT PPPPPPPPP UU VV Q QQ RRRR W WW XXXXX YYYYY ZZZZZZZZ [ ]]] ^^ ", - " SS S SS TTTTTTTT PPPPPP UUUU VVVV QQQQQ RRRRRRRRR W WWWWW XXXXX X YYY YYY ZZZZZZZZ [[[ ]]] ^^^^ ^^ ", - " OOO OOOOOO S SSS S TTTTTTTTT P PPPPPP UUUUU V V QQQ QQQQ RRRRRRRRR W WWWWWW XX X YYYY YYY ZZZZZZZZ [[[[[ ] ^ ^^^ ", - " OOO OOOOOO S SSSSSS TTTTTTTTT P PPPPPP UUUUUUU VVV VVV QQQ QQQQ RRRRRRRRR W WWWWW X XX YY Y Y ZZZZZZZZ ]]]]]]] ^^ ^^^ ", - " OO OOOOO S S SS TTTTTT T PPPPPP UUUUUU V V QQQ QQQ RRRRRRRRR W WW XX X YYY YY ZZZZZZZZ ] ] ] ^ ", - " OOO OOOOOO SS S SS TTTT T PPPPPPPPP UUUU VVVV QQQQQQQ RRRRRRRRR WWW W XXX XXX YYY YYY ZZZZZZZZ ]] ]]]]]] ^^ ^^^ ", - " OO OOOOO SSSSS TT T PPPPPPPPP UU VV RRRRRRR XX XX YYYYY ZZZZZZZZ ]] ]]]]]] ^^ ^ ", - " U ^ ^^ ", - " ^^^^^^^ ", - " ", - " ", - " ", - " ", - " ", - " ", - " ___ __ ___ ``` aaaa bbbbbbbbb c c dddd eee ff ggg ggg hhh iii jjjjjj kkkkk ll mmmmmmm ", - " ___ __ ___ `````` aaaaa cc cc ddd dd eeeeee ffffffff g gg g hh iiiiii jjj j j kkkkk ll mm mmm ", - " __ __ __ `` ` ` aaaaaa bbbbbbbbb ccc ccc dddddddd eee eee fffffff g g h ii iii jjj j j kkk lll m ", - " ___ __ ___ ` ` `` aaaaaaa cccccccc ddd ddd eee eeee fffffff g g hhhhh ii ii jjjjj j llll mm mmm ", - " __ __ __ ` ``` `` aaaaaaa bbbbbbbbb cccccccc dddd ddd eee eeee fffffff g g hhhhh ii i iii j j llll mm mmm ", - " ___ __ ___ ` `` ` aaaaaa ccc ccc dddd ddd eeeeeeee f g g h iiii iii jjjjjjjj l mm mmm ", - " ___ __ ___ ``` `` aaaa bbbbbbbbb cc cc dd dd eee eee ffffff g g h iii iii jj jj l m ", - " ````` aa c c dddd eeee f f gg h iiii jjjjjjjj l m mm ", - " l m mm ", - " ", - " ", - " ", - " ", - " ", - " ", - " nnn nnn oo ppppppppp qqqqqqqqq ", - " nnnnnnnn oo ppppppppp qqqqqqqqq r r r ssss tt u uuuuu v w www xxxxx yyy zzzzzzzzz {{{ |||||| ", - " nnnnnnnn oo ppppppppp qqqqqqqqq r rr rr ss ss tt tttt uuuuuuuu v ww wwww xxxxxxx y y z zzz z {{ { | | | ", - " nnnnnnnn ooooo ppppppppp qqqqqqqqq r rrr rrr sssss ss ttttttt uuuuu u vvvv wwwwwww xxxx xxx yyyyyy z z { {{ | |||| ", - " nnnnnnnn ooo ppppppppp qqqqqqqqq rrrrrrrrr ssss ss ttttt u uuuu vvvv wwwwwww xx xx yyyyyy z z { {{{ | | ", - " nnnnnnnn ooooo ooo ppppppppp qqqqqqqqq rrrrrrrrr ssss sss ttttttt u uuu vvv wwwww xxxxx xx yyyyy z zzz z {{ {{ {{ | |||| | ", - " nnnnnnnn ooooooooo ppppppppp qqqqqqqqq r rrr rrr sss sss ttttttt uuuuuuu vvv wwwww xxx xxx yy y zz zz {{{{ {{{ | |||| | ", - " nnnnnnnn ooooooooo ppppppppp qqqqqqqqq r rr rr ssssss tt vvv xxxxxx yyy {{{{{ | |||| | ", - " r r r sss tt v xxx y { | | ", - " |||||||| ", - " ", - " ", - " ", - " ", - " ", - " ", - " }} }} ~~~~~~~ \u007f\u007f\u007f\u007f\u007f\u007f \u0080\u0080 \u0081\u0081\u0081\u0081\u0081\u0081\u0081 \u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083 \u0084\u0084\u0084 \u0085\u0085\u0085\u0085 \u0086\u0086 \u0086\u0086 ", - " \u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087 }} }} ~~~ ~~ \u007f\u007f\u007f\u007f\u007f\u007f \u0088 \u0088 \u0080\u0080\u0080\u0080\u0080\u0080 \u0081\u0081\u0081\u0081\u0081\u0081\u0081 \u0089 \u0089 \u008a\u008a\u008a\u008a\u008a\u008a\u008a \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083\u0083\u0083\u0083 \u0084\u0084 \u0084 \u0085 \u0085 \u008b\u008b\u008b\u008b\u008b \u0086\u0086 \u0086\u0086\u0086\u0086 ", - " \u0087 \u0087 \u0087 \u0087 }}}}}}} ~~ ~ \u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f \u0088 \u0088\u0088 \u0080\u0080\u0080\u0080\u0080\u0080\u0080 \u0089\u0089\u0089 \u0089\u0089\u0089 \u008a\u008a \u008a \u0082 \u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083 \u0083\u0083\u0083 \u0084 \u0084 \u0084\u0084\u0084\u0084 \u0085 \u0085 \u008b\u008b \u008b\u008b \u0086\u0086 \u0086\u0086\u0086\u0086 ", - " \u0087\u0087\u0087 \u0087\u0087\u0087 }}} }}} ~~~~~~~ \u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f \u0088 \u0088\u0088\u0088 \u0080\u0080\u0080\u0080\u0080 \u0080 \u0089\u0089\u0089 \u0089\u0089\u0089 \u008a\u008a \u008a \u0082 \u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083 \u0083\u0083\u0083\u0083 \u0084\u0084\u0084\u0084 \u0084\u0084 \u0085\u0085 \u0085 \u008b \u008b \u0086\u0086\u0086\u0086\u0086\u0086\u0086 ", - " \u0087 \u0087 \u0087 \u0087 }}}}}}}} ~~~~~~~ \u007f\u007f\u007f\u007f\u007f\u007f\u007f \u0088\u0088\u0088\u0088\u0088 \u0080\u0080 \u0080 \u0080\u0080 \u0089\u0089\u0089\u0089\u0089 \u008a\u008a \u008a \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083 \u0083 \u0084 \u0084 \u0084 \u0085 \u008b \u0086\u0086\u0086\u0086\u0086\u0086\u0086 ", - " \u0087 \u0087 \u0087 \u0087 }}}} }}}} ~~~ ~~ \u0088 \u0088\u0088\u0088 \u0080\u0080\u0080 \u0080\u0080\u0080 \u0089\u0089\u0089 \u008a\u008a\u008a \u008a \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083 \u0083\u0083\u0083\u0083 \u0084 \u0084\u0084\u0084\u0084 \u0085\u0085\u0085\u0085 \u008b \u008b\u008b \u0086\u0086 \u0086\u0086\u0086 ", - " \u0087 \u0087 \u0087 \u0087 }}}} }}}} ~~ \u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f \u0088 \u0088\u0088 \u0080\u0080\u0080\u0080\u0080\u0080\u0080 \u0089 \u008a\u008a \u008a\u008a \u0082\u0082\u0082\u0082 \u0082\u0082 \u0083\u0083\u0083 \u0083\u0083\u0083 \u0084 \u0084 \u0085\u0085 \u0085 \u008b\u008b \u008b\u008b \u0086\u0086 \u0086\u0086 ", - " \u0087 \u0087 \u0087 \u0087 \u0088 \u0088 \u0080\u0080\u0080\u0080\u0080 \u008a \u008a \u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083\u0083\u0083 \u0084\u0084\u0084\u0084 \u0085\u0085 \u0085 \u008b\u008b\u008b\u008b\u008b \u0086\u0086 \u0086\u0086 ", - " \u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087 \u0088 \u008a\u008a \u0084 \u0085\u0085\u0085 \u008b\u008b \u0086\u0086 \u0086\u0086 ", - " \u0084\u0084\u0084\u0084\u0084 \u0086\u0086 \u0086\u0086 ", - " ", - " ", - " ", - " ", - " ", - " ", - " \u008c\u008c \u008d\u008d\u008d\u008d \u008e \u008f\u008f\u008f\u008f \u0090 \u0091\u0091\u0091\u0091 \u0092\u0092 \u0093\u0093 \u0094\u0094\u0094\u0094\u0094\u0094\u0094 \u0095\u0095\u0095\u0095\u0095 \u0096\u0096 \u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u0098\u0098 \u0099\u0099\u0099\u0099\u0099\u0099\u0099 ", - " \u008c\u008c\u008c\u008c \u008d\u008d\u008d \u008d\u008d\u008d \u008e \u008e\u008e\u008e \u0090\u0090\u0090 \u0091\u0091\u0091\u0091\u0091\u0091 \u0092\u0092 \u009a\u009a\u009a \u0093 \u0093 \u0094 \u0094 \u0095\u0095\u0095\u0095\u0095 \u0096\u0096\u0096\u0096 \u0096\u0096 \u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u0098\u0098\u0098\u0098\u0098\u0098 \u0099\u0099\u0099\u0099\u0099\u0099\u0099\u0099 ", - " \u008c\u008c\u008c\u008c \u008d\u008d \u008d \u008e\u008e\u008e\u008e \u008e\u008e \u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f \u0090 \u0091\u0091\u0091\u0091\u0091 \u0091\u0091 \u0092\u0092\u0092\u0092\u0092\u0092\u0092 \u009a\u009a\u009a\u009a\u009a \u0093\u0093 \u0093\u0093 \u0094 \u0094 \u0095 \u0095 \u0096\u0096 \u0096 \u0096 \u0096 \u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u0098 \u0098\u0098\u0098\u0098 \u0098 \u0099\u0099\u0099\u0099\u0099\u0099 \u0099 ", - " \u008c\u008c\u008c\u008c \u008d \u008d\u008d \u008e\u008e\u008e\u008e \u008e\u008e \u008e \u0090 \u0090 \u0090 \u0091\u0091\u0091 \u0091\u0091\u0091 \u0092\u0092\u0092\u0092\u0092\u0092\u0092 \u009a\u009a\u009a \u009a\u009a\u009a \u0093\u0093\u0093 \u0093 \u0094 \u0094 \u0095\u0095 \u0095 \u0096\u0096\u0096\u0096 \u0096 \u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098 \u0099\u0099\u0099\u0099\u0099\u0099\u0099\u0099 ", - " \u008c\u008c\u008c\u008c\u008c\u008c \u008d \u008d\u008d \u008d\u008d \u008e\u008e\u008e\u008e \u008e\u008e \u008e \u008f\u008f\u008f\u008f\u008f\u008f \u0090\u0090\u0090\u0090\u0090\u0090\u0090\u0090\u0090 \u0091\u0091\u0091 \u0091\u0091\u0091 \u0092\u0092 \u009a\u009a\u009a \u009a\u009a\u009a \u0093\u0093 \u0093 \u0094 \u0094 \u0094 \u0095\u0095 \u0095 \u0096\u0096\u0096 \u0096 \u0096 \u0097\u0097\u0097 \u0097\u0097\u0097 \u0098\u0098\u0098\u0098 \u0098\u0098\u0098\u0098 \u0099\u0099\u0099\u0099\u0099\u0099 ", - " \u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c \u008d\u008d \u008d \u008e\u008e \u008e\u008e\u008e \u0090\u0090 \u0090 \u0090\u0090 \u0091\u0091\u0091\u0091\u0091 \u0091\u0091 \u0092\u0092 \u009a \u009a \u0093\u0093 \u0093 \u0094 \u0094\u0094\u0094 \u0094 \u0095\u0095\u0095 \u0095 \u0096\u0096 \u0096 \u0096\u0096 \u0096 \u0097 \u0097\u0097\u0097\u0097\u0097 \u0098\u0098\u0098 \u0098\u0098\u0098\u0098 \u0099\u0099\u0099\u0099\u0099 ", - " \u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c \u008d\u008d\u008d \u008d\u008d\u008d \u008e \u008e\u008e \u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f \u0090 \u0091\u0091\u0091\u0091\u0091\u0091 \u0092\u0092 \u0093\u0093 \u0093 \u0094\u0094\u0094 \u0094\u0094\u0094 \u0095 \u0095\u0095\u0095\u0095 \u0096\u0096\u0096\u0096 \u0096\u0096 \u0097\u0097 \u0097\u0097\u0097\u0097 \u0098\u0098\u0098\u0098 \u0098\u0098\u0098\u0098 \u0099\u0099\u0099\u0099\u0099\u0099\u0099\u0099\u0099 ", - " \u008c\u008c\u008c\u008c\u008c\u008c \u008d\u008d\u008d\u008d \u0090\u0090\u0090 \u0091\u0091\u0091\u0091 \u0093\u0093\u0093\u0093\u0093\u0093\u0093 \u0094\u0094 \u0094\u0094 \u0095 \u0095 \u0096\u0096 \u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098 \u0099\u0099\u0099\u0099\u0099\u0099\u0099\u0099 ", - " \u0090\u0090\u0090 \u0095\u0095\u0095 ", - " ", - " ", - " ", - " ", - " ", - " ", - " \u009b\u009b\u009b\u009b\u009b\u009b\u009b \u009c\u009c\u009c\u009c\u009c\u009c \u009d\u009d\u009d\u009d\u009d ", - " \u009e\u009e \u009f\u009f\u009f\u009f\u009f\u009f \u00a0 \u009b\u009b\u009b\u009b\u009b\u009b\u009b \u009c \u009c\u009c \u00a1\u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2 \u00a3\u00a3\u00a3 \u00a3\u00a3 \u00a4\u00a4\u00a4\u00a4 \u009d \u009d \u00a5\u00a5\u00a5 \u00a6\u00a6\u00a6 \u00a7\u00a7\u00a7\u00a7\u00a7\u00a7\u00a7 \u00a8\u00a8 \u00a9\u00a9 ", - " \u009e\u009e \u009f \u009f \u009f \u00a0\u00a0\u00a0\u00a0 \u009b\u009b\u009b\u009b\u009b\u009b\u009b\u009b\u009b \u009c \u009c\u009c \u00a1\u00a1\u00a1\u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2\u00a2 \u00a3\u00a3\u00a3 \u00a3\u00a3 \u00a4\u00a4\u00a4\u00a4\u00a4\u00a4 \u009d \u009d \u00a5 \u00a5 \u00a6\u00a6 \u00a7\u00a7 \u00a7\u00a7 \u00a8\u00a8\u00a8\u00a8 \u00a9\u00a9 \u00a9 ", - " \u009e\u009e\u009e \u009e\u009e\u009e \u009f \u009f\u009f\u009f\u009f \u00a0\u00a0\u00a0\u00a0 \u00a0 \u009b\u009b\u009b\u009b\u009b\u009b\u009b\u009b\u009b \u009c \u009c\u009c \u009c\u009c \u00a1\u00a1\u00a1\u00a1\u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2 \u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4 \u009d \u009d \u00a5 \u00a5\u00a5\u00a5\u00a5 \u00a6\u00a6 \u00a7 \u00a7\u00a7\u00a7 \u00a7 \u00a8\u00a8\u00a8\u00a8\u00a8 \u00a9 \u00a9 ", - " \u009e\u009e \u009e\u009e \u009f \u009f \u00a0\u00a0\u00a0\u00a0 \u00a0 \u009b\u009b\u009b\u009b\u009b\u009b\u009b\u009b \u009c \u009c\u009c\u009c\u009c \u009c \u00a1\u00a1 \u00a1\u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2\u00a2 \u00a3\u00a3\u00a3 \u00a3\u00a3 \u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4 \u009d \u009d \u00a5\u00a5\u00a5 \u00a5 \u00a6 \u00a6 \u00a7 \u00a7\u00a7\u00a7 \u00a7 \u00a8\u00a8\u00a8\u00a8\u00a8 \u00a9 ", - " \u009e\u009e \u009e\u009e \u009f \u009f \u00a0\u00a0 \u009b\u009b\u009b\u009b\u009b\u009b\u009b\u009b \u009c \u009c\u009c \u009c \u00a1\u00a1\u00a1\u00a1\u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2\u00a2 \u00a3\u00a3\u00a3\u00a3 \u00a3\u00a3\u00a3 \u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4 \u009d \u009d \u00a5\u00a5 \u00a5 \u00a6\u00a6 \u00a6 \u00a7 \u00a7\u00a7\u00a7 \u00a7 \u00a8\u00a8\u00a8\u00a8\u00a8 \u00a9 \u00a9 ", - " \u009e \u009e \u009f \u009f \u00a0 \u009b\u009b\u009b\u009b\u009b\u009b\u009b\u009b\u009b \u009c \u009c \u00a1\u00a1\u00a1\u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2\u00a2 \u00a3\u00a3\u00a3\u00a3\u00a3\u00a3\u00a3 \u00a4\u00a4 \u00a4 \u00a4\u00a4\u00a4 \u009d \u009d \u00a5\u00a5 \u00a5 \u00a6\u00a6\u00a6\u00a6\u00a6\u00a6 \u00a7\u00a7 \u00a7\u00a7 \u00a8\u00a8 \u00a8\u00a8 \u00a9 \u00a9 ", - " \u009e\u009e\u009e\u009e\u009e\u009e \u009f \u009f \u009b\u009b\u009b\u009b\u009b\u009b\u009b\u009b\u009b \u009c\u009c\u009c\u009c\u009c\u009c \u00a1\u00a1\u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2 \u00a3\u00a3\u00a3\u00a3\u00a3\u00a3 \u00a4\u00a4\u00a4\u00a4\u00a4 \u009d\u009d\u009d\u009d\u009d \u00a5 \u00a5 \u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6 \u00a7\u00a7 \u00a7\u00a7\u00a7\u00a7 \u00a8\u00a8\u00a8 \u00a9 \u00a9 ", - " \u009e \u009e \u009f \u009f \u00a1\u00a1 \u00a3\u00a3\u00a3 \u00a5\u00a5\u00a5\u00a5\u00a5 \u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6 \u00a7\u00a7\u00a7\u00a7\u00a7\u00a7\u00a7 \u00a8\u00a8\u00a8 \u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9 ", - " \u009f\u009f\u009f\u009f\u009f\u009f\u009f\u009f \u00a5\u00a5\u00a5\u00a5\u00a5 \u00a8 \u00a9\u00a9 ", - " ", - " ", - " ", - " ", - " ", - " ", - " \u00aa\u00aa \u00ab \u00ab\u00ab \u00ac \u00ad\u00ad \u00ad\u00ad \u00ae\u00ae \u00af\u00af\u00af \u00b0\u00b0 \u00b1\u00b1 \u00b2\u00b2 \u00b3\u00b3\u00b3\u00b3 \u00b4\u00b4\u00b4 \u00b5\u00b5 \u00b6\u00b6\u00b6\u00b6 ", - " \u00aa\u00aa \u00ab\u00ab\u00ab\u00ab\u00ab \u00ac\u00ac \u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7 \u00ad \u00ad\u00ad\u00ad\u00ad\u00ad\u00ad \u00ae\u00ae\u00ae\u00ae\u00ae\u00ae \u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8 \u00b0 \u00b0\u00b0 \u00b1\u00b1\u00b1 \u00b2\u00b2 \u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3 \u00b4\u00b4\u00b4\u00b4\u00b4 \u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b6 \u00b6 ", - " \u00aa\u00aa\u00aa\u00aa \u00ab\u00ab\u00ab\u00ab\u00ab\u00ab \u00ac\u00ac\u00ac\u00ac \u00b7 \u00b7\u00b7 \u00b7 \u00ad \u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad \u00ae\u00ae\u00ae \u00ae\u00ae\u00ae \u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8 \u00b0\u00b0\u00b0\u00b0\u00b0\u00b0\u00b0\u00b0\u00b0 \u00b1\u00b1 \u00b2\u00b2\u00b2\u00b2 \u00b2 \u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3 \u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4 \u00b5\u00b5\u00b5 \u00b5\u00b5 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00b6 ", - " \u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa \u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab \u00ac\u00ac\u00ac\u00ac \u00b7\u00b7 \u00ad\u00ad\u00ad\u00ad \u00ad\u00ad \u00ae\u00ae\u00ae\u00ae \u00ae\u00ae\u00ae \u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8 \u00b0\u00b0\u00b0\u00b0\u00b0\u00b0\u00b0\u00b0 \u00b1\u00b1 \u00b2 \u00b2\u00b2\u00b2 \u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3 \u00b4 \u00b4\u00b4\u00b4 \u00b4 \u00b5\u00b5\u00b5 \u00b5\u00b5 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00b6 ", - " \u00aa\u00aa\u00aa\u00aa\u00aa\u00aa \u00ab\u00ab\u00ab\u00ab\u00ab\u00ab \u00ac\u00ac\u00ac\u00ac \u00b7\u00b7 \u00ad \u00ad \u00ae\u00ae \u00ae\u00ae \u00af \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8 \u00b0\u00b0 \u00b0\u00b0\u00b0 \u00b1\u00b1 \u00b1 \u00b2\u00b2\u00b2 \u00b2\u00b2 \u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3 \u00b4 \u00b4\u00b4\u00b4 \u00b4 \u00b5 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00b6 ", - " \u00aa\u00aa\u00aa\u00aa \u00ab\u00ab \u00ab\u00ab\u00ab \u00ac\u00ac \u00b7\u00b7 \u00ad \u00ad \u00ad \u00ae\u00ae\u00ae\u00ae \u00ae\u00ae\u00ae \u00af\u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8 \u00b0\u00b0\u00b0 \u00b0\u00b0\u00b0\u00b0\u00b0 \u00b1\u00b1\u00b1\u00b1\u00b1 \u00b2 \u00b2\u00b2 \u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3 \u00b4\u00b4\u00b4\u00b4\u00b4 \u00b4 \u00b5\u00b5 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00b6 ", - " \u00aa\u00aa\u00aa\u00aa\u00aa\u00aa \u00ab\u00ab \u00ab\u00ab\u00ab \u00ac \u00b7\u00b7\u00b7 \u00ad \u00ad \u00ae\u00ae\u00ae\u00ae\u00ae\u00ae \u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8 \u00b0\u00b0\u00b0\u00b0\u00b0 \u00b0\u00b0 \u00b1\u00b1\u00b1\u00b1 \u00b2 \u00b2\u00b2 \u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3 \u00b4\u00b4 \u00b4\u00b4\u00b4\u00b4 \u00b5\u00b5 \u00b5\u00b5 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00b6 ", - " \u00aa\u00aa \u00aa\u00aa \u00b7 \u00b7 \u00ad\u00ad\u00ad\u00ad\u00ad\u00ad \u00ae\u00ae\u00ae\u00ae\u00ae \u00af\u00af\u00af \u00b8\u00b8\u00b8\u00b8\u00b8 \u00b0 \u00b0 \u00b0 \u00b0\u00b0 \u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2 \u00b4\u00b4\u00b4\u00b4\u00b4 \u00b5\u00b5\u00b5\u00b5\u00b5 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00b6 ", - " \u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7 \u00b8\u00b8\u00b8 \u00b0\u00b0 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " \u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9 \u00ba\u00ba\u00ba \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb \u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc \u00bc \u00bd \u00bd\u00bd \u00be\u00be\u00be \u00bf \u00c0 \u00c1\u00c1\u00c1 \u00c2\u00c2\u00c2\u00c2\u00c2 \u00c3\u00c3\u00c3 \u00c4\u00c4\u00c4\u00c4 \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5 \u00c6\u00c6 \u00c7\u00c7 \u00c7\u00c7 ", - " \u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9 \u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba \u00bb \u00bb\u00bb \u00bc \u00bc \u00bc\u00bc\u00bc \u00bd \u00bd\u00bd\u00bd \u00be\u00be\u00be \u00bf\u00bf\u00bf\u00bf\u00bf \u00c0\u00c0\u00c0 \u00c0\u00c0\u00c0\u00c0\u00c0 \u00c1\u00c1 \u00c1\u00c1 \u00c2 \u00c2 \u00c3 \u00c3 \u00c4 \u00c4 \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5 \u00c6\u00c6 \u00c7 \u00c7 ", - " \u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9 \u00ba \u00bb \u00bb \u00bc \u00bc \u00bc \u00bd \u00bd\u00bd\u00bd \u00be\u00be\u00be \u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf \u00c0\u00c0\u00c0 \u00c0 \u00c1\u00c1 \u00c1\u00c1 \u00c2 \u00c2 \u00c3\u00c3\u00c3 \u00c3\u00c3\u00c3\u00c3\u00c3 \u00c4 \u00c4\u00c4\u00c4 \u00c5 \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5 \u00c6\u00c6 \u00c6\u00c6\u00c6\u00c6 \u00c7 \u00c7\u00c7\u00c7 ", - " \u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9 \u00ba\u00ba\u00ba \u00ba \u00bb \u00bb \u00bb\u00bb \u00bc \u00bc \u00bd \u00bd\u00bd\u00bd \u00be\u00be\u00be \u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf \u00c0 \u00c1\u00c1 \u00c1\u00c1 \u00c2 \u00c2 \u00c3\u00c3 \u00c3 \u00c4\u00c4\u00c4\u00c4\u00c4\u00c4 \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5 \u00c6\u00c6 \u00c6\u00c6\u00c6\u00c6\u00c6 \u00c7 \u00c7\u00c7\u00c7 ", - " \u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9 \u00ba\u00ba\u00ba \u00ba \u00bb\u00bb\u00bb \u00bb\u00bb\u00bb \u00bc \u00bc \u00bd \u00bd \u00bd\u00bd \u00be\u00be\u00be \u00bf\u00bf\u00bf \u00bf\u00bf \u00c0\u00c0\u00c0 \u00c0 \u00c1\u00c1\u00c1\u00c1\u00c1 \u00c1 \u00c2 \u00c3\u00c3 \u00c3\u00c3 \u00c4\u00c4\u00c4\u00c4\u00c4 \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5 \u00c6\u00c6 \u00c6\u00c6 \u00c6\u00c6 \u00c7\u00c7\u00c7 \u00c7 ", - " \u00b9\u00b9\u00b9\u00b9\u00b9\u00b9 \u00ba\u00ba\u00ba \u00ba \u00bb\u00bb \u00bb\u00bb\u00bb \u00bc \u00bc \u00bd \u00bd\u00bd \u00bd \u00be\u00be\u00be \u00bf\u00bf \u00bf \u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0 \u00c1\u00c1\u00c1\u00c1 \u00c2 \u00c2 \u00c3\u00c3 \u00c3 \u00c4 \u00c4 \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5 \u00c6\u00c6 \u00c6\u00c6 \u00c6\u00c6 \u00c7 \u00c7 ", - " \u00b9\u00b9\u00b9\u00b9 \u00ba \u00bb \u00bb \u00bc \u00bc \u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd \u00be\u00be\u00be \u00bf \u00c0\u00c0 \u00c0\u00c0\u00c0\u00c0\u00c0 \u00c1\u00c1 \u00c2 \u00c2 \u00c3\u00c3\u00c3 \u00c3 \u00c4 \u00c4\u00c4 \u00c5 \u00c5 \u00c5\u00c5 \u00c6\u00c6 \u00c6\u00c6 \u00c6\u00c6 \u00c7 \u00c7\u00c7 ", - " \u00b9\u00b9 \u00ba\u00ba\u00ba\u00ba\u00ba \u00bc\u00bc\u00bc\u00bc \u00bc \u00be \u00c0 \u00c1\u00c1 \u00c2\u00c2\u00c2\u00c2\u00c2 \u00c3\u00c3\u00c3 \u00c4\u00c4 \u00c5 \u00c7\u00c7\u00c7 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " \u00c8 \u00c9 \u00ca \u00cb \u00cb ", - " \u00cc\u00cc\u00cc\u00cc\u00cc\u00cc\u00cc\u00cc\u00cc\u00cc \u00cd \u00cd\u00cd\u00cd \u00ce \u00ce\u00ce\u00ce\u00ce \u00ce \u00cf\u00cf \u00c8\u00c8\u00c8 \u00c9\u00c9\u00c9 \u00d0\u00d0 \u00d1 \u00d1 \u00d1\u00d1 \u00d2\u00d2 \u00d2 \u00d2 \u00ca\u00ca\u00ca \u00d3\u00d3\u00d3 \u00d4\u00d4 \u00d4\u00d4\u00d4 \u00cb \u00cb \u00cb\u00cb\u00cb \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5 \u00d6\u00d6\u00d6\u00d6 ", - " \u00cc \u00cc \u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd \u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce \u00cf\u00cf \u00c8\u00c8\u00c8 \u00c9\u00c9\u00c9 \u00d0\u00d0 \u00d1\u00d1 \u00d1\u00d1\u00d1 \u00d1\u00d1 \u00d2\u00d2\u00d2\u00d2\u00d2\u00d2\u00d2\u00d2\u00d2\u00d2 \u00ca\u00ca\u00ca\u00ca\u00ca \u00d3\u00d3\u00d3\u00d3\u00d3\u00d3 \u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4 \u00cb \u00cb \u00cb \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5 \u00d6\u00d6\u00d6\u00d6 ", - " \u00cc\u00cc\u00cc \u00cc\u00cc\u00cc \u00cd\u00cd \u00cd\u00cd\u00cd \u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce \u00cf\u00cf \u00c8\u00c8\u00c8\u00c8\u00c8 \u00c9\u00c9\u00c9 \u00d0\u00d0 \u00d0\u00d0 \u00d0 \u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d2\u00d2\u00d2\u00d2 \u00d2\u00d2\u00d2\u00d2 \u00ca\u00ca\u00ca\u00ca\u00ca \u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3 \u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4 \u00cb\u00cb\u00cb \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5 \u00d6\u00d6\u00d6\u00d6 ", - " \u00cc \u00cc\u00cc \u00cc\u00cc \u00cc \u00cd\u00cd \u00cd\u00cd\u00cd \u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce \u00cf\u00cf \u00c8\u00c8\u00c8\u00c8\u00c8 \u00c9\u00c9\u00c9 \u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0 \u00d1 \u00d1 \u00d1 \u00d1 \u00d1 \u00d2\u00d2\u00d2 \u00d2\u00d2 \u00d2\u00d2\u00d2 \u00ca\u00ca \u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3 \u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4 \u00cb\u00cb\u00cb \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5 \u00d5\u00d5 \u00d6\u00d6\u00d6\u00d6 \u00d6 ", - " \u00cc \u00cc\u00cc\u00cc\u00cc \u00cc \u00cd\u00cd \u00cd\u00cd\u00cd \u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce \u00cf\u00cf \u00c8 \u00c8\u00c8\u00c8 \u00c9\u00c9\u00c9\u00c9 \u00d0\u00d0\u00d0\u00d0\u00d0\u00d0 \u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d2\u00d2\u00d2 \u00d2\u00d2 \u00d2\u00d2\u00d2 \u00ca\u00ca \u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3 \u00d4\u00d4\u00d4 \u00d4\u00d4\u00d4\u00d4\u00d4\u00d4 \u00cb\u00cb\u00cb \u00d5\u00d5\u00d5 \u00d5\u00d5\u00d5\u00d5\u00d5 \u00d6\u00d6\u00d6\u00d6\u00d6 \u00d6 ", - " \u00cc \u00cc \u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd \u00ce\u00ce \u00cf \u00c8\u00c8\u00c8\u00c8\u00c8 \u00c9\u00c9\u00c9\u00c9 \u00d0\u00d0\u00d0\u00d0 \u00d1 \u00d1 \u00d1 \u00d1 \u00d1 \u00d2\u00d2\u00d2\u00d2 \u00d2\u00d2\u00d2\u00d2 \u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca \u00d3\u00d3\u00d3\u00d3\u00d3\u00d3 \u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4 \u00cb\u00cb\u00cb \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5 \u00d6\u00d6 \u00d6 \u00d6 ", - " \u00cc\u00cc\u00cc\u00cc\u00cc\u00cc\u00cc\u00cc\u00cc\u00cc \u00cd \u00cd\u00cd\u00cd \u00ce \u00cf\u00cf \u00c8\u00c8\u00c8 \u00c9\u00c9\u00c9 \u00d0\u00d0 \u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d2 \u00d2 \u00ca\u00ca\u00ca\u00ca\u00ca\u00ca \u00ca\u00ca \u00d3\u00d3\u00d3\u00d3\u00d3\u00d3 \u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4 \u00cb\u00cb\u00cb \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5 \u00d6\u00d6\u00d6\u00d6 \u00d6\u00d6 ", - " \u00d1 \u00d1 \u00d1 \u00d1 \u00d1 \u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca \u00d3 \u00d3 \u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4 \u00cb ", - " \u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d4\u00d4\u00d4\u00d4\u00d4\u00d4 ", - " ", - " ", - " ", - " ", - " \u00d7\u00d7 ", - " \u00d7\u00d7\u00d7\u00d7 ", - " \u00d8 \u00d9 \u00da\u00da\u00da \u00db\u00db\u00db\u00db\u00db\u00db \u00dc\u00dc\u00dc \u00dd \u00de \u00df\u00df \u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1 \u00e2 \u00e3\u00e3\u00e3 \u00e3\u00e3\u00e3 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 \u00d7\u00d7\u00d7\u00d7\u00d7\u00d7 \u00e5\u00e5\u00e5\u00e5 ", - " \u00d8\u00d8\u00d8\u00d8\u00d8 \u00d9 \u00da \u00da\u00da \u00db\u00db \u00db\u00db \u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc \u00dd\u00dd\u00dd \u00de\u00de\u00de \u00df\u00df\u00df\u00df\u00df\u00df\u00df \u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3 \u00e3\u00e3\u00e3 \u00e4 \u00e4 \u00e4 \u00e4 \u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5 ", - " \u00d8\u00d8 \u00d8\u00d8 \u00d9 \u00da \u00da\u00da \u00db\u00db \u00db\u00db \u00dc\u00dc \u00dc\u00dc\u00dc\u00dc \u00dd\u00dd\u00dd\u00dd\u00dd \u00de\u00de\u00de\u00de\u00de \u00df\u00df\u00df\u00df \u00e0\u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0 \u00e1\u00e1 \u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3\u00e3 \u00e3\u00e3\u00e3\u00e3 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 \u00e5\u00e5\u00e5 \u00e5\u00e5\u00e5 ", - " \u00d8 \u00d8\u00d8 \u00d9 \u00d9 \u00da\u00da\u00da\u00da\u00da\u00da \u00db\u00db \u00db\u00db\u00db \u00dc \u00dc\u00dc\u00dc\u00dc \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd \u00de\u00de\u00de\u00de\u00de\u00de\u00de \u00df\u00df\u00df\u00df \u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0 \u00e1 \u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3\u00e3\u00e3 \u00e4 \u00e4 \u00e4 \u00e4 \u00e5\u00e5\u00e5 \u00e5\u00e5\u00e5 ", - " \u00d8 \u00d8\u00d8 \u00d9 \u00d9 \u00da\u00da\u00da\u00da\u00da\u00da \u00db\u00db \u00db\u00db \u00dc \u00dc\u00dc\u00dc\u00dc \u00de\u00de \u00de\u00de\u00de\u00de\u00de \u00df\u00df\u00df\u00df\u00df\u00df \u00e0\u00e0\u00e0 \u00e0\u00e0 \u00e1 \u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3\u00e3 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 \u00e5\u00e5\u00e5\u00e5 \u00e5\u00e5\u00e5\u00e5\u00e5 ", - " \u00d8\u00d8 \u00d8\u00d8 \u00d9 \u00d9 \u00d9 \u00da\u00da\u00da\u00da\u00da\u00da \u00db\u00db \u00db\u00db \u00dc \u00dc\u00dc\u00dc\u00dc \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd \u00de\u00de \u00df\u00df \u00df \u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0 \u00e1\u00e1 \u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3\u00e3\u00e3\u00e3\u00e3 \u00e3 \u00e4 \u00e4 \u00e4 \u00e4 \u00e5\u00e5\u00e5\u00e5 \u00e5\u00e5\u00e5\u00e5\u00e5 ", - " \u00d8\u00d8\u00d8\u00d8\u00d8\u00d8 \u00d9 \u00d9 \u00d9 \u00d9 \u00da\u00da\u00da\u00da\u00da\u00da \u00db\u00db \u00db\u00db \u00dc\u00dc \u00dc\u00dc\u00dc\u00dc \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd \u00de\u00de \u00df \u00df \u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0 \u00e1\u00e1\u00e1 \u00e1\u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3\u00e3 \u00e3\u00e3\u00e3 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 \u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5 ", - " \u00d8\u00d8\u00d8 \u00d8\u00d8 \u00d9\u00d9\u00d9 \u00d9 \u00d9 \u00d9 \u00db\u00db\u00db\u00db\u00db\u00db \u00dc\u00dc\u00dc\u00dc\u00dc \u00de\u00de \u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0 \u00e1\u00e1\u00e1 \u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3\u00e3 \u00e3\u00e3\u00e3 ", - " \u00d8 \u00e2\u00e2\u00e2 ", - " ", - " ", - " ", - " ", - " ", - " ", - " \u00e6 \u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7 \u00e8 \u00e9\u00e9\u00e9\u00e9 \u00ea ", - " \u00eb\u00eb \u00e6 \u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7 \u00ec\u00ec \u00ed\u00ed\u00ed \u00ee \u00ee\u00ee \u00ef \u00e8\u00e8 \u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0 \u00f1\u00f1\u00f1\u00f1\u00f1 \u00f2 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 \u00f3\u00f3\u00f3 \u00f3\u00f3 \u00ea\u00ea\u00ea\u00ea ", - " \u00eb\u00eb\u00eb\u00eb\u00eb \u00e6 \u00e6 \u00e6\u00e6 \u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7 \u00ec\u00ec \u00ed\u00ed \u00ed\u00ed \u00ee\u00ee \u00ee\u00ee \u00ef\u00ef\u00ef \u00e8\u00e8\u00e8 \u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0 \u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1 \u00f2\u00f2\u00f2 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 \u00f3 \u00f3 \u00ea\u00ea\u00ea\u00ea\u00ea\u00ea\u00ea ", - " \u00eb\u00eb\u00eb\u00eb\u00eb \u00e6\u00e6 \u00e6 \u00e6\u00e6 \u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7 \u00ec\u00ec\u00ec \u00ed \u00ed \u00ee\u00ee\u00ee \u00ee\u00ee \u00ef\u00ef\u00ef \u00e8\u00e8 \u00e8\u00e8 \u00f0\u00f0\u00f0\u00f0 \u00f0\u00f0 \u00f1 \u00f1\u00f1\u00f1\u00f1\u00f1 \u00f1 \u00f2\u00f2\u00f2\u00f2\u00f2 \u00f2 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 \u00f3 \u00f3 \u00f4\u00f4\u00f4\u00f4\u00f4\u00f4 \u00ea\u00ea\u00ea \u00ea\u00ea\u00ea ", - " \u00eb\u00eb\u00eb \u00eb \u00e6 \u00e6 \u00e6\u00e6 \u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7 \u00ec \u00ec\u00ec \u00ed\u00ed \u00ed\u00ed \u00ee\u00ee\u00ee\u00ee\u00ee\u00ee \u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef \u00e8\u00e8 \u00e8\u00e8 \u00f0\u00f0 \u00f0\u00f0 \u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1 \u00f2\u00f2\u00f2\u00f2 \u00f2\u00f2 \u00f3 \u00f3 \u00f4\u00f4\u00f4\u00f4 \u00ea\u00ea\u00ea\u00ea \u00ea\u00ea\u00ea\u00ea ", - " \u00eb \u00e6 \u00e6\u00e6 \u00e7 \u00e7 \u00ec\u00ec\u00ec\u00ec \u00ed\u00ed\u00ed\u00ed\u00ed \u00ee\u00ee\u00ee\u00ee\u00ee\u00ee \u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef \u00e8\u00e8\u00e8 \u00e8\u00e8\u00e8 \u00f0\u00f0 \u00f0\u00f0\u00f0 \u00f1\u00f1\u00f1 \u00f2\u00f2\u00f2\u00f2\u00f2\u00f2 \u00f2 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 \u00f3 \u00f3 \u00f4\u00f4 \u00ea\u00ea\u00ea\u00ea \u00ea\u00ea\u00ea\u00ea\u00ea ", - " \u00eb\u00eb\u00eb \u00e6\u00e6 \u00e6 \u00e7 \u00e7 \u00ec \u00ec\u00ec \u00ed\u00ed\u00ed \u00ee\u00ee\u00ee \u00ee\u00ee \u00ef\u00ef\u00ef\u00ef \u00e8\u00e8\u00e8 \u00e8\u00e8\u00e8 \u00f0\u00f0\u00f0 \u00f0\u00f0\u00f0\u00f0 \u00f1 \u00f2\u00f2 \u00f2\u00f2 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 \u00f3\u00f3 \u00f3 \u00ea\u00ea\u00ea\u00ea\u00ea\u00ea\u00ea\u00ea\u00ea\u00ea ", - " \u00eb\u00eb\u00eb \u00e6\u00e6\u00e6 \u00e6\u00e6\u00e6 \u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7 \u00ec \u00ec\u00ec \u00ed\u00ed\u00ed \u00ee\u00ee \u00ee\u00ee \u00ef\u00ef\u00ef\u00ef \u00e8\u00e8\u00e8\u00e8 \u00e8\u00e8\u00e8\u00e8 \u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0 \u00f1\u00f1\u00f1\u00f1\u00f1 \u00f2\u00f2 \u00f2 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 \u00ea\u00ea\u00ea\u00ea\u00ea\u00ea\u00ea\u00ea ", - " \u00eb\u00eb\u00eb \u00e6\u00e6\u00e6\u00e6 \u00ec\u00ec\u00ec \u00ec\u00ec\u00ec\u00ec \u00ed \u00ee \u00ee\u00ee \u00ef\u00ef\u00ef \u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8 \u00f0\u00f0\u00f0\u00f0\u00f0\u00f0 \u00f1\u00f1\u00f1\u00f1\u00f1 \u00f2\u00f2\u00f2 \u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3 ", - " \u00eb\u00eb ", - " ", - " ", - " ", - " ", - " ", - " ", - " \u00f5\u00f5 \u00f6\u00f6\u00f6\u00f6 \u00f7 \u00f8 \u00f9\u00f9\u00f9 \u00fa\u00fa\u00fa\u00fa\u00fa \u00fb ", - " \u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc \u00fd\u00fd\u00fd\u00fd \u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f7\u00f7\u00f7 \u00fe \u00fe\u00fe \u00fe\u00fe \u00ff\u00ff \u0100\u0100\u0100\u0100 \u00f8 \u00f8\u00f8 \u00f9\u00f9 \u00f9\u00f9 \u00fa \u00fa \u0101\u0101\u0101\u0101\u0101\u0101\u0101 \u00fb\u00fb \u00fb\u00fb \u0102\u0102 \u0103 ", - " \u00fc\u00fc\u00fc\u00fc\u00fc\u00fc \u00fd\u00fd \u00fd\u00fd \u00f5\u00f5 \u00f5\u00f5 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f7\u00f7\u00f7\u00f7 \u00fe\u00fe \u00fe\u00fe\u00fe \u00fe\u00fe \u00ff\u00ff\u00ff \u0100\u0100\u0100\u0100\u0100 \u0100 \u00f8 \u00f8 \u00f8\u00f8 \u00f9\u00f9\u00f9\u00f9\u00f9 \u00f9 \u00fa \u00fa \u0101\u0101\u0101\u0101\u0101 \u00fb \u00fb \u0102\u0102\u0102\u0102 \u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103 ", - " \u00fc\u00fc\u00fc\u00fc \u00fd\u00fd \u00fd\u00fd \u00f5\u00f5 \u00f5\u00f5\u00f5 \u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6 \u00f7\u00f7\u00f7\u00f7\u00f7 \u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe \u00ff\u00ff\u00ff \u0100 \u0100\u0100\u0100 \u0100\u0100\u0100 \u00f8 \u00f8 \u00f8\u00f8\u00f8 \u00f9\u00f9\u00f9\u00f9\u00f9\u00f9 \u00f9 \u00fa \u00fa \u0101\u0101\u0101 \u00fb\u00fb\u00fb \u0102\u0102\u0102\u0102\u0102 \u0103\u0103 ", - " \u00fc\u00fc \u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6 \u00f7\u00f7\u00f7\u00f7\u00f7 \u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe \u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff \u0100 \u0100\u0100\u0100 \u0100 \u0100 \u00f8 \u00f8 \u00f8 \u00f8\u00f8\u00f8 \u00f9\u00f9\u00f9\u00f9\u00f9 \u00f9 \u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa \u0101\u0101 \u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb \u0103 \u0103 ", - " \u00fc\u00fc \u00fd\u00fd \u00fd \u00f5\u00f5\u00f5 \u00f5\u00f5 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6 \u00f7\u00f7\u00f7\u00f7\u00f7 \u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe \u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff \u0100\u0100 \u0100 \u0100 \u0100 \u00f8 \u00f8 \u00f8 \u00f8\u00f8\u00f8 \u00f9\u00f9 \u00f9 \u00fa \u00fa\u00fa\u00fa \u0101\u0101 \u00fb\u00fb \u0102\u0102\u0102\u0102\u0102 \u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103 ", - " \u00fc\u00fc \u00fd\u00fd\u00fd\u00fd\u00fd\u00fd \u00f5\u00f5\u00f5 \u00f5\u00f5\u00f5 \u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f7\u00f7\u00f7 \u00fe\u00fe \u00fe\u00fe\u00fe \u00fe\u00fe \u00ff\u00ff\u00ff \u0100\u0100 \u0100\u0100 \u00f8 \u00f8 \u00f8 \u00f8\u00f8\u00f8 \u00f9 \u00f9\u00f9\u00f9 \u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa \u0101\u0101 \u00fb \u00fb \u0102\u0102\u0102 \u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103 ", - " \u00fc\u00fc \u00fd\u00fd\u00fd\u00fd\u00fd\u00fd \u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f7\u00f7\u00f7 \u00fe \u00fe\u00fe \u00fe\u00fe \u00ff\u00ff\u00ff \u0100 \u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8 \u0101 \u00fb\u00fb \u00fb\u00fb \u0102 ", - " \u00fc\u00fc\u00fc\u00fc\u00fc\u00fc \u00fd\u00fd \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00fe \u00fe\u00fe \u00ff\u00ff ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-iconic-font-1000-1000-2.0-grid-reference.json b/tests/visual_tests/grids/text-iconic-font-1000-1000-2.0-grid-reference.json deleted file mode 100644 index 955e20359..000000000 --- a/tests/visual_tests/grids/text-iconic-font-1000-1000-2.0-grid-reference.json +++ /dev/null @@ -1,483 +0,0 @@ -{ - "keys": [ - "", - "135", - "30", - "45", - "60", - "90", - "120", - "150", - "165", - "180", - "195", - "210", - "15", - "75", - "105", - "225", - "29", - "44", - "59", - "74", - "89", - "104", - "119", - "149", - "179", - "194", - "209", - "224", - "14", - "134", - "164", - "58", - "103", - "118", - "208", - "13", - "28", - "43", - "73", - "88", - "133", - "148", - "163", - "178", - "193", - "223", - "12", - "27", - "42", - "57", - "87", - "102", - "117", - "132", - "147", - "162", - "177", - "207", - "222", - "72", - "192", - "11", - "56", - "146", - "26", - "41", - "71", - "86", - "101", - "131", - "161", - "176", - "191", - "221", - "116", - "206", - "10", - "25", - "40", - "55", - "130", - "70", - "85", - "100", - "115", - "145", - "160", - "175", - "190", - "220", - "205", - "24", - "39", - "54", - "84", - "99", - "144", - "159", - "174", - "189", - "219", - "9", - "69", - "129", - "204", - "114", - "53", - "98", - "128", - "23", - "38", - "68", - "83", - "143", - "158", - "173", - "188", - "203", - "218", - "113", - "8", - "7", - "22", - "37", - "52", - "67", - "82", - "97", - "112", - "142", - "157", - "172", - "187", - "217", - "127", - "202", - "66", - "141", - "6", - "21", - "36", - "81", - "96", - "126", - "171", - "186", - "201", - "216", - "51", - "156", - "111", - "35", - "65", - "80", - "95", - "110", - "170", - "5", - "20", - "50", - "125", - "140", - "155", - "185", - "200", - "215", - "64", - "19", - "34", - "49", - "79", - "94", - "109", - "124", - "139", - "169", - "184", - "214", - "4", - "154", - "199", - "33", - "108", - "183", - "198", - "18", - "48", - "63", - "78", - "93", - "123", - "138", - "153", - "168", - "213", - "3", - "167", - "32", - "107", - "212", - "17", - "47", - "62", - "77", - "122", - "137", - "152", - "182", - "2", - "92", - "197", - "31", - "46", - "61", - "121", - "136", - "151", - "181", - "196", - "1", - "16", - "76", - "91", - "106", - "166", - "211" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!!! ", - " ## $$$$$$$$ %%%%%%%%%%%%%%%%% && ' ' !!!!!!!! !!!!!((((( )))))))))))))))))** +++++++++++++++ ,, ", - " ----- ######## # $$$$$$$$$$ %%%%%%%%%%%%%%%%%.%% . &&&&&&&& ////// '' '''!!!!!!!!! !!!!((((((( ))))))))))))) *** +++++++++++++++++ ,,,,,,, 00000 ", - " --------- ############# $$ $$$ %% ..% .. &&&&&&&&&&& ////////// '''''''''''''''!! !!!!!(((((((( )))))))))))))))))** +++++++++++++++++ ,, ,,, 000 ", - " ----------- ##### ###### $$ $$$$%% %%% ... ... &&&& &&&& ///// //////''''''''''''''''!' !!!!!! (((((( )))))))))))))))))** ***********++ + ++ ,, , ,, 00 0000 ", - " ---- ---- ### #### $$ $$$%% %%%% .... .... &&& &&&&& ///// ////// //'''''''''''''''!' !!!! !! ((((( **** ***********++ + ++ , , , 000 00000 ", - " --- - --- #### ##### $$ $%% %%%% %% ..... ..... &&& &&&&&&// // ////// //'' ''! !!!! (((( (((( ))))))))))))))))**** ***********++ + ++ , , 0000 00000000 ", - " --- - --- ### ###### $$ $%% %%% %%%% ...... ...... &&& &&&& &&// ///////// //' ''! !!!! (((((( (((( ))))))) ) ++ + ++ ,, ,, 0000000000000000000 ", - " -- - --- ### $$$$ $%% %%%%%% ....... ....... &&& &&&& &&// ///////// // ! !!!! (((((( ((( ))))))) **** ++ + ++ ,, ,,, 0000000000000000000 ", - " -- ------- --- ### $$$$$$$$$$$$$$%%$ %%%%%%%%................&&& &&&& &&// /////// // ! !!!! ! ((((( (((())))))))))))))))))** ***********++ + ++ ,, ,, 0000 00000000 ", - " --- - --- ### $$$$$$$$$$$$$$%%$ %% %%%%%%%%%............... &&& &&&& &&&/// ///// // ! !!! ! (((( ((( ** ***********++ + ++ ,, ,, 000 00000 ", - " --- - ---- ### $$$$$$$$$$$$$$%%$ %%%%%%%%%%%%%....... ...... && &&&& &&& /// /// ! ! ! ((( ((( ((())))))))))))))))** * ***********++ + ++ ,,,,, 00 0000 ", - " ---- - --- #### ## $$$$$$$$$$$$$$%%$%%%%%%%%%%%%%%...... ..... &&&&&& &&& ////////// ! ! ((( ((( (())))))))))))))))**** ++ + ++ ,,,,,, 000 ", - " ----- ----- #### #### $$$$ $%%$%%%%%%%%%%%%%%..... .... &&&&& &&&& ////// !! !! ((((( ((( (())))))))))) ) ++ + ++ ,,,,,, 00000 ", - " ------------ ############ $$$$ $%%$%%%%%%%%%%%%%%.... ... &&&&& &&&&& !!!!!!!!!!!!!! ((( ((( (())))))))))))))))**** ***********++ + ++ ,,,,,, ", - " ------- ---- ######### $$ $%% ... .. &&&&&&&&&& !!!!!!!!!!!! * * ***********++ + ++ ,,,,,, ", - " ---- ####### $$$$$$$$$$$$%%%%%%%%%%%%%%%%%.. . &&&&&& *** ***********+++++++++++++++++ ,,, ", - " --- 11111 2222222222222 3333333333 444444444444444 555555 6 7 8888888888888888888 99** :: ;;;;;;;;;;;;; <<<<<<<< ", - " === === -- 111111111 2222222222222333333333333 3444444444444444 555555555 666 777 >>>>>>>>>> 8888888888888888888 ??????**** 9999999999999 ::: ;;;;;;;;;;;;; <<<<<<<< ", - " ===== ===== 11111111111 22222222222223333333333333 33444444444444444 555555555555 666 77777 >>>>>>>>>> 8 8 ?????? 9999 9999999999999 :::: ;;; ;;; < << ", - " ============ 1111 111 22222222222223333333333333 333444444444444444 555 5555 66666 7777777 >>>>>>>> 8 8 ???? 999 9999999999999 ::::: ;;;;;;;;;;;;; << <<<<<<<<<<< << ", - " ========== 111 11 111 222222222222233333333333333333444444444444444 555 555 666666 777 >>>>>> 8888888888888888888 ???? :::::: ;;;;;;;;;;;;; << <<<<<<<<<<< <<< ", - " ======== 111 1111 111 222222222222233333333333333333444444444444444 55 55 555 6666666 777 >>>>>> 8888888888888888888 ????? 99 :::::: ;;;;;;;; ;; << <<<<< <<<< <<< ", - " ====== 111 11111 11 222222222222233333333333333333444444444444444555 5 555 555 66666666 777 >>>>>> 8888888888888888888 ????? ?9999 9999999999999 ::::: ;;;;;;;; ;;; << <<<<< <<<< <<< ", - " ======== 11 1111111 11 222222222222233333333333333333444444444444444555 555 5555 555 666666666 777 >>>>>> 8888888888888888888 ????????9999 9999999999999 :::: ;;;;;;;; ; ;;<< <<<<< <<<< <<< ", - " ========== 11 1111111 11 222222222222233333333333333333444444444444444555 5555555 555 666666666 777 >>>>>>>> 8 8 ?? ??????9999 9999999999999 ::: ;;;;;;;; ; ;<< << << <<< ", - " ============ 111 11111 11 222222222222233333333333333333444444444444444555 55555 555 66666666 777 >>>>>>>>>> 8 8 ???? ???? :: ;;;;;;;; ;;;;<< << << <<< ", - " ===== ===== 111 111 111 22222222222223333333333333 333444444444444444 555 555 555 6666666 777 >>>>>>>>>>>>8 8 ?????? 99 : ;;;;;;;; ;;;;<< <<<<< <<<< <<< ", - " ==== ==== 111 11 1111 222222 2222223333333333333 33444444444444444 555 5 555 66666 777 >>>>>>>>>>>>8 8 ?????? 9999 9999999999999 ;;;;;;;; << <<<<< <<<< <<< ", - " == == 1111 1111 22222 22222 33333333333 3444444444444444 5555 5555 6666 777 >>>>>>>>>> 8 888 8888 8?????? 9999 9999999999999 ;;;;;;;; << <<<<< <<<< <<< ", - " 11111111111 2222 2222 444444444444444 55555555555 666 777 >> 8 ?????? 9999 9999999999999 ;;;;;;;; << <<<<<<<<<<< <<< ", - " 111111111 222 222 444444444444444 55555555 66 7777777 >> 88888888888888888??? ?? ;;;;;;;; << <<<<<<<<<<< <<< ", - " 1111 2 @@@@@@@@@@@@@@@@@444444444444444 5555 6 ABBBBB7777777 >> 8888888888888888????? ;;;;;;;; C < <<<<<<<<<<< << ", - " DDD EEEEEEEEEEE FFFFFFFFFFF@@@@@@@@@@@@@@@@@GGGGGG GGGGGG HHHHHHH ABBBBBBB77777 IIIIII>>IIIIII JJJJJJJ ??? KKKKKKK LLLLLLLLLLLLLLLL MM ;;CC ; NNNNNNNNNNNNNN ", - " DDDDD EEEEEEEEEEE FFFFFFFFFFFF@@@@@@@@@@@@@@@@@GGGGGG GGGGGG HHHHHHHHHH 6666666666666BBBBBBBB777 IIIIIIIIIIIIIIII JJJ JJJJ KKKKKKKKKK LLLLLLLLLLLLLLLL MMM ;;;;;;;;;;;; NNNNNN NNNNNN ", - " DDDDDD EEE EEE FFFFFFFFFFFF GGGGGG GGGGGG HHHHH HHHH AAAAAAAAAAABBBBBBBBBBBBBBB IIIIIIIIIIIIIIII JJ JJ KKK KKKKKK LLLLLLLLLLLLLL MMMM CCCCCCCCCC NNNNNN NNNNNN ", - " D DDDDDD EEE EE FFF FFF@F @@@@@@@@@@@GGGGGG GGGGGG HHHH HHH AAAAAAAAAAAABBBBBBBBBBBBBBB III IIIIIIIIIII JJ JJKK KKK KKKK MMMMM CCCCCCCCCCCC NNNNNN NNNNNN ", - " DDD DDDDDD EE EEE FFFFFFFFFFFF @@ @@@@@@@@@@@GGGGGG GGGGGG HHH H H HHH AAAAAAAAA AAABBBBBBBBBBBBBBB III IIIIIIIIIIII JJ JJKK K KKKK MMMMMM CCCCCCCCCCCCCC NNNNNN NNN ", - " DDDDD DDDDDD EEE EE FFF FF @@@ @@@@@@@@@@@GGGGGG GGGGGG HH HHHHHH HHH AAAAAA AAAABBBBBBBBBBBBBBB IIIIIIIIIIIIIIIIJJJJJJJJJJ JJKKK KKKKKLLLLLLLLLLLLLLLL MMMMMM CCCCCCCCCCCCCCCCNNN NNN NNN ", - " DDDDDDDDDDDD EE EE FFFFFFFFFFFF @@@ GGGGGG GGGGGGHHH HHHHHH HHHAAAAA AAAAAAABBBB III I I IIIJJJJJJJJJJJJ JKKKK KKKKKKLLLLLLLLLLLLLLLL MMMMM CCCCCCCCCCCCCCCNNN NNNNNN NNNNNN ", - " DDDDDDDDDD EEEEEE EEEEE FFFFFFFFFFFF F@@@ @@@@@@@@@@@GGGGGG GGGGGGHHH HHHH HHHAAAA AAAAAAAAABBB BBBBBBBBBBBBIII I II IIJJJJJJJJJJJJ KKKKK KKKKKKKLLLLLLLLLLLLLLL MMMM C CCCCC CC NNNNNNNNNNN NNNNNN ", - " DDDDDDDD EEEEEE EEEEEE FFFFFFFFFFFF F@@ @@@@@@@@@@@GGGGGG GGGGGGHHH HHHHHH HHHAAA AAAAAAAAAABB BBBBBBBBBBBBBIII I III IIJJJJJJJJJJJJ KKKKKK KKKKKKKKK MMM C CC CC NNNNNNNNNNN NNNNNN ", - " DDDDDD EEEEEEEEEEEEEEE FFFFFFFFFFFF F@ @@@@@@@@@@@GGGGGG GGGGGG HH HHHHHHH HHH AAAAAAAAAAAAABB BBBBBBBBBBBBBBIII I III IIJJJJJJJJJJJJ KKKKK KKKKKKKKK MM CC NNNNNNNNNNNNNNNNNNN ", - " DDDD EEEEEEEEEEEEEEEFFFFFFFFFFFF FF GGGGGG GGGGGG HHH H HH HH AAAAAAAAAAAAA B BBBBBBBBBBBBBBBIII I III IIJJJJJJJJJJJJ KKKKKKK KKKKKKKLLLLLLLLLLLLLLLL CC NNNNNNNNNNNNNNNNNNN ", - " DD EEEEEEEEEEEEEEEFFFFFFFFFFFF FF@@@@@@@@@@@@@@@@@GGGGGG GGGGGG HHHH HHHAAAAAAAAAAAA BBBBBBBBBBBBBBB III I III IIJJJJJJJJJJJJ KKKKKKKKK KKKK LLLLLLLLLLLLLLLL CC NNNNNNNNNNNNNNNNNNN ", - " EEEEEEEEEEEEEEEFFFFFFFFFFFF F @@@@@@@@@@@@@@@@@GGGGGG GGGGGG HHHH HHHH AA AAA BBBBBBBBBBBBBBB III I III IIJJJJJJJJJJJJ KKKKKKKK KK LLLLLLLLLLLLLLLL C CC NNN NNNNNNN NNNN ", - " F FF GGGGGG GGGGGG HHHHHHHHHH IIIIIIIIIIIIIIII KKKKKKKKKK C CC NN NN NN NN ", - " FFFFFFFFFFFFF GGGGGG GGGGGG HHHHHHHH IIIIIIIIIIIIII KKKKKKK CCCC NNNN NNNN ", - " OOOOO OOOOOOOOOOOO PPP QQQQQQ QQQ RRRRRRRRRRRRRRRRRR SS TTT TTT UUUUUUU VVVVV WWW XXXX YYYYYYYYYYYY CCZZZ [[[[[[ ", - " OOOOO OOOOOOOOOOOO PPPPPPPPP QQQQQQQQ QQQ RRRRRRRRRRRRRRRRR]]] SSS TTTT TTTTT UUUUUUUU VVVVVV VV WWWWWWWWW XXXXXXXX YYYYYYYYYYYYYY ^ ZZZZZZ [[[[[[[ ", - " OOOOO OOOOOOOOOOOO PPPPPPPPPPPQQQQQQQQQQ QQQ ]]]] SSSS TT TTTT T UUUUUUUUUUUUUUUUV VVV WWWWWWWWWWW XXXXXXXXXXX YYYYYYYYYYYYYYYY ^^^ ZZZZZZ [[ [[ [ ", - " OOOOO OOOOOOOOOOOPPPP PPPQQQ QQQQQQ QQQ ]]]]]] SSSSSSSS TTTTTTTTTT UUUUUUUUUUUUUUUUV VVVV WWWWWWWWWWWWW XXXXX XXXXXX YYYYYYYYYYYYYYYY ^^^^^ ZZZZZZ [[ [ ", - " PPP P PPQQQ QQQQQQQ QQQ RR RRRRRRRRRRR]]]]]]]] SSS SSSSSS TTTTTTTT UUUUUUUUUUUUUUUUV VVVVVVVVVVV WW W W WWW XXXXXX XXXXXX YYYYYYYYYYYYYYYY ^^^^^^^ ZZZZZZ [[[[[ [[ [[[[[ ", - " OOOOO OOOOOOOOOOOPPP PPP PQQQQQQQQQQQQQ QQQ RRR RRRRRRRRRRR]]]]]]]]]] SS SS S TTTTTT TTTTTTUUUUUUUUUUUUUUUUV VVVVVVVVVVVV WWWW WWW XXXXXX XXXXXXXYYYYYYYYYYYYYYYY ^^^^^^^^^ ZZZZ [[[[[[[[[[[[[[ ", - " OOOOO OOOOOOOOOOOPPP PPPPP PQQQQQQQQQQQQQ QQRRRR ]]]]]]]]]]]] SS SS TTTTTT TTTTTTUUUUUUUUUUUUUUUUV VVVVVVVVVVVV WWW WWW XXXXXX XXXXXXXYYYYYYYYYYYYYYYY ^^^^^^^^^^^ ZZ [ [[[[[[ [[ ", - " OOOOO OOOOOOOOOOOPP PPPPPPP PQQQQQQQQQQQQQQ QRRRR RRRRRRRRRRR]]]]]]]]]]]]] SSSSSS SSSSSTTTTTT TTTTTTUUUUUUUUUUUUUUUUV VVVVVVVVVVVV WWW WWWXXXX X XX XXXYYYYYYYYYYYYYYYY ZZZZZZZZZZZZZ [ [[ ", - " OOOOO OOOOOOOOOOOPP PPP PPQQQQQQQQQQQQQQ QRRR RRRRRRRRRRR]]]]]]]]]]]]]]]SSSSSS SSSSSTTTTTT TTTTTTUUUUUUUUUUUUUUUUV VVVVVVVVVVV WWW WWWXXX X XXXYYYYYYYYYYYYYYYY ZZZZZZZZZZZZZZ [ [[ [ [[ [ [[ ", - " PPP PPP PP QQQQQQQQQQQQQ QQRR RRRRRRRRRRR]]]]]]]]]]]]] SSSS SSSSS TTTTT TTTTT UUUUUUUUUUUUUUUUV VVVVVVVVV WWW WWW XXX XXXXYYYYYYYYYYYYYYYY Z ZZ Z [ [[ [ [[ [ [[ ", - " OOOOO OOOOOOOOOOOPPP PPP PPP QQQQQQQQQQQQ QQ ]]]]]]]]]]]] SS SS TTTTT TTTTT UUUUUUUUUUUUUUUUV VVV WWWW WWWW XXXX XXXXXYYYYYYYYYYYYYYYY Z ZZ Z [ [[ ", - " OOOOO OOOOOOOOOOOPPPP PPP PPP QQQQQQQQQQ QRRRRRRRRRRRRRRRRR]]]]]]]]]] SS SSS SS TTTTT TTTTT UUUUUUUUUUUUUUUUVV VV W WWW WWWWWW XXXXX XXXXX YYYYYYYYYYYYYYYY ZZZZZ ZZZZZZ ZZZZZ[ [[ [ [[ [ [[ ", - " OOOOO OOOOOOOOOOOOPPPP PPP QQQQQQQQ QQRRRRRRRRRRRRRRRRR]]]]]]]] SSSSSSSS TTTTTTTTTTTTT UUUUUUUUUUUUUUUUVVVVVV V WW WW WWWWW XXXXX XXXXXX YYYYYYYYYYYYYYYY ZZZZZ ZZZZZZ ZZZZZ[ [[ ", - " OOOOO OOOOOOOOOOOO PPPPPPPPPPP QQQQQQ QQ RRRRRRRRRRRRRRRRR]]]]]] SSSSS TTTTTTTTTTTT UUUUUUUUUUUUUUU WW WWWW XXXXXXXXXXXX YYYYYYYYYYYYYYYY ZZZZZ ZZZZZZ ZZZZZ[ [[ [ [[ ", - " PPPPPPPPP QQQQ QQ ]]]] SSS WWW WWW XXXXXXXXX YYYYYYYYYYYYYYY ZZZZZ ZZZZZZ ZZZZZ[ [[ [[[[ [ [[ ", - " _____ ____ _____ PPPPP QQ Q ``` `````````````]]] SSS W aaaa XXXXXX YYYYYYYYYYYYY ZZZZZ ZZZZZ ZZZZZ[ [[[[ [[ ", - " _____ ______ _____ bbbbbb ccccccc ``` `````````````` d d eeeeee ffffff ggggg ggggg aaaaa hhhhhh iiiiiiiiiiii jjjjjjjjjjj [kkkk[[[[kkk[[ ", - " _____ ______ _____ bbbbbbbbb ccccccccc ``` `````````````` dd dd eeeeeeeeee ffffffffff llll ggggggg ggggggg aaaaaa hhhhhhhhhh ii iiii iiii jjjjjjjjjjj mmmmm [[[[[[[[[[[[[[ ", - " _____ ______ _____ bbbbb bbbbb ccc ccccc ddd ddd eeeee eeeee ffffffffffff llllllllllllgg gggg gg aaaa hhhhhhhhhhhh ii iiii ii ii jjjjjjjjj mmmmm [[[[[[[[[[[[[[ ", - " bbbb bbb ccc cccccc ``` `````````````` dddd dddd eeeee eeeeee fffff fffff llllllllllllgg gg gg aaa hhhhh hhhhhh ii iiii ii ii jjjjjjj mmmm k kk k kk k kk ", - " ____ ____ ____bbbb bbb bbbcccccccccccc ``` `````````````` ddddd dddddeeeeeeeeeeeeee fffff ffffff llllllllllllgl g aaa hhhhh hhhhh ii iiii ii ii jjjjj mmmm k kk ", - " _____ ______ ____bbb bbb bbbccccccccccccc ``` `````````````` dddddd ddddddeeeee eeeeeeefffffff ffffff llllllllllllgg gg aaaaaaaaa hhhh hhhhhii iiiiiiii ii jjj mmmm mmmm k kk k kk k kk ", - " _____ ______ ____bb bbb bb ccccccccccccc ddddddd ddddddeeeeee eeeeeeefffffff ffffff lllllllllllgg gg aaaaaaaaa hhh hhhhii iiiiiii ii mmmmmmmm k kk k kk k kk ", - " _____ ______ ____bb bbb bb cccccccccccccc``` `````````````dddddddddddddddeeeeeee eeeeeeefffffff fffffff llllllllllllgg gg aaaaaaaaa hhh h h hhhii ii mmmmmmmm k kk ", - " ____ ____ ____bb bbbbbbb bb ccccccccccccc``` `````````````dddddddddddddddeeeeeee eeeeeeefffffff fffffff llllllllllllggg ggg aaaaaaaaa hhhh hh hh hhhii ii mmmmmmm k kk k kk k kk ", - " bbb bbbbb bb cccccccccccc``` ``````````````ddddddd ddddddeeeeeee eeeeeeefffffffffffffff llll ggg ggg aaa hhhhhh hhhhhhhii iiiiiiiiii ii mm mmm k kk ", - " _____ ______ ____bbb bbb bbb ccccccccccc dddddd ddddddeeeeee eeeeeeefffffff ffffff ll ggg ggg aaa hhhhhh hhhhhhhii i i ii mm k kk k kk k kk ", - " _____ ______ _____bbb b bbbb ccccccccc ``` `````````````` ddddd dddddeeeee eeee ffffff ffffff llllllllllll ggg ggg aaa hhhhhh hhhhhh ii i i ii mmm k kk k kk k kk ", - " _____ ______ _____bbbb bbbb ccccccc ``` `````````````` dddd dddd eeee eee ffffff fffff ll ll ggg ggg aaa hhhhh hhhhhh ii i i ii mmm k kk ", - " _____ ____ _____ bbbbbbbbbbb ccccc ``` `````````````` ddd ddd eeeeeeeeeee fffffffffff lll lll gggggg aaa hhhhhhhhhhh ii i i ii mm k kk k kk ", - " bbbbbbbb ccc dd dd eeeeeeee ffffffff ll ll gggg aaa hhhhhhhh iiiiiiiiiiiiiiii mm k kkkk kk ", - " nnnnnnn nnnnnnn bbbo ppp ppp p ppp qqqqqqqqqqqqqqqqqq d d eee fff r aaa hhh iiiiiiiiiiiiii mm k kkkk kk ", - " nnnnnnn nnnnnnn oooo ppp ppp p ppp qqqqqqqqqqqqqqqsss s ss tttttttt uuuu v vvvvvvvvvvv r wwwwwww xxxxxxxx yyyyyy zzzzzzzzzzzzzzzzzzz mm {k{{{{kkkk{{ kk ", - " nnnnnnn nnnnnnn oooo ppp ppp p ppp qqqqqqqqqqqqqqqsss ss sss tttttttttt uuuu vvv vvvvvvvvvv rr ww wwwwwwww xxxxxxxxxx yy yyy zzzz zzzz||||m||| {kkkkkkkkkkkkkk ", - " nnnnnnn nnnnnnn oooo ppp ppp p ppp pp sss sss ssssttttt ttttt u uuuu uu vvvvv vvvvvvvvvv rr wwww wwwwwwww xxxxxx xxxxx y yyy zzz zzz zz||| ||| { { {{ ", - " nnnnnnn nnnnnnn ooooooooo ppp ppp p ppp qqqqqqqqqqqqqqqsss ssss ssssttttt tttt uuuu uuuuuuuuvvvvvvv vvv rrr wwwwwwwwwwwww xxxxxx xxxxx y yyyyyy zz zz zz || ||| { { {{ ", - " nnnnnnn nnnnnnn ooooooooooo ppp ppp p ppp qqqqqqqqqqqqqqqsss sssss ssssstttt ttt uuuuuuuuuuuuuuvvvvvvvv vvv rrrrrrr wwwwwwwwwwwwww xxxxxx xxxxx yy yyyyyyy z zz zzz ||z || | { { {{ ", - " nnnnnnn nnnnnnn ooooooooo ppp ppp p ppp qqqqqqqqqqqqqqqsss ssssss ssssssttttttttt tttt uuuuuuuuuuuuuvvvvvvv vvv rrrrrrrrr wwwwwwwwwwwwww xxxxxxx xxxx yyy y yyyyy z zzz zzz ||z | ||{ {{{{{{{ ", - " ooooooo ppp ppp p ppp pp sss sssssssssssssttttttttt tttt uuuuuuuuuuuu vvv vvv rrrrrrrr wwwwwwwwwwwww xxx xxx yyyyy yyyyyz zzz zzz ||z | ||{ {{ ", - " nnnnnnn nnnnnnn ooooo ppp ppp p ppp qqqqqqqqqqqqqqqssssssssssssssssstttttttt ttttt uuuuuuuuu vvv vvvvvvvv rrrrrrr wwwwwwwwwwww xxx xxx yyyyy yyy z zzz zzz ||z || ||{ {{{{{{{{ {{ ", - " nnnnnnn nnnnnnn ooo ppp ppp p ppp qqqqqqqqqqqqqqqsssssssssssssssssttttttt ttttttt uuuuuuuuuuuu vvv vvvvvvv rrrrrr wwwwwwwwwww xxxx xxxx yyyyy yy z z z || || ||{ {{{{{{{{ {{ ", - " nnnnnnn nnnnnnooooooo oooooppp ppp p ppp pp sss sssssss ssssssttttttttttttttt uuuuuuuuuuuuuu vvvvvvvvv vvvvv rrrrr wwwwwwwww xxxxxxx xxxxx yyyyy yyzzz zzzzz zz|| || |||| |||{ {{ ", - " nnnnnnn nnnnnnoooooooooooooooppp ppp p ppp pp sss ssssss ssssstttttt tttttt uuuuuuuuuuuuuu vvvvvvvvvv vvvv rrrrr wwwwwwww xxxxxx xxxxx yyyy yzzzz zzz|||||||| ||||{ {{{{{{{{ {{ ", - " nnnnnnn nnnnnnoooooooooooo ooppp ppp p ppp qqqqqqqqqqqqqqqsss sssss sssstttttt tttttt uuuu uuuu uuu vvvvvvvvvvv vv rrrrr wwwwwwwww xxxxx xxxxxx yyy yzzzzzzzzzzzzzzzzz|||| ||||||{ {{ ", - " nnnnnnn nnnnnnoooooooooooooooppp ppp p ppp qqqqqqqqqqqqqqqsss ssss sssstttttttttttt u uuuu uu rrrrr wwww xxxxxxxxxxxx yyy yzzzzzzzzzzzzzzzzzzz ||||||||| { {{{{{{{{ {{ ", - " ooooooooooooooooo sss sss sss tttttttttt uuuu rrr xxxxxxxxxx yyyyyy ||||||| { {{{{{{{{ {{ ", - " sss ss ss ttttttt uuuu rr xxxxxxx yyy ||{ {{ ", - " }}}} }}}} ~~~~~~~ ~~~~~~ \u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007fss s s \u0080\u0080\u0080\u0080 \u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081 \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083\u0083\u0083 \u0084\u0084\u0084\u0084\u0084\u0084 \u0085\u0085\u0085\u0085\u0085\u0085\u0085 {\u0086 \u0086\u0086 \u0086 \u0086\u0086\u0086\u0086{{ ", - " \u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087 }}}}} }}}} ~~ ~~ ~ ~ \u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f \u0088\u0088\u0088 \u0088\u0088 \u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080 \u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081 \u0089\u0089\u0089\u0089\u0089\u0089\u0089 \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083 \u0084\u0084\u0084\u0084\u0084\u0084\u0084\u0084 \u0085\u0085 \u0085\u0085 \u008a\u008a {{{{{{{{{{{{{{{{ ", - " \u0087\u0087 \u0087\u0087 \u0087\u0087 \u0087\u0087}}}}} }}}} ~~ ~ ~~ ~ ~~ ~ \u0088\u0088\u0088 \u0088\u0088\u0088 \u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080 \u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081 \u008b\u008b\u008b \u008b\u008b \u0089\u0089\u0089\u0089\u0089\u0089\u0089\u0089 \u0089\u0089 \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083 \u0084\u0084\u0084 \u0084\u0084 \u0085\u0085 \u0085\u0085\u0085 \u008a\u008a\u008a\u008a\u008a\u008a\u008a\u008a\u008a\u008a {{{{{{{{{{{{{{{ ", - " \u0087\u0087 \u0087\u0087 \u0087\u0087 \u0087\u0087}}}}}}}}}}}} ~~ ~ ~~ ~ ~~ ~ \u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f \u0088\u0088\u0088 \u0088\u0088\u0088\u0088 \u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080 \u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081 \u008b\u008b\u008b\u008b\u008b \u008b\u008b\u008b\u008b\u0089\u0089\u0089\u0089\u0089 \u0089 \u0082\u0082\u0082 \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083\u0083\u0083\u0083 \u0083\u0083\u0083\u0083\u0083\u0083 \u0084\u0084 \u0084 \u0084\u0084 \u0085\u0085\u0085 \u0085\u0085 \u008a\u008a\u008a\u008a \u008a\u008a\u008a\u008a \u0086 \u0086\u0086 \u0086 \u0086\u0086\u0086\u0086\u0086\u0086\u0086 ", - " \u0087\u0087 \u0087\u0087 \u0087\u0087 \u0087}}}}}} }}}}} ~~ ~~ ~ ~ \u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f \u0088\u0088\u0088 \u0088\u0088\u0088\u0088\u0088 \u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080 \u008b\u008b\u008b\u008b\u008b\u008b \u008b\u008b\u008b\u008b\u008b\u0089\u0089 \u0089 \u0089\u0089 \u0082\u0082\u0082 \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083\u0083\u0083\u0083 \u0083\u0083\u0083\u0083\u0083 \u0084\u0084 \u0084 \u0084\u0084\u0084\u0084\u0084\u0084\u0084\u0085\u0085\u0085 \u0085\u0085 \u0085 \u008a\u008a\u008a \u008a\u008a\u008a \u0086 \u0086\u0086 \u0086 \u0086\u0086\u0086\u0086\u0086\u0086\u0086 ", - " \u0087\u0087\u0087\u0087\u0087\u0087 \u0087\u0087\u0087\u0087\u0087}}}}} }}}}} ~~~~~~~ ~~~~~~ \u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f \u0088\u0088\u0088 \u0088\u0088\u0088\u0088\u0088\u0088 \u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080 \u0080\u0080\u0080\u0080 \u008b\u008b\u008b\u008b\u008b\u008b \u008b\u008b\u008b\u008b\u008b\u008b\u0089\u0089\u0089\u0089 \u0089 \u0082\u0082\u0082 \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083\u0083\u0083 \u0083\u0083\u0083\u0083\u0083\u0083\u0084\u0084\u0084\u0084\u0084\u0084 \u0084\u0084\u0084\u0084\u0084\u0084\u0084\u0084\u0085\u0085 \u0085 \u0085 \u008a\u008a \u008a\u008a\u0086 \u0086\u0086\u0086\u0086 \u0086\u0086\u0086\u0086\u0086\u0086\u0086 ", - " \u0087\u0087 \u0087\u0087 \u0087\u0087 }}}}}} }}}}}} \u0088\u0088\u0088 \u0088\u0088\u0088\u0088\u0088\u0088\u0088 \u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080 \u0080\u0080\u0080 \u008b\u008b\u008b\u008b\u008b\u008b \u008b\u008b\u008b\u008b\u008b\u008b \u0089\u0089\u0089\u0089 \u0089\u0089 \u0082\u0082\u0082 \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083\u0083 \u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0084\u0084\u0084\u0084\u0084\u0084 \u0084\u0084\u0084\u0084 \u0084\u0084\u0085\u0085\u0085\u0085\u0085\u0085\u0085 \u0085 \u008a\u008a \u008a\u008a\u0086\u0086\u0086\u0086\u0086\u0086 \u0086\u0086\u0086\u0086\u0086\u0086\u0086 ", - " \u0087\u0087 \u0087\u0087 \u0087\u0087 }}}}}} }}}}}} ~~~~~~~ ~~~~ ~ \u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f \u0088\u0088\u0088\u0088\u0088\u0088\u0088\u0088\u0088\u0088\u0088 \u0080\u0080\u0080\u0080 \u0080\u0080\u0080\u0080 \u0080\u0080\u0080\u0080 \u008b\u008b\u008b\u008b\u008b\u008b\u008b\u008b\u008b\u008b\u008b \u0089\u0089\u0089\u0089 \u0089 \u0082\u0082\u0082 \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0083\u0083\u0083\u0083 \u0083\u0083\u0084 \u0084\u0084\u0084\u0084\u0084 \u0084\u0084 \u0085\u0085\u0085 \u0085\u0085\u0085\u0085\u008a\u008a \u008a\u0086\u0086\u0086\u0086\u0086\u0086 \u0086\u0086\u0086\u0086\u0086\u0086\u0086 ", - " \u0087\u0087 \u0087\u0087 \u0087\u0087 }}}}}}}}}}}}}}}}~~~~~~~ ~~~~ ~ \u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f \u0088\u0088\u0088\u0088\u0088\u0088\u0088\u0088\u0088\u0088\u0088 \u0080\u0080\u0080 \u0080\u0080 \u0080\u0080\u0080\u0080\u0080 \u008b\u008b\u008b\u008b\u008b\u008b\u008b\u008b\u008b \u0089\u0089\u0089\u0089 \u0089 \u0082\u0082\u0082\u0082 \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0083\u0083\u0083\u0083 \u0083\u0083\u0084 \u0084\u0084\u0084 \u0084\u0084 \u0084\u0084 \u0085\u0085\u0085 \u0085 \u008a\u008a \u008a\u0086\u0086\u0086\u0086\u0086\u0086 \u0086\u0086\u0086\u0086\u0086\u0086\u0086 ", - " \u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087}}}}}}}}}}}}}}}}}~~ ~~ ~~~~~~ \u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f \u0088\u0088\u0088 \u0088\u0088\u0088\u0088\u0088\u0088\u0088 \u0080\u0080\u0080\u0080 \u0080\u0080\u0080\u0080\u0080\u0080 \u008b\u008b\u008b\u008b\u008b\u008b\u008b \u0089\u0089\u0089\u0089 \u0089\u0089\u0082\u0082\u0082\u0082\u0082 \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083\u0083 \u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0084 \u0084\u0084\u0084\u0084\u0084\u0084\u0084 \u0084\u0084 \u0085\u0085\u0085 \u0085 \u008a\u008a \u008a\u008a \u0086\u0086\u0086\u0086 \u0086\u0086\u0086\u0086\u0086\u0086\u0086 ", - " \u0087\u0087 \u0087\u0087 \u0087\u0087 }}}}}}} }}}}}}}~~ ~ ~~ ~ ~~~~ \u0088\u0088\u0088 \u0088\u0088\u0088\u0088\u0088\u0088 \u0080\u0080\u0080\u0080 \u0080\u0080\u0080\u0080\u0080\u0080\u0080 \u008b\u008b\u008b\u008b\u008b \u0089\u0089\u0089\u0089\u0089\u0089 \u0089\u0089\u0082\u0082\u0082\u0082\u0082 \u0082 \u0082\u0082\u0082 \u0083\u0083\u0083\u0083\u0083 \u0083\u0083\u0083\u0083\u0083\u0083\u0084 \u0084\u0084\u0084\u0084\u0084\u0084 \u0084\u0084\u0085\u0085\u0085 \u0085\u0085\u0085 \u008a\u008a \u008a\u008a \u0086\u0086\u0086\u0086 \u0086\u0086\u0086\u0086\u0086\u0086\u0086 ", - " \u0087\u0087 \u0087\u0087 \u0087\u0087 }}}}}}} }}}}}}}~~ ~~ ~ \u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f \u0088\u0088\u0088 \u0088\u0088\u0088\u0088\u0088 \u0080\u0080\u0080\u0080\u0080 \u0080\u0080\u0080\u0080\u0080\u0080\u0080 \u008b\u008b\u008b \u0089\u0089\u0089 \u0089\u0089\u0089\u0089\u0089\u0089 \u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0082\u0082 \u0083\u0083\u0083\u0083\u0083\u0083 \u0083\u0083\u0083\u0083\u0083\u0084 \u0084\u0084 \u0084\u0085\u0085 \u0085\u0085\u0085 \u008a\u008a\u008a \u008a\u008a\u008a \u0086\u0086\u0086\u0086 \u0086\u0086\u0086\u0086\u0086\u0086\u0086 ", - " \u0087\u0087\u0087\u0087\u0087\u0087 \u0087\u0087}}}}}}}} }}}}}}}~~~~~~~ ~ ~~ ~\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f \u0088\u0088\u0088 \u0088\u0088\u0088\u0088 \u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080 \u0089\u0089 \u0089\u0089\u0089\u0089 \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0082\u0082\u0082 \u0083\u0083\u0083\u0083\u0083\u0083 \u0083\u0083\u0083\u0083\u0083\u0083\u0084 \u0084\u0084 \u0085\u0085\u0085 \u0085\u0085 \u008a\u008a\u008a \u008a\u008a\u008a\u008a \u0086\u0086\u0086\u0086 \u0086\u0086\u0086\u0086 ", - " \u0087\u0087\u0087\u0087\u0087\u0087 \u0087\u0087\u0087\u0087\u0087\u0087 ~~~~~~~ ~ ~~ ~\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f\u007f \u0088\u0088\u0088 \u0088\u0088\u0088 \u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080 \u0089\u0089 \u0089\u0089 \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083 \u0084\u0084\u0084\u0084\u0084\u0084\u0084\u0084 \u0085\u0085\u0085 \u0085\u0085 \u008a\u008a \u008a\u008a\u008a\u008a\u008a\u008a\u008a\u008a \u0086\u0086\u0086\u0086 \u0086\u0086\u0086\u0086 ", - " \u0087\u0087 \u0087\u0087 \u0087\u0087 \u0087\u0087 \u0088\u0088\u0088 \u0088\u0088 \u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080\u0080 \u0089 \u0089\u0089 \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083\u0083 \u0084\u0084\u0084\u0084\u0084\u0084\u0084\u0084 \u0084\u0085\u0085 \u0085\u0085 \u008a\u008a\u008a\u008a\u008a\u008a\u008a\u008a \u0086\u0086\u0086\u0086 \u0086\u0086\u0086\u0086 ", - " \u0087\u0087 \u0087\u0087 \u0087\u0087 \u0087\u0087 \u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c \u0088\u0088\u0088 \u0088 \u0080\u0080\u0080\u0080\u0080 \u008d\u008d\u008d\u008d \u0089\u0089\u008e\u0089\u0089 \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082 \u0083\u0083\u0083\u0083\u0083 \u0084\u0084 \u0084\u0085\u0085\u0085\u0085\u0085\u0085\u0085\u0085 \u008a\u008a\u008a\u008a \u0086\u0086\u0086\u0086 \u0086\u0086\u0086\u0086 ", - " \u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087 \u008f\u008f\u008f\u008f\u008f\u008f\u008f \u0090\u0090 \u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c \u0091\u0091\u0091 \u0092\u0092\u0092\u0092\u0092\u0092 \u008d\u008d\u008d\u008d \u0089\u0089\u0089\u0089\u0089 \u0093\u0093\u0093\u0093\u0093\u0093\u0093\u0093\u0093\u0093\u0093\u0093\u0093 \u0094\u0094\u0094\u0094\u0094\u0094\u0094\u0094\u0094 \u0095 \u0084\u0084 \u0084\u0084\u0096\u0096\u0096\u0085\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096 \u008a\u008a\u008a\u008a \u0097\u0097 \u0098\u0086\u0086\u0086\u0086\u0098\u0098\u0098\u0098\u0098\u0086\u0086\u0086\u0086 ", - " \u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087\u0087 \u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f \u0090\u0090 \u0090\u0090\u0090 \u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c \u0091\u0091\u0091\u0091\u0091 \u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092 \u008d\u008d\u008d\u008d \u0099\u0099 \u008e\u0089\u0089\u0089\u008e \u0093\u0093 \u0093 \u0094\u0094\u0094\u0094\u0094\u0094 \u0094\u0094\u0095\u0095\u0095\u0095\u0095\u0095\u0084\u0084\u0084\u0084\u0084\u0084\u0084\u0084\u0084\u0084\u0084\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096 \u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u0098\u0086\u0086\u0086\u0086\u0098\u0098\u0098\u0098\u0098\u0086\u0086\u0086\u0086\u0098 ", - " \u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a \u008f\u008f\u008f\u008f \u008f\u008f\u008f\u008f\u008f \u0090\u0090\u0090 \u0090 \u0090\u0090 \u0091\u0091\u0091\u0091\u0091\u0091\u0091 \u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092 \u008d\u008d\u008d\u008d \u0099\u0099\u0099\u0099 \u008e \u008e\u008e \u0093\u0093 \u0093 \u0094\u0094\u0094\u0094\u0094\u0094\u0094\u0094\u0094\u0095\u0095 \u0095\u0095\u0095 \u0095\u0095\u0095\u0096\u0096\u0096\u0096\u0096\u0096 \u0096\u0096\u0096\u0096\u0096\u0096 \u0097\u0097\u0097\u0097\u0097 \u0097\u0097\u0097\u0097\u0097 \u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098 ", - " \u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a \u008f\u008f\u008f \u008f\u008f\u008f \u0090\u0090\u0090\u0090 \u0090\u0090\u0090 \u0090\u0090\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c \u0091\u0091\u0091\u0091\u0091\u0091\u0091 \u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092 \u008d\u008d\u008d\u008d \u0099\u0099\u0099\u0099\u0099\u0099 \u008e\u008e \u008e\u008e \u0093\u0093 \u0093 \u0094\u0094\u0094\u0094\u0094\u0094\u0094\u0094\u0094\u0095\u0095 \u0095\u0095\u0095 \u0095\u0095 \u0096\u0096\u0096\u0096\u0096\u0096\u0096 \u0096\u0096\u0096\u0096\u0096\u0096\u0096 \u0097\u0097\u0097\u0097\u0097\u0097 \u0097\u0097\u0097\u0097\u0097\u0097 \u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098 \u0098\u0098\u0098 ", - " \u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a \u008f\u008f\u008f \u008f \u008f\u008f\u008f \u0090\u0090\u0090\u0090\u0090 \u0090\u0090 \u0090\u0090\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c \u0091\u0091\u0091 \u0092\u0092\u0092\u0092 \u0092\u0092\u0092 \u0092\u0092\u0092\u0092 \u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d \u0099\u0099\u0099\u0099\u0099\u0099\u0099\u0099 \u008e\u008e \u008e\u008e\u008e\u008e \u0093\u0093 \u0093 \u0094\u0094 \u0094\u0094\u0095\u0095 \u0095\u0095 \u0095\u0095 \u0095\u0095\u0096\u0096\u0096 \u0096\u0096\u0096 \u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0097\u0097\u0097 \u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u0097\u0097 \u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098 \u0098\u0098 ", - " \u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a \u008f\u008f\u008f \u008f \u008f\u008f\u008f\u0090\u0090\u0090\u0090\u0090\u0090\u0090\u0090 \u0090\u0090 \u0090\u0090 \u0090\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c \u0091\u0091\u0091 \u0092\u0092\u0092 \u0092 \u0092\u0092\u0092\u0092 \u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d \u0099\u0099\u0099\u0099\u0099\u0099\u0099\u0099\u0099\u0099 \u008e\u008e\u008e \u008e\u008e\u008e\u008e\u008e\u008e \u0093\u0093 \u0093 \u0094\u0094\u0094 \u0094\u0094 \u0095\u0095\u0095\u0095\u0095\u0095\u0095 \u0095\u0095 \u0095\u0095 \u0096\u0096\u0096 \u0096\u0096\u0096 \u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0097\u0097\u0097 \u0097\u0097\u0097\u0097 \u0097\u0097 \u0097\u0097 \u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098 \u0098\u0098\u0098 ", - " \u009a\u009a\u009a\u009a\u009a\u009a \u008f\u008f \u008f \u008f\u008f\u0090\u0090\u0090\u0090\u0090\u0090\u0090\u0090 \u0090 \u0090\u0090 \u0090\u0090 \u0091\u0091 \u0091\u0091\u0091 \u0091\u0091\u0092\u0092\u0092\u0092\u0092 \u0092\u0092\u0092\u0092\u0092 \u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d \u0099\u0099\u0099\u0099\u0099\u0099 \u0099\u0099\u0099\u0099\u0099 \u008e\u008e\u008e\u008e\u008e\u008e \u008e\u008e \u0093\u0093 \u0093 \u0094\u0094\u0094 \u0094 \u0095\u0095\u0095\u0095\u0095 \u0095 \u0095 \u0096\u0096\u0096\u0096 \u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098 ", - " \u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a \u008f\u008f \u008f \u008f\u008f\u0090\u0090\u0090\u0090\u0090\u0090\u0090\u0090 \u0090\u0090 \u0090 \u0090\u0090 \u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c \u0091\u0091\u0091 \u0091\u0091\u0091 \u0091\u0091\u0092\u0092\u0092\u0092\u0092\u0092 \u0092\u0092\u0092\u0092\u0092\u0092 \u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d \u0099\u0099\u0099\u0099\u0099\u0099 \u0099\u0099\u0099\u0099\u0099 \u008e\u008e\u008e\u008e \u008e\u008e \u0093\u0093 \u0093 \u0094\u0094\u0094 \u0094\u0094 \u0095 \u0095 \u0095\u0095 \u0096\u0096\u0096\u0096\u0096\u0096 \u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098 ", - " \u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a \u008f\u008f \u008f\u008f\u008f\u008f \u008f\u008f\u0090\u0090\u0090\u0090\u0090\u0090\u0090\u0090 \u0090\u0090 \u0090\u0090 \u0090\u0090 \u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c \u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0092\u0092\u0092\u0092\u0092\u0092 \u0092\u0092\u0092\u0092\u0092 \u008d\u008d\u008d\u008d \u0099\u0099\u0099\u0099\u0099\u0099 \u0099\u0099\u0099\u0099\u0099\u008e\u008e\u008e\u008e \u008e \u0093\u0093 \u0093 \u0094\u0094\u0094 \u0094\u0094 \u0095\u0095\u0095\u0095\u0095 \u0095\u0095\u0095\u0095 \u0096\u0096\u0096\u0096\u0096\u0096 \u0096\u0096\u0096\u0096\u0096\u0096\u0097\u0097 \u0097\u0097\u0097\u0097\u0097\u0097 \u0097\u0097\u0097\u0097\u0097 \u0097\u0097\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098 ", - " \u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a \u008f\u008f\u008f \u008f\u008f\u0090\u0090\u0090\u0090\u0090\u0090\u0090\u0090 \u0090\u0090 \u0090\u0090 \u0090 \u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c \u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0091\u0092\u0092\u0092\u0092\u0092 \u0092\u0092\u0092\u0092 \u008d\u008d\u008d\u008d \u0099\u0099\u0099\u0099\u0099 \u0099\u0099\u0099\u0099\u008e\u008e\u008e\u008e \u008e \u0093\u0093 \u0093\u0093 \u0093 \u0094\u0094 \u0094 \u0094\u0095\u0095\u0095\u0095\u0095\u0095\u0095\u0095\u0095 \u0095 \u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096 \u0096\u0096\u0096\u0096\u0096\u0097\u0097 \u0097\u0097\u0097\u0097\u0097 \u0097\u0097\u0097\u0097 \u0097\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098 ", - " \u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a \u008f\u008f\u008f \u008f\u008f\u008f \u0090\u0090\u0090\u0090 \u0090\u0090 \u0090\u0090 \u0091\u0091 \u0091\u0091\u0091 \u0091\u0091 \u0092\u0092\u0092\u0092 \u0092\u0092 \u0092\u0092\u0092\u0092 \u008d\u008d\u008d\u008d \u0099\u0099\u0099 \u0099\u0099 \u008e\u008e\u008e\u008e \u008e\u008e \u0093\u0093 \u0093\u0093\u0093\u0093 \u0093 \u0094\u0094\u0094\u0094\u0094 \u0094\u0095\u0095\u0095 \u0095\u0095 \u0095\u0095 \u0095 \u0096\u0096\u0096 \u0096\u0096\u0096\u0096 \u0096\u0096\u0096\u0096\u0096\u0097\u0097 \u0097\u0097\u0097\u0097\u0097 \u0097\u0097\u0097\u0097 \u0097\u0097\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098 ", - " \u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a \u008f\u008f\u008f \u008f\u008f\u008f\u008f \u0090\u0090\u0090 \u0090\u0090 \u0090\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u0091 \u0091\u0091\u0091 \u0091 \u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092 \u008d\u008d\u008d\u008d \u008e\u008e\u008e\u008e \u008e\u008e \u0093\u0093 \u0093\u0093 \u0093\u0093\u0093 \u0093 \u0094\u0094\u0094\u0094\u0094 \u0094\u0094\u0094\u0095\u0095 \u0095\u0095 \u0095\u0095 \u0095\u0096\u0096\u0096 \u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u0097\u0097\u0097\u0097\u0097\u0097\u0097 ", - " \u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a \u008f\u008f\u008f\u008f\u008f \u008f\u008f\u008f\u008f \u0090\u0090 \u0090\u0090\u0090\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c \u0091\u0091\u0091 \u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092 \u008d\u008d\u008d\u008d \u008e\u008e \u008e \u008e\u008e \u0093\u0093\u0093\u0093\u0093 \u0093\u0093\u0093 \u0093 \u0094\u0094 \u0094\u0094\u0094\u0094\u0094\u0094\u0094\u0095\u0095 \u0095\u0095 \u0095\u0095\u0095\u0096\u0096\u0096\u0096 \u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097 \u0097\u0097\u0097\u0097\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098 ", - " \u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a \u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f \u0090\u0090\u0090 \u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c\u008c \u0091\u0091\u0091 \u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092 \u008d\u008d\u008d \u008e\u008e\u008e\u008e\u008e\u008e \u008e \u0093\u0093\u0093\u0093 \u0093\u0093\u0093\u0093 \u0094\u0094 \u0094\u0094\u0094 \u0095\u0095\u0095\u0095\u0095\u0095 \u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098 ", - " \u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a\u009a \u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f \u0090 \u0091\u0091\u0091\u0091\u0091\u0091\u0091 \u0092\u0092\u0092\u0092\u0092\u0092\u0092\u0092 \u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e \u008e\u008e \u0093\u0093\u0093 \u0093\u0093\u0093 \u0094\u0094 \u0094\u0094 \u0095\u0095\u0095\u0095 \u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0096\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0097\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098\u0098 ", - " \u009b\u009b \u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c \u009d \u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e \u009f\u009f\u009f\u009f\u009f\u0091\u0091\u0091\u0091\u0091\u009f\u009f \u00a0\u00a0 \u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2 \u00a2\u00a2\u00a2\u00a2\u00a2 \u008e\u008e\u008e\u008e\u008e\u008e \u00a3\u00a3\u00a3\u00a3\u00a3\u00a3\u00a3\u00a3\u00a3\u00a3\u00a3\u00a3\u00a3 \u0094\u0094\u00a4\u00a4\u0094\u0094 \u00a5\u00a5\u00a5\u00a5\u00a5\u00a5 \u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6 \u00a7 ", - " \u009b\u009b \u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c \u009d\u009d \u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e \u009f\u009f \u0091\u0091\u0091 \u009f\u009f\u009f \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a1\u00a1\u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2 \u00a2\u00a2\u00a2\u00a2\u00a2 \u00a8\u00a8 \u00a3\u00a3 \u00a3\u00a3\u00a3 \u0094\u0094\u0094\u0094\u0094 \u00a5\u00a5\u00a5\u00a5\u00a5\u00a5 \u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6 \u00a9\u00a9\u00a9 \u00a7\u00a7 ", - " \u009b\u009b\u009b\u009b \u009c \u009c \u009c\u009c \u009d\u009d\u009d \u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e \u009f\u009f \u0091 \u009f\u009f\u009f\u009f\u009f \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a1 \u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2 \u00a2\u00a2\u00a2\u00a2\u00a2 \u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8 \u00a3\u00a3 \u00a3\u00a3 \u00a4\u0094\u0094\u0094\u0094\u00a4 \u00a5 \u00a5\u00a5 \u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6 \u00a9\u00a9\u00a9\u00a9 \u00a7\u00a7\u00a7\u00a7\u00a7\u00a7 ", - " \u009b\u009b\u009b\u009b \u009c \u009c \u009c\u009c \u009d\u009d\u009d\u009d \u009f\u009f \u009f\u009f\u009f\u009f\u009f \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a1\u00a1\u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2 \u00a2\u00a2\u00a2\u00a2\u00a2\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8 \u00a3\u00a3 \u00a3\u00a3 \u00a4\u00a4 \u00a4\u00a4 \u00a5 \u00a5\u00a5 \u00a6\u00a6\u00a6\u00a6\u00a6\u00a6 \u00a6\u00a6\u00a6\u00a6\u00a6\u00a6 \u00a9\u00a9\u00a9\u00a9\u00a9\u00a9 \u00a7\u00a7 \u00a7\u00a7\u00a7 ", - " \u009b\u009b \u009b\u009b \u009c \u009c \u009c\u009c \u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d \u009d \u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009f\u009f \u009f \u009f\u009f\u009f\u009f\u009f \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a1\u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2 \u00a2\u00a2\u00a2\u00a2\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8 \u00a3\u00a3 \u00a3\u00a3 \u00a4\u00a4 \u00a4\u00a4 \u00a5 \u00a5\u00a5 \u00a6\u00a6\u00a6\u00a6 \u00a6\u00a6\u00a6 \u00a6\u00a6\u00a6\u00a6 \u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9 \u00a7\u00a7 \u00a7\u00a7 ", - " \u009b\u009b\u009b\u009b\u009b\u009b\u009b \u009b\u009b\u009b\u009b\u009b\u009b\u009b\u009c \u009c \u009c \u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d \u009d\u009d \u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009f\u009f \u009f\u009f\u009f \u009f\u009f\u009f\u009f\u009f \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2 \u00a2\u00a2\u00a2\u00a2\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8 \u00a8 \u00a3\u00a3 \u00a3\u00a3 \u00a4\u00a4 \u00a4\u00a4\u00a4\u00a4\u00a4 \u00a5 \u00a5\u00a5 \u00a6\u00a6\u00a6 \u00a6\u00a6\u00a6\u00a6\u00a6 \u00a6\u00a6\u00a6 \u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9 \u00a7 \u00a7\u00a7 ", - " \u009b\u009b\u009b\u009b \u009b\u009b\u009b\u009b\u009c \u009c\u009c\u009c\u009c\u009c\u009c \u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d \u009d \u009f\u009f \u009f\u009f\u009f\u009f \u009f\u009f\u009f\u009f\u009f \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a1\u00a1\u00a1\u00a1\u00a1 \u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8 \u00a8\u00a8\u00a3\u00a3 \u00a3\u00a3 \u00a4\u00a4 \u00a4 \u00a4\u00a4\u00a4\u00a4\u00a4 \u00a5\u00a5 \u00a5\u00a5 \u00a6\u00a6\u00a6 \u00a6\u00a6 \u00a6\u00a6\u00a6\u00a6 \u00a6\u00a6\u00a6 \u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9 \u00a7\u00a7 \u00a7\u00a7 ", - " \u009b\u009b \u009b\u009b \u009c \u009c \u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d \u009d\u009d \u009f\u009f \u009f\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u009f \u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 \u00a1\u00a1\u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2 \u00a2\u00a2\u00a2\u00a2\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8 \u00a8\u00a8\u00a3\u00a3 \u00a3\u00a3 \u00a4\u00a4\u00a4\u00a4\u00a4 \u00a4\u00a4 \u00a5\u00a5 \u00a5\u00a5 \u00a6\u00a6\u00a6 \u00a6\u00a6 \u00a6\u00a6\u00a6 \u00a6\u00a6\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9 \u00a7\u00a7 \u00a7 ", - " \u009b\u009b \u009b\u009b \u009c \u009c \u009d\u009d\u009d\u009d\u009d\u009d\u009d\u009d \u009d\u009d \u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e \u009f\u009f \u009f\u009f\u009f\u009f\u009f\u009f\u009f \u009f \u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a1\u00a1\u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2 \u00a2\u00a2\u00a2\u00a2\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8 \u00a8\u00a8\u00a3\u00a3 \u00a3\u00a3 \u00a4 \u00a4\u00a4 \u00a4\u00a4 \u00a5\u00a5 \u00a5\u00a5 \u00a6\u00a6\u00a6 \u00a6\u00a6 \u00a6\u00a6\u00a6\u00a6 \u00a6\u00a6\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9 \u00a7\u00a7 \u00a7 ", - " \u009b\u009b \u009b\u009b \u009c \u009c \u009d\u009d\u009d\u009d \u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e \u009f\u009f \u009f\u009f\u009f\u009f\u009f \u009f \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a1\u00a1\u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2 \u00a2\u00a2\u00a2\u00a2\u00a2\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8 \u00a8\u00a8\u00a8\u00a3\u00a3 \u00a3\u00a3\u00a4\u00a4 \u00a4 \u00a5\u00a5 \u00a5\u00a5 \u00a6\u00a6\u00a6 \u00a6\u00a6 \u00a6\u00a6\u00a6\u00a6 \u00a6\u00a6\u00a6\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a9 \u00a7\u00a7 \u00a7 ", - " \u009b\u009b \u009b\u009b \u009c \u009c \u009d\u009d\u009d \u009f\u009f \u009f\u009f\u009f \u009f \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a1\u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2\u00a2 \u00a2\u00a2\u00a2\u00a2\u00a2\u00a2 \u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8 \u00a8\u00a8\u00a8\u00a3\u00a3 \u00a3\u00a3 \u00a4\u00a4\u00a4 \u00a4\u00a4 \u00a5\u00a5 \u00a5\u00a5 \u00a6\u00a6\u00a6\u00a6\u00a6 \u00a6\u00a6\u00a6 \u00a6\u00a6\u00a6 \u00a9\u00a9\u00a9\u00a9\u00a9\u00a9 \u00a9\u00a9\u00a9 \u00a7\u00a7 \u00a7\u00a7 ", - " \u009b\u009b \u009b\u009b \u009c \u009c \u009d\u009d \u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009f\u009f \u009f \u009f \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a1\u00a1\u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2 \u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8 \u00a8\u00a8\u00a8\u00a8\u00a8\u00a3\u00a3 \u00a3\u00a3 \u00a4\u00a4\u00a4 \u00a4\u00a4 \u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5 \u00a6\u00a6\u00a6\u00a6\u00a6 \u00a6 \u00a6\u00a6\u00a6\u00a6 \u00a9\u00a9\u00a9\u00a9 \u00a9\u00a9\u00a9\u00a9\u00a9 \u00a7 \u00a7\u00a7 ", - " \u009b\u009b \u009b\u009b \u009b\u009b \u009c \u009c \u009d \u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009f\u009f \u009f\u009f \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a1\u00a1\u00a1\u00a1\u00a1\u00a1\u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2 \u00a8\u00a8\u00a8 \u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8 \u00a3\u00a3 \u00a3\u00a3\u00a3 \u00a4\u00a4 \u00a4 \u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5 \u00a6\u00a6\u00a6\u00a6\u00a6 \u00a6\u00a6 \u00a6\u00a6\u00a6\u00a6\u00a6\u00a6 \u00a9\u00a9\u00a9 \u00a9\u00a9\u00a9\u00a9\u00a9 \u00a7\u00a7 \u00a7 ", - " \u009b \u009b\u009b\u009b\u009b\u009b\u009b \u009b \u009c \u009c \u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u009f \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a1\u00a1\u00a1\u00a1 \u00a1\u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2 \u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8\u00a8 \u00a3\u00a3\u00a3\u00a3\u00a3\u00a3\u00a3\u00a3\u00a3\u00a3\u00a3\u00a3\u00a3 \u00a4\u00a4 \u00a4\u00a4 \u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5 \u00a6\u00a6\u00a6\u00a6\u00a6 \u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6 \u00a9\u00a9\u00a9\u00a9\u00a9\u00a9\u00a7\u00a7 \u00a7\u00a7 ", - " \u009b\u009b\u009b \u009b\u009b\u009b \u009c \u009c \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a1\u00a1\u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2 \u00a8\u00a8\u00a8 \u00a4 \u00a4\u00a4 \u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5 \u00a6\u00a6\u00a6\u00a6\u00a6 \u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6 \u00a9\u00a9\u00a9\u00a9\u00a9\u00a7\u00a7\u00a7 \u00a7\u00a7 ", - " \u009b \u009b \u009c \u009c \u00aa \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a1 \u00a2\u00a2\u00a2\u00a2\u00a2\u00a2\u00a2 \u00a8\u00a8 \u00ab \u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4 \u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5\u00a5 \u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6\u00a6 \u00a9\u00a9\u00a9\u00a9\u00a7\u00a7\u00a7\u00a7\u00a7\u00a7\u00a7\u00a7\u00a7\u00a7\u00a7\u00a7\u00a7\u00a7\u00a7\u00a7\u00a7 ", - " \u00ac\u00ac \u009c \u00ad\u00ad \u00ad\u00ad\u00ad\u009c \u00ae \u00aa\u00aa\u00aa\u00aa\u00aa \u00aa\u00aa \u00af\u00af\u00af\u00af\u00af\u00af \u00b0\u00b0\u00b0\u00b0\u00b0\u00b0 \u00b1\u00b1 \u00b1\u00b1 \u00ab\u00ab\u00ab\u00ab \u00a4\u00a4\u00a4\u00a4\u00a4\u00a4 \u00a4\u00a4 \u00b2\u00b2\u00b2\u00b2\u00b2\u00b2 \u00b3\u00b3\u00b3\u00b3\u00b3 \u00b4\u00b4\u00b4\u00b4\u00b4 \u00a9\u00a9\u00a9\u00a9\u00a9 \u00b5\u00a7\u00a7\u00a7\u00a7\u00a7\u00b5\u00b5 ", - " \u00ac\u00ac \u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c \u00ae\u00ae \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00aa\u00aa\u00aa\u00aa\u00aa \u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b0\u00b0\u00b0\u00b0\u00b0\u00b0 \u00b1\u00b1\u00b1\u00b1\u00b1 \u00ab\u00ab\u00ab\u00ab \u00b7\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4 \u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2 \u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3 \u00b4\u00b4 \u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00a9\u00a9\u00a9 \u00b5\u00a7\u00a7\u00a7\u00a7\u00a7\u00b5\u00b5 ", - " \u00ac\u00ac\u00ac\u00ac \u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c\u009c \u00ae\u00ae\u00ae \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00aa\u00aa \u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b0\u00b0\u00b0\u00b0\u00b0 \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8 \u00b1\u00b1\u00b1 \u00b1\u00b1\u00b1\u00b1\u00b1\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab \u00b7\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4\u00a4 \u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2 \u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3 \u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4 \u00b5 \u00a7\u00a7 \u00b5\u00b5 ", - " \u00ac\u00ac\u00ac\u00ac \u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad \u00ae\u00ae\u00ae\u00ae \u00b6\u00b6 \u00b6\u00b6\u00b6 \u00b6\u00aa\u00aa \u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b0\u00b0\u00b0\u00b0\u00b0\u00b0 \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8 \u00b1\u00b1\u00b1 \u00b1 \u00b1\u00b1\u00b1 \u00b1\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab \u00b7\u00b7 \u00b7\u00b7 \u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2 \u00b3\u00b3\u00b3\u00b3 \u00b3\u00b3\u00b3\u00b3 \u00b4\u00b4\u00b4\u00b4\u00b4\u00b4 \u00b4\u00b4\u00b4\u00b4\u00b4\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b5\u00b5 ", - " \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac \u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad \u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae \u00b6 \u00b6\u00b6\u00b6 \u00b6\u00aa\u00aa \u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa \u00af\u00af\u00af\u00af\u00af\u00af \u00af\u00af\u00af\u00af\u00af\u00af \u00b0\u00b0\u00b0\u00b0\u00b0\u00b0\u00b0\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1 \u00b1\u00b1\u00ab\u00ab\u00ab \u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7 \u00b7\u00b7 \u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2 \u00b3\u00b3\u00b3\u00b3 \u00b3\u00b3\u00b3\u00b3\u00b3 \u00b3\u00b3\u00b3\u00b3\u00b4\u00b4\u00b4\u00b4\u00b4 \u00b4\u00b4\u00b4\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b5\u00b5\u00b5 ", - " \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad \u00ad\u00ad\u00ad \u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae \u00b6\u00b6\u00b6 \u00aa\u00aa \u00aa\u00aa\u00aa\u00aa\u00aa\u00aa \u00aa\u00aa\u00aa \u00af\u00af\u00af\u00af\u00af\u00af \u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b0\u00b0\u00b0\u00b0 \u00b0\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1 \u00b1\u00b1\u00b1\u00b1\u00b1 \u00ab\u00ab\u00ab \u00b7\u00b7\u00b7 \u00b7\u00b7\u00b7\u00b7\u00b7\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2 \u00b3\u00b3\u00b3 \u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3 \u00b3\u00b3\u00b3\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4 \u00b4\u00b4\u00b4\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b5\u00b5\u00b5 ", - " \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ad\u00ad\u00ad \u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad \u00ad\u00ad\u00ad \u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae \u00b6\u00b6\u00b6 \u00aa\u00aa \u00aa\u00aa\u00aa \u00aa\u00aa \u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b0\u00b0\u00b0 \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b1\u00b1\u00b1\u00b1 \u00b1\u00b1\u00b1\u00b1 \u00b1\u00b1\u00b1\u00b1\u00b1 \u00ab\u00ab\u00ab\u00ab \u00b7\u00b7 \u00b7\u00b7\u00b7\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b3\u00b3\u00b3 \u00b3\u00b3 \u00b3\u00b3\u00b3 \u00b3\u00b3\u00b3\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4 \u00b4\u00b4\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b5\u00b5\u00b5 ", - " \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac \u00ad \u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad \u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae \u00b6\u00b6\u00b6 \u00aa\u00aa \u00aa\u00aa \u00aa \u00af\u00af\u00af\u00af \u00af\u00af\u00af \u00b0 \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b1\u00b1\u00b1\u00b1\u00b1 \u00b1\u00b1\u00b1\u00b1 \u00b1 \u00ab\u00ab\u00ab\u00ab \u00b7\u00b7 \u00b7\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b3\u00b3 \u00b3 \u00b3\u00b3\u00b3 \u00b3\u00b3 \u00b4\u00b4\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b5\u00b5\u00b5 ", - " \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac \u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad\u00ad \u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae \u00b6\u00b6\u00b6 \u00aa\u00aa \u00aa\u00aa \u00af\u00af\u00af\u00af \u00af\u00af\u00af\u00af \u00b0\u00b0 \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b1\u00b1\u00b1\u00b1 \u00b1\u00b1\u00b1\u00b1 \u00ab\u00ab\u00ab\u00ab \u00ab \u00b7\u00b7\u00b7\u00b7\u00b7 \u00b7\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b3\u00b3\u00b3 \u00b3\u00b3 \u00b3\u00b3\u00b3\u00b3 \u00b3\u00b3\u00b3 \u00b4\u00b4\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b5\u00b5\u00b5 ", - " \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac \u00ad\u00ad\u00ad\u00ad \u00ad\u00ad\u00ad\u00ad\u00ad \u00ae\u00ae\u00ae\u00ae \u00b6\u00b6\u00b6 \u00aa\u00aa \u00aa\u00aa \u00aa \u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b0\u00b0\u00b0\u00b0 \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b1\u00b1\u00b1\u00b1 \u00b1\u00b1\u00b1\u00b1 \u00ab\u00ab\u00ab\u00ab \u00ab\u00ab\u00ab \u00b7\u00b7 \u00b7\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b3\u00b3\u00b3 \u00b3\u00b3 \u00b3\u00b3\u00b3\u00b3 \u00b3\u00b3\u00b3 \u00b4\u00b4\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b5\u00b5\u00b5 ", - " \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac \u00ad\u00ad\u00ad\u00ad \u00ad\u00ad\u00ad\u00ad\u00ad \u00ae\u00ae\u00ae \u00b6\u00b6\u00b6 \u00aa\u00aa \u00aa \u00aa \u00af\u00af\u00af\u00af\u00af\u00af \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00b0\u00b0 \u00b0\u00b0\u00b0\u00b0 \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b1\u00b1\u00b1 \u00b1\u00b1\u00b1 \u00b1 \u00b1 \u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab \u00b7 \u00b7\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b3\u00b3\u00b3\u00b3\u00b3 \u00b3\u00b3\u00b3 \u00b3\u00b3\u00b3 \u00b4\u00b4\u00b4\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b5\u00b5\u00b5 ", - " \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac \u00ad\u00ad\u00ad\u00ad \u00ad\u00ad\u00ad\u00ad\u00ad \u00ae\u00ae \u00b6\u00b6\u00b6 \u00aa\u00aa \u00aa \u00aa \u00af\u00af\u00af\u00af\u00af\u00af \u00af\u00af\u00af\u00af\u00af\u00af \u00b0\u00b0\u00b0\u00b0\u00b0\u00b0 \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1 \u00b1\u00b1\u00b1\u00b1\u00b1 \u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab \u00b7 \u00b7\u00b7\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b3\u00b3\u00b3\u00b3\u00b3 \u00b3 \u00b3\u00b3\u00b3\u00b3 \u00b4\u00b4 \u00b4\u00b4\u00b4\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b5\u00b5\u00b5 ", - " \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac \u00ad\u00ad\u00ad\u00ad \u00ad\u00ad\u00ad\u00ad\u00ad \u00ae \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00aa\u00aa \u00aa\u00aa \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b0\u00b0\u00b0\u00b0\u00b0 \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1\u00b1 \u00b1\u00b1\u00b1\u00b1 \u00ab\u00ab\u00ab\u00ab\u00ab\u00ab\u00ab \u00b7\u00b7 \u00b7\u00b7\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b3\u00b3\u00b3\u00b3 \u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3 \u00b4\u00b4\u00b4\u00b4 \u00b4\u00b4\u00b4\u00b4\u00b4\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b5\u00b5\u00b5 ", - " \u00ac\u00ac\u00ac\u00ac \u00ac\u00ac\u00ac\u00ac \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6 \u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa\u00aa \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b0\u00b0\u00b0\u00b0\u00b0 \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8 \u00b1\u00b1 \u00b1\u00b1\u00b1\u00b1\u00b1\u00b1 \u00b1\u00b1\u00b1 \u00b1\u00b1\u00b1 \u00ab\u00ab\u00ab \u00b7\u00b7 \u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2\u00b2 \u00b3\u00b3\u00b3 \u00b3\u00b3\u00b3\u00b3\u00b3\u00b3\u00b3 \u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4 \u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b5\u00b5\u00b5 ", - " \u00ac\u00ac\u00ac \u00ac\u00ac\u00ac \u00b6\u00b6 \u00b6\u00b6 \u00af\u00af\u00af\u00af\u00af\u00af\u00af\u00af \u00b0\u00b0\u00b0\u00b0\u00b0\u00b0 \u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8\u00b8 \u00b1\u00b1\u00b1 \u00b1\u00b1\u00b1 \u00b1\u00b1\u00b1 \u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7 \u00b3\u00b3 \u00b3\u00b3\u00b3\u00b3\u00b3\u00b3 \u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4\u00b4 \u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b5\u00b5\u00b5 ", - " \u00ac \u00ac \u00b9\u00b9\u00b9\u00b9\u00b9\u00b9 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00b6\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba \u00ba\u00ba \u00bb\u00bb\u00af\u00af\u00af\u00af \u00b0\u00b0\u00b0\u00b0\u00b0\u00b0 \u00bc \u00b8\u00b8\u00b8\u00b8\u00b8 \u00bd\u00bd \u00b1\u00b1\u00b1\u00b1 \u00b7\u00b7\u00b7\u00b7 \u00be\u00be\u00be\u00be \u00b3\u00b3\u00b3\u00b3 \u00b4\u00b4\u00b4\u00b4 \u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5\u00b5 \u00b5\u00b5 ", - " \u00bf\u00bf\u00bf\u00bf\u00bf \u00bf\u00bf\u00bf\u00bf\u00bf \u00c0\u00c0\u00c0\u00c0\u00c0\u00c0 \u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9 \u00c1\u00c1\u00b6\u00b6\u00c1\u00c1\u00c1\u00c1\u00c1\u00c1\u00c1\u00c1\u00c1 \u00b6\u00b6\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba \u00ba\u00ba\u00ba\u00ba \u00bb\u00bb\u00bb\u00bb \u00bc\u00bc \u00b8\u00b8\u00b8 \u00bd\u00bd\u00bd \u00c2\u00c2\u00c2\u00c2\u00c2 \u00b1\u00b1\u00b1\u00b1\u00b1 \u00c3\u00c3\u00c3\u00c3\u00c3\u00c3\u00c3\u00c3\u00c3\u00c3 \u00c4\u00c4\u00c4\u00c4 \u00be\u00be\u00be\u00be\u00be\u00be \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c6\u00c6\u00c6\u00c6 \u00c7\u00c7\u00c7 \u00c7\u00c7\u00c7\u00c7 ", - " \u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf \u00c0\u00c0 \u00c0\u00c0 \u00b9\u00b9\u00b9\u00b9\u00b9 \u00b9\u00b9\u00b9\u00b9 \u00c1\u00c1\u00c1\u00b6\u00c1\u00c1\u00c1\u00c1\u00c1\u00c1\u00c1\u00c1\u00c1 \u00b6\u00ba\u00ba \u00ba \u00ba\u00ba\u00ba\u00ba\u00bb\u00bb\u00bb\u00bb\u00bb\u00bb \u00bc\u00bc\u00bc \u00bd\u00bd\u00bd\u00bd \u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd \u00c2\u00c2\u00c2\u00c2\u00c2\u00c2\u00c2 \u00b1 \u00b1 \u00c3\u00c3\u00c3\u00c3 \u00c3\u00c3\u00c3\u00c3\u00c3 \u00c4\u00c4 \u00c4\u00c4 \u00be\u00be\u00be \u00be\u00be\u00be \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c6\u00c6\u00c6\u00c6 \u00c7\u00c7\u00c7 \u00c7\u00c7\u00c7\u00c7 ", - " \u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0 \u00b9\u00b9\u00b9 \u00b9\u00b9\u00b9\u00c1 \u00c1\u00c1\u00c1 \u00c1\u00c1 \u00c1\u00ba\u00ba\u00c1 \u00ba\u00ba\u00ba \u00ba\u00ba \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb \u00bc\u00bc\u00bc\u00bc\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd \u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00c2\u00c2\u00c2\u00c2 \u00c2\u00c2\u00c2 \u00c3\u00c3\u00c3 \u00c3\u00c3 \u00c4\u00c4 \u00c4 \u00be\u00be \u00be\u00be\u00be \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c6\u00c6\u00c6 \u00c7\u00c7 \u00c7\u00c7 ", - " \u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0 \u00b9\u00b9 \u00b9\u00b9\u00c1 \u00c1\u00c1\u00c1 \u00c1\u00c1 \u00ba\u00ba \u00ba\u00ba\u00ba\u00ba\u00ba \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb \u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd \u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00c2\u00c2\u00c2\u00c2 \u00c2\u00c2 \u00c3\u00c3 \u00c3\u00c3 \u00c4\u00c4 \u00c4\u00c4 \u00be\u00be \u00be\u00be \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5 \u00c7 \u00c7\u00c7 ", - " \u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf \u00c0 \u00c0\u00c0 \u00b9\u00b9\u00b9 \u00b9\u00c1 \u00c1\u00c1\u00c1 \u00c1 \u00ba\u00ba \u00ba\u00ba\u00ba\u00ba\u00ba\u00ba \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb \u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc \u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd \u00bd\u00bd\u00c2\u00c2\u00c2\u00c2\u00c2 \u00c2\u00c2 \u00c3\u00c3 \u00c3 \u00c4\u00c4 \u00c4\u00c4\u00c4\u00c4\u00c4\u00c4\u00c4\u00be\u00be\u00be \u00be\u00be\u00be\u00be \u00c5\u00c5 \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c6\u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6\u00c6 \u00c7 \u00c7\u00c7 \u00c7\u00c7\u00c7\u00c7 ", - " \u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf \u00c0 \u00c0 \u00c0 \u00c0 \u00c0\u00c0 \u00b9\u00b9 \u00b9\u00b9\u00b9 \u00c1\u00c1\u00c1 \u00ba\u00ba \u00ba\u00ba\u00ba\u00ba\u00ba\u00ba \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb \u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc \u00bd \u00bd\u00bd\u00bd \u00bd\u00bd\u00c2\u00c2 \u00c2\u00c2\u00c2 \u00c3\u00c3 \u00c4\u00c4\u00c4\u00c4\u00c4\u00c4 \u00c4\u00be\u00be\u00be\u00be \u00be\u00be\u00be\u00be \u00c5\u00c5 \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c6\u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6\u00c6\u00c6\u00c6\u00c6\u00c6\u00c6 \u00c7 \u00c7\u00c7 \u00c7 \u00c7\u00c7 ", - " \u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf \u00c0 \u00c0\u00c0 \u00c0 \u00c0\u00c0 \u00c0\u00c0 \u00b9\u00b9 \u00b9\u00b9 \u00c1\u00c1\u00c1 \u00ba\u00ba \u00ba\u00ba\u00ba\u00ba\u00ba\u00ba \u00bb\u00bb\u00bb\u00bb\u00bb\u00bb \u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc \u00bd\u00bd\u00bd \u00c2\u00c2 \u00c2\u00c2\u00c2\u00c2 \u00c3\u00c3 \u00c4\u00c4\u00c4\u00c4 \u00c4\u00be\u00be\u00be\u00be\u00be\u00be\u00be\u00be\u00be\u00be\u00be\u00be \u00c5 \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c6\u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6\u00c6\u00c6\u00c6\u00c6\u00c6\u00c6\u00c6 \u00c7 \u00c7\u00c7 \u00c7\u00c7\u00c7\u00c7 ", - " \u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf \u00c0 \u00c0\u00c0 \u00c0 \u00c0\u00c0 \u00c0\u00c0 \u00b9\u00b9 \u00b9\u00b9 \u00b9\u00b9 \u00b9\u00b9\u00b9 \u00c1\u00c1\u00c1 \u00ba\u00ba \u00ba\u00ba\u00ba\u00ba\u00ba\u00ba \u00bb\u00bb\u00bb\u00bb\u00bb \u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc\u00bc \u00bd\u00bd\u00bd \u00c2\u00c2 \u00c2\u00c2\u00c2\u00c2 \u00c3\u00c3 \u00c4\u00c4\u00c4\u00c4 \u00c4\u00c4\u00c4\u00c4\u00c4\u00c4 \u00be\u00be\u00be\u00be\u00be\u00be\u00be\u00be\u00be\u00be\u00be\u00be \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c6\u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6\u00c6 \u00c7\u00c7 \u00c7\u00c7 \u00c7\u00c7 ", - " \u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf \u00c0 \u00c0\u00c0 \u00c0 \u00c0\u00c0 \u00c0\u00c0 \u00b9\u00b9 \u00b9\u00b9\u00b9 \u00b9\u00b9\u00b9\u00b9\u00b9\u00b9\u00b9 \u00c1\u00c1\u00c1 \u00ba\u00ba \u00ba \u00ba\u00ba \u00ba \u00bb\u00bb\u00bb\u00bb\u00bb \u00bc\u00bc\u00bc\u00bc\u00bc \u00bc\u00bc\u00bc\u00bc \u00bd\u00bd\u00bd \u00bd \u00bd\u00bd\u00c2\u00c2\u00c2\u00c2\u00c2\u00c2\u00c2\u00c2\u00c2\u00c2 \u00c2\u00c2\u00c2 \u00c3 \u00c4\u00c4\u00c4\u00c4 \u00c4\u00c4\u00c4\u00c4 \u00be\u00be\u00be\u00be \u00be\u00be\u00be \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c6\u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6\u00c6 \u00c7\u00c7\u00c7 \u00c7\u00c7\u00c7 \u00c7\u00c7 ", - " \u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf \u00c0 \u00c0\u00c0 \u00c0 \u00c0\u00c0 \u00c0\u00c0 \u00b9\u00b9\u00b9\u00b9\u00b9\u00b9 \u00b9\u00b9\u00b9\u00b9\u00b9\u00b9 \u00c1\u00c1\u00c1 \u00ba\u00ba \u00ba\u00ba\u00ba\u00ba \u00ba\u00ba \u00bb\u00bb\u00bb\u00bb\u00bb \u00bc\u00bc\u00bc \u00bc\u00bc\u00bc \u00bd\u00bd\u00bd\u00bd\u00bd \u00bd\u00bd\u00bd\u00c2\u00c2\u00c2\u00c2\u00c2\u00c2 \u00c2\u00c2\u00c2 \u00c2\u00c2\u00c2 \u00c3 \u00c3\u00c4\u00c4\u00c4\u00c4 \u00c4\u00c4 \u00be\u00be\u00be\u00be \u00be\u00be\u00be\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c6\u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6\u00c6 \u00c7\u00c7\u00c7\u00c7\u00c7\u00c7 \u00c7\u00c7 ", - " \u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf \u00c0 \u00c0\u00c0 \u00c0 \u00c0\u00c0 \u00c0\u00c0 \u00b9\u00b9\u00b9\u00b9\u00b9 \u00b9\u00b9\u00b9\u00b9\u00b9\u00b9 \u00c1\u00c1\u00c1 \u00ba\u00ba \u00ba\u00ba\u00ba \u00ba\u00ba \u00bb\u00bb\u00bb\u00bb\u00bb \u00bc\u00bc\u00bc \u00bc\u00bc \u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd \u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd \u00c2 \u00c2\u00c2\u00c2 \u00c2\u00c2\u00c2\u00c2\u00c3 \u00c3\u00c4\u00c4\u00c4\u00c4 \u00c4\u00c4 \u00be\u00be \u00be \u00be\u00be\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c6\u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6\u00c6 \u00c7\u00c7 \u00c7\u00c7 ", - " \u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf\u00bf \u00c0 \u00c0\u00c0 \u00c0 \u00c0\u00c0 \u00c0\u00c0 \u00b9\u00b9\u00b9 \u00b9\u00b9\u00b9\u00b9 \u00c1\u00c1\u00c1 \u00c1\u00ba \u00ba\u00ba \u00bb\u00bb\u00bb\u00bb\u00bb \u00bc\u00bc \u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd \u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd \u00c2\u00c2\u00c2\u00c2 \u00c2\u00c2\u00c3\u00c3 \u00c3\u00c3\u00c4\u00c4\u00c4\u00c4 \u00c4\u00c4 \u00be\u00be\u00be \u00be\u00c5\u00c5\u00c5\u00c5 \u00c5\u00c5\u00c5\u00c5\u00c5\u00c5\u00c5 \u00c5\u00c6\u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6\u00c6 \u00c7\u00c7 \u00c7\u00c7 ", - " \u00bf\u00bf\u00bf\u00bf\u00bf\u00bf \u00c0 \u00c0\u00c0 \u00b9\u00b9 \u00b9\u00b9\u00b9 \u00c1\u00c1\u00c1 \u00c1\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba\u00ba \u00bb\u00bb\u00bb\u00bb\u00bb \u00bc\u00bc \u00bd\u00bd\u00bd\u00bd\u00bd \u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd\u00bd \u00c2\u00c2\u00c2 \u00c3\u00c3 \u00c3\u00c3 \u00c4\u00c4\u00c4\u00c4 \u00c4 \u00be\u00be\u00be\u00be \u00be\u00be\u00be \u00c5\u00c5 \u00c5 \u00c5\u00c5 \u00c5\u00c6\u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6\u00c6 \u00c7 \u00c7 ", - " \u00bf\u00bf\u00bf\u00bf \u00c0 \u00c0\u00c0 \u00c1\u00c1\u00c1 \u00c1\u00c1\u00c1\u00c1 \u00bb\u00bb\u00bb\u00bb \u00bc\u00bc \u00bd\u00bd\u00bd \u00c2\u00c2\u00c2 \u00c3 \u00c3\u00c3\u00c3 \u00c4\u00c4\u00c4\u00c4\u00c4\u00c4\u00c4\u00c4 \u00c4\u00c4 \u00be\u00be\u00be\u00be\u00be\u00be\u00be \u00c5\u00c5\u00c5\u00c5\u00c5 \u00c5\u00c5\u00c5\u00c5\u00c5\u00c6\u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6\u00c6 \u00c7\u00c7\u00c7 \u00c7\u00c7\u00c7 ", - " \u00bf\u00bf \u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0\u00c0 \u00c1\u00c1\u00c1\u00c1\u00c1\u00c1\u00c1 \u00c1\u00c1 \u00c8 \u00bb\u00bb \u00bc \u00bd\u00bd \u00c2\u00c2\u00c2 \u00c3\u00c3\u00c3\u00c3\u00c3\u00c3\u00c3\u00c3\u00c3\u00c3\u00c3 \u00c4\u00c4\u00c4\u00c4\u00c4\u00c4 \u00be\u00be\u00be\u00be\u00be \u00c5\u00c5\u00c5 \u00c5\u00c5\u00c5 \u00c6\u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6 \u00c6\u00c6\u00c6\u00c6 \u00c7\u00c7\u00c7\u00c7\u00c7\u00c7 ", - " \u00c9\u00c9\u00c9 \u00ca\u00ca \u00c1\u00c1\u00c1\u00c1\u00c1\u00c1\u00c1\u00c1\u00cb\u00cb\u00cb\u00cb \u00c1 \u00c8\u00c8\u00c8 \u00cc\u00cc\u00cc \u00bc \u00cd\u00cd\u00cd \u00ce\u00ce\u00ce \u00ce\u00ce \u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00c2\u00c2\u00cf \u00d0\u00d0 \u00d1\u00d1 \u00be \u00d1\u00d1 \u00d2 \u00d2 \u00d2\u00d2 \u00d3\u00d3 ", - " \u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4 \u00c9\u00c9\u00c9 \u00ca\u00ca\u00ca \u00cb\u00cb\u00cb\u00cb\u00cb\u00cb\u00cb \u00c8\u00c8\u00c8 \u00cc\u00cc\u00cc\u00cc\u00cc \u00cd\u00cd\u00cd\u00cd \u00ce\u00ce\u00ce\u00ce \u00ce\u00ce\u00ce\u00ce \u00cf\u00cf\u00cf \u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf \u00d0\u00d0\u00d0\u00d0 \u00d5\u00d5\u00d5 \u00d5\u00d5 \u00d1\u00d1\u00d1\u00d1 \u00d1\u00d1\u00d1\u00d1\u00d1 \u00d2 \u00d2 \u00d2 \u00d2\u00d2\u00d2\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6 \u00d3\u00d3\u00d3\u00d3\u00d3\u00d3 ", - " \u00d4\u00d4 \u00d4\u00d4 \u00c9\u00c9\u00c9 \u00c9\u00c9\u00c9\u00c9 \u00c9\u00c9 \u00ca\u00ca \u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca \u00ca\u00ca \u00cb\u00cb\u00cb\u00cb \u00c8\u00c8\u00c8\u00c8\u00c8 \u00cc\u00cc\u00cc\u00cc\u00cc\u00cc \u00cd\u00cd\u00cd\u00cd \u00ce\u00ce \u00ce\u00ce \u00ce\u00ce \u00ce \u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf \u00cf \u00d0\u00d0\u00d0\u00d0\u00d0\u00d0 \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5 \u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d1\u00d1\u00d1\u00d1\u00d1 \u00d2\u00d2 \u00d2\u00d2 \u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6 \u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3 ", - " \u00d4\u00d4 \u00d4\u00d4\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9 \u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca \u00cb\u00cb\u00cb\u00cb \u00c8\u00c8\u00c8\u00c8\u00c8 \u00cc\u00cc\u00cc\u00cc\u00cc\u00cc \u00cd\u00cd\u00cd\u00cd \u00ce\u00ce\u00ce\u00ce \u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce \u00ce\u00ce\u00cf\u00ce \u00cf \u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0 \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5 \u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d1\u00d1\u00d1\u00d1 \u00d1\u00d1\u00d1\u00d1\u00d1 \u00d2\u00d2\u00d2 \u00d2\u00d2 \u00d2\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6 \u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3 ", - " \u00d4\u00d4 \u00d4\u00d4\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9 \u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca \u00cb\u00cb\u00cb \u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8 \u00cc\u00cc\u00cc\u00cc\u00cc\u00cc \u00cd\u00cd\u00cd\u00cd \u00ce\u00ce\u00ce\u00ce \u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce \u00ce\u00ce\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf \u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0 \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5 \u00d1\u00d1\u00d1\u00d1 \u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d2 \u00d2\u00d2 \u00d2\u00d2 \u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6 \u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3 ", - " \u00d4\u00d4\u00d4 \u00d4\u00d4\u00d4 \u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9 \u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca \u00cb\u00cb\u00cb \u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8 \u00cc\u00cc\u00cc\u00cc\u00cc\u00cc \u00cd\u00cd \u00cd\u00cd\u00cd\u00cd \u00cd \u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf \u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf \u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0 \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5 \u00d1 \u00d1\u00d1 \u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d1\u00d1 \u00d1 \u00d2\u00d2\u00d2\u00d2\u00d2\u00d2 \u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6 \u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3 ", - " \u00d4 \u00d4\u00d4 \u00d4\u00d4 \u00c9\u00c9\u00c9\u00c9\u00c9\u00c9 \u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca \u00cb\u00cb\u00cb \u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8 \u00cc\u00cc\u00cc\u00cc\u00cc\u00cc \u00cd\u00cd\u00cd\u00cd \u00cd\u00cd\u00cd\u00cd \u00cd\u00cd\u00cd\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf \u00cf\u00cf \u00cf\u00cf\u00cf\u00cf\u00cf\u00cf \u00d0\u00d0\u00d0\u00d0 \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d2\u00d2\u00d2\u00d2\u00d2\u00d2 \u00d6 \u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6 \u00d6 \u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3 ", - " \u00d4 \u00d4\u00d4\u00d4 \u00d4\u00d4\u00d4 \u00c9\u00c9\u00c9\u00c9\u00c9 \u00c9\u00c9\u00c9\u00c9\u00c9\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca \u00cb\u00cb\u00cb\u00cb \u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8 \u00cc\u00cc\u00cc\u00cc\u00cc\u00cc \u00cd\u00cd\u00cd\u00cd\u00cd \u00cd\u00cd\u00cd\u00cd \u00cd\u00cd\u00cd\u00cd\u00ce \u00ce \u00ce \u00ce \u00cf\u00cf\u00cf\u00cf\u00cf\u00cf \u00cf \u00cf\u00cf \u00cf\u00cf\u00cf\u00cf\u00cf\u00cf \u00d0\u00d0\u00d0\u00d0 \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d2\u00d2\u00d2\u00d2\u00d2\u00d2 \u00d2\u00d6\u00d6\u00d6 \u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6 \u00d6\u00d6\u00d6 \u00d3 \u00d3\u00d3\u00d3\u00d3\u00d3 ", - " \u00d4 \u00d4\u00d4\u00d4 \u00d4\u00d4\u00d4 \u00c9\u00c9\u00c9\u00c9\u00c9 \u00c9\u00c9\u00c9\u00c9\u00c9\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca \u00cb\u00cb\u00cb \u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8 \u00cc\u00cc\u00cc\u00cc\u00cc\u00cc \u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00ce \u00ce \u00ce \u00ce \u00cf\u00cf\u00cf\u00cf\u00cf \u00cf\u00cf\u00cf\u00cf\u00cf\u00cf \u00cf\u00cf\u00cf\u00cf\u00cf \u00d0\u00d0\u00d0\u00d0 \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d2\u00d2\u00d2\u00d2\u00d2\u00d2 \u00d6\u00d6\u00d6\u00d6 \u00d6\u00d6\u00d6\u00d6\u00d6\u00d6 \u00d6\u00d6\u00d6\u00d6 \u00d3 \u00d3\u00d3 \u00d3\u00d3 \u00d3\u00d3 ", - " \u00d4 \u00d4\u00d4\u00d4 \u00d4\u00d4\u00d4 \u00c9\u00c9\u00c9\u00c9\u00c9\u00c9 \u00c9\u00c9\u00c9\u00c9\u00c9\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca \u00cb\u00cb\u00cb \u00c8\u00c8\u00c8 \u00c8\u00c8\u00c8\u00c8\u00c8\u00c8 \u00cc\u00cc\u00cc\u00cc\u00cc\u00cc \u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd \u00ce \u00ce \u00ce \u00ce \u00cf\u00cf\u00cf\u00cf\u00cf \u00cf\u00cf\u00cf\u00cf\u00cf\u00cf \u00cf\u00cf\u00cf\u00cf\u00cf \u00d0\u00d0\u00d0\u00d0 \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d2\u00d2\u00d2\u00d2\u00d2\u00d2 \u00d6\u00d6\u00d6\u00d6\u00d6\u00d6 \u00d6\u00d6\u00d6\u00d6 \u00d6\u00d6\u00d6\u00d6\u00d6\u00d3\u00d3 \u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3 \u00d3\u00d3 ", - " \u00d4 \u00d4\u00d4\u00d4\u00d4 \u00d4 \u00c9\u00c9\u00c9\u00c9\u00c9 \u00c9\u00c9\u00c9\u00c9\u00c9 \u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca\u00ca \u00cb\u00cb\u00cb \u00c8\u00c8\u00c8 \u00c8\u00c8\u00c8\u00c8\u00c8\u00c8 \u00cc\u00cc\u00cc\u00cc\u00cc\u00cc \u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd \u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf \u00cf\u00cf\u00cf\u00cf \u00cf\u00cf\u00cf\u00cf\u00cf\u00cf \u00d0\u00d0\u00d0\u00d0 \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d1\u00d1\u00d1 \u00d2\u00d2\u00d2\u00d2\u00d2\u00d2 \u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6 \u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d3\u00d3 \u00d3\u00d3\u00d3\u00d3\u00d3 \u00d3\u00d3 ", - " \u00d4 \u00d4 \u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9 \u00ca\u00ca\u00ca\u00ca\u00ca \u00ca\u00ca\u00ca\u00ca \u00cb\u00cb\u00cb \u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8 \u00cc\u00cc\u00cc\u00cc\u00cc\u00cc \u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd \u00ce \u00ce \u00ce \u00ce \u00cf\u00cf\u00cf\u00cf\u00cf\u00cf \u00cf\u00cf\u00cf\u00cf\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0 \u00d0\u00d0\u00d0\u00d0\u00d0\u00d0 \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5 \u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d2\u00d2\u00d2\u00d2\u00d2\u00d2 \u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d3\u00d3 \u00d3\u00d3\u00d3\u00d3 \u00d3\u00d3 \u00d3\u00d3 ", - " \u00d4 \u00d4\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9 \u00ca\u00ca \u00cb\u00cb\u00cb\u00cb \u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8 \u00cc\u00cc\u00cc\u00cc\u00cc\u00cc \u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd \u00ce \u00ce \u00ce \u00ce \u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0 \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5 \u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d2\u00d2\u00d2\u00d2\u00d2\u00d2 \u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d3 \u00d3\u00d3 \u00d3\u00d3\u00d3 \u00d3\u00d3 \u00d3\u00d3 ", - " \u00d4 \u00d4 \u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9\u00c9 \u00ca\u00ca \u00cb\u00cb\u00cb \u00c8\u00c8\u00c8\u00c8\u00c8\u00c8\u00c8 \u00cc\u00cc\u00cc\u00cc\u00cc\u00cc \u00cd\u00cd\u00cd\u00cd\u00cd \u00ce \u00ce \u00ce \u00ce \u00cf\u00ce \u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0 \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5\u00d5 \u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d2\u00d2\u00d2\u00d2\u00d2\u00d2 \u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d3 \u00d3\u00d3\u00d3 \u00d3\u00d3 \u00d3 ", - " \u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4\u00d4 \u00c9 \u00c9\u00c9\u00c9 \u00ca\u00ca \u00cb\u00cb\u00cb\u00cb\u00cb \u00cc\u00cc\u00cc\u00cc \u00cd\u00cd\u00cd \u00ce \u00ce \u00ce \u00ce \u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0 \u00d0\u00d0\u00d0\u00d0 \u00d5\u00d5\u00d5\u00d5\u00d5\u00d5 \u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d2\u00d2\u00d2\u00d2 \u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d6\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3 ", - " \u00c9\u00c9\u00c9 \u00ca\u00ca \u00d7\u00d7\u00d7 \u00cb\u00cb\u00cb\u00cb\u00cb\u00cb\u00cb \u00cc\u00cc \u00ce \u00ce \u00ce \u00ce \u00d8\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00cf\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0\u00d0 \u00d5\u00d5\u00d5 \u00d5\u00d5 \u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1 \u00d9\u00d2\u00d2\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9 \u00da\u00da\u00da\u00da\u00da\u00da\u00da\u00da \u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3\u00d3 ", - " \u00db\u00db\u00db \u00d7\u00d7\u00d7\u00d7\u00d7\u00d7 \u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc \u00dd\u00dd\u00dd\u00dd\u00dd \u00de\u00de \u00df\u00df \u00ce \u00ce \u00ce \u00ce\u00d8\u00d8\u00ce\u00ce\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1 \u00e2\u00e2 \u00e3\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9 \u00da\u00da\u00da\u00da\u00da\u00da\u00da\u00da\u00da\u00da \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 ", - " \u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5 \u00db\u00db\u00db \u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7 \u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd \u00de\u00de\u00de\u00de \u00df\u00df\u00df\u00df \u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2 \u00e3\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9 \u00da\u00da\u00da\u00da\u00da\u00da\u00da\u00da\u00da\u00da \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 ", - " \u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5 \u00db\u00db\u00db \u00d7\u00d7 \u00d7\u00d7\u00d7 \u00dc\u00dc\u00dc \u00dc\u00dc\u00dc\u00dc \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd \u00de\u00de\u00de\u00de\u00de\u00de \u00df\u00df\u00df\u00df\u00df\u00df \u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00ce\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3\u00e3\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00d1\u00e3\u00e3\u00d9\u00d9 \u00d9\u00d9 \u00d9\u00d9 \u00d9\u00d9 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 ", - " \u00e5\u00e5\u00e5\u00e5\u00e5 \u00e5\u00e5\u00e5\u00e5\u00e5\u00e5 \u00db\u00db\u00db \u00d7\u00d7 \u00d7\u00d7 \u00dc\u00dc\u00dc \u00dc\u00dc\u00dc \u00dd\u00dd\u00dd \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd \u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de \u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df \u00d8\u00d8\u00d8\u00d8\u00d8\u00d8\u00d8\u00d8\u00d8\u00d8\u00d8 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1 \u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3\u00e3\u00e3\u00e3 \u00e3\u00e3\u00e3\u00e3\u00e3\u00d9\u00d9 \u00d9\u00d9 \u00d9\u00d9 \u00d9\u00d9 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 ", - " \u00e5\u00e5\u00e5\u00e5 \u00e5\u00e5\u00e5\u00e5 \u00db\u00db\u00db \u00d7\u00d7 \u00d7\u00d7 \u00dc\u00dc\u00dc \u00dc\u00dc\u00dc \u00dd\u00dd\u00dd \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd \u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de \u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df \u00d8\u00d8\u00d8\u00d8\u00d8\u00d8\u00d8\u00d8 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0\u00e0\u00e1\u00e1\u00e1 \u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3\u00e3\u00e3\u00e3\u00e3 \u00e3\u00e3\u00e3\u00e3\u00e3\u00e3\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9 \u00e4\u00e4\u00e4\u00e4\u00e4 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 ", - " \u00e5\u00e5\u00e5 \u00e5\u00e5\u00e5\u00e5 \u00db\u00db\u00db \u00db\u00db\u00db \u00d7\u00d7 \u00d7\u00d7 \u00dc\u00dc\u00dc \u00dc\u00dc\u00dc\u00dc \u00dd\u00dd\u00dd \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd \u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de \u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df \u00d8\u00d8\u00d8\u00d8\u00d8\u00d8 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e1\u00e1\u00e1\u00e1 \u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3 \u00e3\u00e3\u00e3 \u00e3\u00e3\u00e3\u00e3 \u00e3\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9 \u00e4\u00e4\u00e4\u00e4\u00e4 \u00e4\u00e4\u00e4\u00e4\u00e4 ", - " \u00e5\u00e5\u00e5 \u00e5\u00e5\u00e5 \u00db\u00db\u00db \u00db\u00db\u00db\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7 \u00dc\u00dc\u00dc \u00dc\u00dc\u00dc\u00dc \u00dd\u00dd \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd \u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de \u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df \u00d8\u00d8\u00d8\u00d8\u00d8\u00d8\u00d8 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e1\u00e1\u00e1 \u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3\u00e3\u00e3\u00e3\u00e3 \u00d9\u00d9 \u00d9\u00d9 \u00d9\u00d9 \u00d9\u00d9 \u00e4\u00e4\u00e4\u00e4\u00e4 \u00e4\u00e4\u00e4\u00e4\u00e4 ", - " \u00e5\u00e5 \u00e5\u00e5\u00e5 \u00db\u00db\u00db \u00db\u00db\u00db\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7 \u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc \u00dd\u00dd \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df \u00d8 \u00d8\u00d8\u00d8\u00d8\u00d8\u00d8\u00d8\u00d8 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0\u00e1\u00e1\u00e1 \u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3\u00e3\u00e3 \u00d9\u00d9 \u00d9\u00d9 \u00d9\u00d9 \u00d9\u00d9 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 ", - " \u00e5\u00e5 \u00e5\u00e5\u00e5 \u00db\u00db\u00db \u00db\u00db\u00db\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7 \u00dc\u00dc\u00dc \u00dc\u00dc\u00dc\u00dc \u00dd\u00dd \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd \u00df\u00df\u00df\u00df \u00df\u00df\u00df\u00df \u00df\u00df\u00df\u00df\u00df\u00d8\u00d8\u00d8\u00d8\u00d8\u00d8\u00d8\u00d8 \u00d8\u00d8\u00d8\u00d8 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0\u00e1\u00e1\u00e1 \u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3\u00e3\u00e3\u00e3 \u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 ", - " \u00e5\u00e5\u00e5 \u00e5\u00e5\u00e5 \u00db\u00db\u00db \u00db\u00db\u00db \u00db\u00db\u00db\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7 \u00dc\u00dc\u00dc \u00dc\u00dc\u00dc\u00dc \u00dd\u00dd\u00dd \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00df\u00df\u00df \u00df\u00df\u00df\u00df \u00df\u00df\u00df \u00d8\u00d8\u00d8\u00d8\u00d8\u00d8 \u00d8\u00d8\u00d8\u00d8 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e1\u00e1\u00e1 \u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3\u00e3\u00e3\u00e3\u00e3\u00e3 \u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 ", - " \u00e5\u00e5\u00e5 \u00e5\u00e5\u00e5 \u00db\u00db\u00db \u00db\u00db\u00db \u00db\u00db\u00db\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7 \u00dc\u00dc\u00dc \u00dc\u00dc\u00dc\u00dc \u00dd\u00dd\u00dd \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de \u00df\u00df\u00df\u00df \u00d8\u00d8\u00d8\u00d8 \u00d8\u00d8\u00d8 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e1\u00e1\u00e1\u00e1 \u00e1\u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3 \u00e3\u00e3\u00e3\u00e3 \u00e3\u00e3\u00e3 \u00e3\u00d9\u00d9 \u00d9\u00d9 \u00d9\u00d9 \u00d9\u00d9 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 ", - " \u00e5\u00e5\u00e5\u00e5 \u00e5\u00e5\u00e5\u00e5 \u00db\u00db\u00db \u00db\u00db\u00db \u00db\u00db\u00db\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7 \u00dc\u00dc\u00dc \u00dc\u00dc\u00dc\u00dc \u00dd\u00dd\u00dd \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd \u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de \u00df\u00df\u00df\u00df \u00d8\u00d8\u00d8 \u00d8\u00d8\u00d8 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1 \u00e1\u00e1\u00e1\u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3\u00e3\u00e3\u00e3\u00e3 \u00e3\u00e3\u00e3\u00e3\u00e3\u00d9\u00d9 \u00d9\u00d9 \u00d9\u00d9 \u00d9\u00d9 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 ", - " \u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5 \u00db\u00db\u00db \u00db\u00db\u00db \u00db\u00db\u00db \u00db\u00db\u00db\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7 \u00dc\u00dc\u00dc \u00dc\u00dc\u00dc\u00dc \u00dd\u00dd\u00dd\u00dd \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd \u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de\u00de \u00df\u00df\u00df\u00df \u00d8\u00d8\u00d8 \u00d8\u00d8 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e1\u00e1\u00e1 \u00e1\u00e1 \u00e1\u00e1\u00e1\u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2 \u00e3\u00e3\u00e3\u00e3\u00e3 \u00e3\u00e3\u00e3\u00e3\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 ", - " \u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5\u00e5 \u00db\u00db \u00db\u00db\u00db \u00db\u00db\u00db \u00db\u00db\u00db \u00db\u00db\u00db \u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7 \u00dc\u00dc\u00dc \u00dc\u00dc\u00dc \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd \u00df\u00df\u00df\u00df \u00d8 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e1\u00e1\u00e1\u00e1\u00e1\u00e1 \u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e3\u00e3\u00e3\u00e3\u00e3 \u00e3\u00e3\u00e3\u00e3\u00e3\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9 \u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4\u00e4 ", - " \u00e5\u00e5\u00e5\u00e5\u00e5 \u00e5\u00e5\u00e5\u00e5\u00db\u00db \u00db\u00db\u00db \u00db\u00db\u00db \u00db\u00db\u00db \u00db\u00db\u00db \u00dc\u00dc\u00dc\u00dc\u00dc \u00dc\u00dc\u00dc\u00dc \u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd\u00dd \u00df\u00df\u00df\u00df \u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0\u00e0 \u00e1\u00e1\u00e1\u00e1\u00e1\u00e1 \u00e1\u00e1\u00e1\u00e1\u00e1\u00e1\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e3\u00e3\u00e3\u00e3\u00e3\u00e3\u00e6\u00e6\u00e6\u00e6\u00e3\u00e3\u00e3\u00e3\u00e3\u00e3 ", - " \u00e5\u00e5\u00e5\u00db\u00db \u00db\u00db\u00db \u00db\u00db\u00db \u00db\u00db\u00db \u00db\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc\u00dc \u00dd\u00dd\u00dd \u00e8\u00e8\u00e8 \u00e0\u00e0\u00e0\u00e0\u00e0\u00e0\u00e0 \u00e0\u00e0\u00e0 \u00e1\u00e1\u00e1\u00e1 \u00e1\u00e1\u00e1 \u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e2\u00e3\u00e3\u00e3\u00e3\u00e3\u00e3\u00e6\u00e6\u00e6\u00e6\u00e3\u00e3\u00e3\u00e3\u00e3 \u00e9\u00e9\u00e9\u00e9\u00e9 ", - " \u00e5\u00e5\u00e5 \u00ea\u00ea\u00ea \u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7 \u00eb\u00eb \u00ec\u00ec\u00ec\u00ec\u00ec\u00ec\u00ec \u00ed \u00ed\u00ed \u00e8\u00e8\u00e8 \u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee \u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef \u00e2\u00e2\u00e2\u00e2\u00e2 \u00f0\u00f0 \u00e6 \u00e6\u00e6 \u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1 \u00f1\u00f1\u00f1\u00f1\u00f1 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 ", - " \u00f2\u00f2\u00f2\u00f2\u00f2\u00f2 \u00ea\u00ea\u00ea \u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7 \u00eb\u00eb\u00eb \u00ec\u00ec\u00ec\u00ec\u00ec\u00ec\u00ec\u00ec\u00ec \u00ed\u00ed \u00ed\u00ed \u00f3\u00f3\u00f3\u00f3 \u00e8\u00e8\u00e8\u00e8\u00e8 \u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee \u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef \u00e2\u00e2\u00e2\u00e2 \u00f0\u00f0\u00f0\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 \u00f1\u00f1\u00f1 \u00f1\u00f1 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 ", - " \u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2 \u00ea\u00ea\u00ea \u00ea\u00ea\u00ea \u00ea\u00ea\u00ea \u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7 \u00eb\u00eb\u00eb\u00eb \u00ec\u00ec\u00ec\u00ec \u00ec\u00ec\u00ec\u00ec \u00ed\u00ed\u00ed \u00ed\u00ed \u00f3\u00f3\u00f3\u00f3\u00f3 \u00e8\u00e8\u00e8\u00e8\u00e8 \u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef \u00f0\u00f0\u00f0 \u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 \u00f1\u00f1\u00f1 \u00f1\u00f1 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 ", - " \u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2 \u00ea\u00ea\u00ea\u00ea \u00ea\u00ea\u00ea \u00ea\u00ea\u00ea\u00ea\u00e7\u00e7 \u00e7 \u00eb\u00eb\u00eb\u00eb\u00eb \u00ec\u00ec\u00ec\u00ec \u00ec\u00ec\u00ec\u00ec \u00ed\u00ed\u00ed\u00ed \u00ed\u00ed \u00f3\u00f3\u00f3\u00f3\u00f3\u00f3 \u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8 \u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef \u00f0\u00f0\u00f0\u00f0 \u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 \u00f1\u00f1\u00f1 \u00f1\u00f1 \u00e9\u00e9\u00e9\u00e9\u00e9 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 ", - " \u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2 \u00ea\u00ea\u00ea \u00ea\u00ea\u00ea \u00ea\u00ea\u00ea\u00e7\u00e7 \u00e7 \u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7 \u00e7 \u00eb\u00eb\u00eb\u00eb\u00eb\u00eb \u00ec\u00ec\u00ec \u00ec\u00ec\u00ec \u00ed\u00ed\u00ed\u00ed\u00ed \u00ed\u00ed \u00f3\u00f3\u00f3\u00f3\u00f3\u00f3 \u00e8\u00e8\u00e8 \u00e8\u00e8 \u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee \u00ee\u00ee\u00ee\u00ef\u00ef \u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef \u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0 \u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 \u00f1\u00f1\u00f1 \u00f1\u00f1 \u00f4\u00f4\u00f4\u00f4\u00f4\u00f4\u00f4\u00f4\u00f4\u00f4 \u00e9\u00e9\u00e9\u00e9\u00e9 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 ", - " \u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00ea\u00ea\u00ea \u00ea\u00ea\u00ea \u00ea\u00ea\u00e7\u00e7 \u00e7 \u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7 \u00e7 \u00eb \u00eb\u00eb\u00eb\u00eb \u00ec\u00ec\u00ec \u00ec\u00ec\u00ec \u00ed\u00ed\u00ed\u00ed\u00ed\u00ed \u00ed\u00ed \u00f3\u00f3\u00f3\u00f3\u00f3\u00f3 \u00e8\u00e8\u00e8 \u00e8\u00e8\u00e8 \u00ee\u00ee\u00ee \u00ee\u00ee\u00ee \u00ee\u00ee\u00ee\u00ef\u00ef \u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef \u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0 \u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 \u00f1\u00f1\u00f1 \u00f1\u00f1 \u00f4\u00f4\u00f4\u00f4\u00f4\u00f4\u00f4\u00f4\u00f4\u00f4 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 ", - " \u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2 \u00f2\u00f2\u00ea\u00ea\u00ea \u00ea\u00ea\u00ea \u00ea\u00ea\u00e7\u00e7 \u00e7 \u00eb\u00eb \u00eb\u00eb\u00eb \u00ec\u00ec\u00ec\u00ec \u00ec\u00ec\u00ec\u00ec \u00ed\u00ed\u00ed\u00ed\u00ed\u00ed\u00ed \u00ed\u00ed \u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3 \u00e8\u00e8\u00e8\u00e8 \u00e8\u00e8\u00e8 \u00ee\u00ee\u00ee\u00ee \u00ee\u00ee\u00ee\u00ee\u00ef\u00ef \u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef \u00ef\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0 \u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 \u00f1\u00f1\u00f1 \u00f1\u00f1 \u00f4\u00f4\u00f4\u00f4\u00f4\u00f4\u00f4\u00f4 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 ", - " \u00f2\u00f2\u00f2\u00f2 \u00f2\u00f2\u00ea\u00ea\u00ea \u00ea\u00ea\u00ea \u00ea\u00e7\u00e7 \u00e7 \u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7 \u00e7 \u00eb\u00eb \u00eb\u00eb\u00eb\u00eb \u00ec\u00ec\u00ec\u00ec\u00ec\u00ec\u00ec\u00ec\u00ec \u00ed\u00ed\u00ed\u00ed\u00ed\u00ed\u00ed\u00ed\u00ed\u00ed \u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3 \u00e8\u00e8\u00e8\u00e8 \u00e8\u00e8\u00e8\u00e8 \u00ee\u00ee\u00ee\u00ee \u00ee\u00ee\u00ee\u00ee \u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0 \u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 \u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 \u00f1\u00f1\u00f1 \u00f1\u00f1 \u00f4\u00f4\u00f4\u00f4\u00f4\u00f4 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 ", - " \u00f2\u00f2 \u00f2\u00f2\u00ea\u00ea\u00ea \u00ea\u00e7\u00e7 \u00e7 \u00eb\u00eb\u00eb\u00eb\u00eb\u00eb\u00eb\u00eb \u00ec\u00ec\u00ec\u00ec\u00ec\u00ec\u00ec\u00ec\u00ec \u00ed\u00ed\u00ed\u00ed\u00ed\u00ed\u00ed \u00ed\u00ed \u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3 \u00e8\u00e8\u00e8\u00e8\u00e8 \u00e8\u00e8\u00e8\u00e8 \u00ee\u00ee\u00ee\u00ee\u00ee \u00ee\u00ee\u00ee\u00ee\u00ee \u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef \u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0\u00f0 \u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 \u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 \u00f1\u00f1\u00f1 \u00f1\u00f1 \u00f4\u00f4\u00f4\u00f4 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 ", - " \u00f2\u00f2 \u00f2\u00f2\u00ea\u00ea\u00ea \u00ea\u00ea\u00e7\u00e7 \u00e7 \u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7 \u00e7 \u00eb\u00eb\u00eb\u00eb\u00eb\u00eb\u00eb\u00eb\u00eb\u00eb \u00ec\u00ec\u00ec\u00ec\u00ec\u00ec\u00ec \u00ed\u00ed\u00ed\u00ed\u00ed\u00ed \u00ed\u00ed \u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3\u00f3 \u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8 \u00ee\u00ee\u00ee\u00ee\u00ee \u00ee\u00ee\u00ee\u00ee\u00ee \u00ef\u00ef\u00ef\u00ef\u00ef \u00f0\u00f0\u00f0\u00f0 \u00f0\u00f0\u00f0\u00f0 \u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 \u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 \u00f1\u00f1\u00f1 \u00f1 \u00f4\u00f4 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 ", - " \u00f2\u00f2 \u00f2\u00f2\u00ea\u00ea\u00ea \u00ea\u00ea\u00e7\u00e7 \u00e7 \u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7 \u00e7 \u00eb\u00eb \u00eb\u00eb\u00eb\u00eb \u00ec\u00ec\u00ec\u00ec\u00ec\u00ec\u00ec \u00ed\u00ed\u00ed\u00ed\u00ed\u00ed \u00ed\u00ed \u00f3\u00f3\u00f3\u00f3\u00f3 \u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee \u00ee\u00ee\u00ee\u00ee\u00ee\u00ee \u00ef\u00ef\u00ef \u00f0\u00f0\u00f0 \u00f0\u00f0\u00f0 \u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 \u00f1\u00f1\u00f1\u00f1 \u00f1\u00f1 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 ", - " \u00f2\u00f2 \u00f2\u00f2\u00f2\u00f2\u00f2\u00f2 \u00ea\u00ea\u00ea \u00ea\u00ea\u00ea\u00e7\u00e7 \u00e7 \u00eb\u00eb \u00eb\u00eb\u00eb\u00eb \u00ec\u00ec\u00ec\u00ec\u00ec \u00ed\u00ed\u00ed\u00ed\u00ed \u00ed\u00ed \u00f3\u00f3\u00f3\u00f3\u00f3 \u00e8\u00e8\u00e8\u00e8\u00e8\u00e8 \u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00ee\u00ee\u00ee\u00ee \u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee \u00ef\u00ef\u00ef \u00f0\u00f0\u00f0\u00f0 \u00f0\u00f0\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 \u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 ", - " \u00f2\u00f2 \u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2 \u00ea\u00ea\u00ea\u00ea \u00ea\u00ea\u00ea\u00ea\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7\u00e7 \u00eb\u00eb \u00eb\u00eb\u00eb\u00eb \u00ec\u00ec\u00ec\u00ec\u00ec \u00ed\u00ed\u00ed\u00ed \u00ed\u00ed \u00f3\u00f3\u00f3\u00f3\u00f3 \u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8 \u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee \u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef \u00f0\u00f0\u00f0\u00f0 \u00f0\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 \u00f1\u00f1\u00f1\u00f1 \u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9\u00e9 ", - " \u00f2\u00f2\u00f2\u00f2\u00f2\u00f2 \u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2 \u00ea\u00ea\u00ea\u00ea\u00ea\u00ea\u00ea\u00ea\u00ea\u00ea\u00ea \u00eb\u00eb \u00eb\u00eb\u00eb\u00eb \u00ec\u00ec\u00ec \u00ed\u00ed\u00ed \u00ed\u00ed \u00f3\u00f3\u00f3\u00f3\u00f3 \u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee \u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef \u00f0\u00f0\u00f0\u00f0 \u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6\u00e6 ", - " \u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2 \u00f2\u00f2\u00f2 \u00ea\u00ea\u00ea\u00ea\u00ea\u00ea\u00ea\u00ea\u00ea \u00eb\u00eb\u00eb\u00eb\u00eb\u00eb\u00eb \u00eb\u00eb\u00eb\u00eb\u00eb\u00eb\u00eb\u00eb \u00ec\u00ec\u00ec \u00ed\u00ed \u00ed\u00ed \u00f3\u00f3\u00f3\u00f3 \u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee\u00ee \u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef\u00ef \u00f0\u00f0\u00f0\u00f0 \u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1\u00f1 ", - " \u00f2\u00f2\u00f2\u00f2\u00f2\u00f2\u00f2 \u00ea\u00ea\u00ea\u00ea\u00ea \u00f5\u00f5\u00f5\u00f5 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f7\u00f7 \u00ed\u00ed \u00f3\u00f3 \u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00e8\u00f8\u00e8\u00e8 \u00f9\u00f9\u00f9\u00f9\u00f9 \u00fa\u00f0\u00f0\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa \u00fb\u00fb\u00fb\u00fb\u00fb \u00fc\u00fc ", - " \u00fd\u00f2\u00f2\u00f2\u00f2\u00f2\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd \u00fe\u00fe\u00fe\u00fe\u00fe\u00fe \u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5 \u00f5\u00f5 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f7\u00f7\u00f7\u00f7 \u00ff\u00ff \u00ff \u00ff\u00ff\u00ff \u0100\u0100\u0100 \u0101\u0101 \u00f8 \u00f8\u00f8\u00f8 \u00f9\u00f9 \u00f9\u00f9\u00f9\u00f9\u00f9\u00f9 \u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa \u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102 \u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb \u00fc\u00fc\u00fc\u00fc \u0103 ", - " \u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd \u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe \u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f7\u00f7\u00f7\u00f7\u00f7\u00ff\u00ff\u00ff \u00ff\u00ff \u00ff\u00ff\u00ff \u0100\u0100\u0100\u0100\u0100 \u0101\u0101\u0101\u0101\u0101\u0101\u0101 \u00f8 \u00f8\u00f8\u00f8 \u00f9\u00f9\u00f9 \u00f9 \u00fa\u00fa \u00fa \u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102 \u00fb\u00fb \u00fb\u00fb \u00fc\u00fc\u00fc\u00fc\u00fc\u00fc \u0103\u0103 ", - " \u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd \u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe \u00f5\u00f5\u00f5\u00f5 \u00f5\u00f5\u00f5\u00f5\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f7\u00f7 \u00f7\u00f7\u00f7\u00f7\u00ff\u00ff\u00ff\u00ff \u00ff\u00ff\u00ff \u00ff\u00ff\u00ff \u0100\u0100\u0100\u0100\u0100\u0100 \u0101\u0101\u0101\u0101\u0101\u0101\u0101\u0101\u0101 \u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f9\u00f9\u00f9\u00f9 \u00f9 \u00fa\u00fa \u00fa\u00fa \u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102 \u00fb\u00fb\u00fb \u00fb\u00fb \u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc \u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103 ", - " \u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd \u00fe\u00fe\u00fe\u00fe \u00fe\u00fe\u00fe\u00fe \u00f5\u00f5\u00f5\u00f5 \u00f5\u00f5\u00f5\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f7\u00f7\u00f7\u00f7 \u00f7\u00f7\u00f7\u00ff\u00ff\u00ff\u00ff\u00ff \u00ff\u00ff\u00ff\u00ff \u00ff\u00ff\u00ff \u0100\u0100\u0100\u0100\u0100\u0100 \u0101\u0101\u0101\u0101\u0101 \u0101\u0101\u0101\u0101 \u0101\u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9 \u00f9 \u00fa \u00fa\u00fa \u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102 \u00fb\u00fb\u00fb \u00fb\u00fb \u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc \u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103 ", - " \u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd \u00fe\u00fe\u00fe \u00fe\u00fe\u00fe \u00f5\u00f5\u00f5 \u00f5\u00f5\u00f5\u00f5\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f7\u00f7\u00f7\u00f7\u00f7\u00f7 \u00f7\u00f7\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff \u00ff\u00ff\u00ff\u00ff\u00ff \u00ff\u00ff\u00ff \u0100\u0100\u0100\u0100\u0100\u0100 \u0101\u0101 \u0101\u0101\u0101\u0101\u0101\u0101\u0101 \u00f8\u0101 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9 \u00f9 \u00fa\u00fa \u00fa \u0102\u0102\u0102\u0102\u0102\u0102\u0102\u0102 \u00fb\u00fb\u00fb\u00fb\u00fb \u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc \u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103 ", - " \u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd \u00fe\u00fe\u00fe \u00fe\u00fe\u00fe \u00f5\u00f5\u00f5 \u00f5\u00f5\u00f5\u00f5\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7 \u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff \u00ff\u00ff\u00ff\u00ff\u00ff\u00ff \u00ff\u00ff\u00ff \u0100\u0100\u0100\u0100\u0100\u0100 \u0101\u0101 \u0101 \u0101\u0101\u0101\u0101 \u0101 \u00f8\u0101\u0101 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9 \u00f9 \u00fa\u00fa \u00fa\u00fa \u0102\u0102\u0102\u0102\u0102\u0102 \u00fb\u00fb\u00fb\u00fb\u00fb\u00fb \u0103\u0103 ", - " \u00fd\u00fd\u00fd\u00fd\u00fd\u00fd \u00fe\u00fe\u00fe \u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe \u00fe\u00fe\u00fe \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7 \u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0101\u0101 \u0101\u0101\u0101\u0101\u0101\u0101 \u0101 \u00f8 \u0101 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9 \u00f9 \u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa \u0102\u0102\u0102\u0102 \u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb \u0103 \u0103 ", - " \u00fd\u00fd\u00fd\u00fd \u00fe\u00fe\u00fe \u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe \u00fe\u00fe\u00fe \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7 \u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0101\u0101 \u0101\u0101\u0101\u0101\u0101 \u0101\u0101 \u00f8\u0101\u0101\u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9\u00f9 \u00f9\u00fa\u00fa \u00fa \u0102\u0102\u0102\u0102 \u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb\u00fb \u0103\u0103 ", - " \u00fd\u00fd \u00fe\u00fe\u00fe \u00fe\u00fe\u00fe \u00f5\u00f5\u00f5\u00f5\u00f5 \u00f5\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7 \u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff \u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u00ff\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0101\u0101 \u0101\u0101\u0101\u0101 \u0101\u0101 \u00f8\u0101\u0101\u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f9\u00f9\u00f9\u00f9\u00f9 \u00f9\u00fa\u00fa \u00fa\u00fa \u00fa\u00fa \u00fa \u0102\u0102\u0102\u0102 \u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc \u0103\u0103\u0103 ", - " \u00fd\u00fd \u00fe\u00fe\u00fe \u00fe\u00fe\u00fe \u00f5\u00f5\u00f5\u00f5\u00f5\u00f5 \u00f5\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7 \u00ff\u00ff\u00ff\u00ff\u00ff\u00ff \u00ff\u00ff\u00ff\u00ff\u00ff\u00ff \u00ff\u00ff\u00ff\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100 \u0101\u0101\u0101 \u0101\u0101\u0101 \u0101 \u0101\u00f8\u0101 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f9\u00f9\u00f9\u00f9 \u00f9\u00fa\u00fa \u00fa\u00fa \u00fa\u00fa \u00fa \u0102\u0102\u0102\u0102 \u00fb\u00fb\u00fb\u00fb \u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc \u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103 ", - " \u00fd\u00fd \u00fe\u00fe\u00fe\u00fe \u00fe\u00fe\u00fe\u00fe \u00f5\u00f5\u00f5\u00f5\u00f5 \u00f5\u00f5\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7\u00f7 \u00ff\u00ff\u00ff\u00ff\u00ff \u00ff\u00ff\u00ff\u00ff\u00ff \u00ff\u00ff\u00ff \u0100\u0100\u0100\u0100\u0100\u0100 \u0101\u0101\u0101\u0101\u0101 \u0101\u0101\u0101\u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f9\u00f9\u00f9 \u00f9\u00f9\u00fa\u00fa \u00fa \u0102\u0102\u0102\u0102 \u00fb \u00fb\u00fb\u00fb \u00fc\u00fc\u00fc\u00fc\u00fc\u00fc\u00fc \u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103\u0103 ", - " \u00fd\u00fd \u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe \u00f5\u00f5\u00f5\u00f5\u00f5\u00f5 \u00f5\u00f5\u00f5\u00f5\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f7\u00f6 \u00f7\u00f7\u00f7\u00f7 \u00ff\u00ff\u00ff\u00ff \u00ff\u00ff\u00ff\u00ff \u00ff\u00ff\u00ff \u0100\u0100\u0100\u0100\u0100\u0100 \u0101\u0101\u0101 \u0101\u0101\u0101\u0101 \u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f8\u00f8\u00f8 \u00f9\u00f9 \u00f9\u00f9\u00f9\u00f9\u00f9\u00f9 \u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa\u00fa \u0102\u0102\u0102\u0102 \u00fb \u00fb\u00fb\u00fb \u00fc\u00fc\u00fc\u00fc\u00fc \u0103\u0103\u0103 ", - " \u00fd\u00fd \u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe \u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f7\u00f7 \u00f7\u00f7 \u00ff\u00ff\u00ff \u00ff\u00ff\u00ff \u00ff\u00ff\u00ff \u0100\u0100\u0100\u0100\u0100\u0100 \u0101\u0101 \u0101\u0101 \u00f8 \u0102\u0102\u0102 \u00fb\u00fb \u00fb\u00fb \u00fc\u00fc\u00fc \u0103\u0103 ", - " \u00fd\u00fd \u00fe\u00fe\u00fe\u00fe\u00fe\u00fe\u00fe \u00fe\u00fe\u00fe\u00fe\u00f5\u00f5 \u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5\u00f5 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f7\u00f7\u00f7\u00f7\u00f7 \u00ff\u00ff \u00ff\u00ff \u00ff\u00ff\u00ff \u0100\u0100\u0100\u0100\u0100\u0100 \u0101 \u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8 \u0102\u0102 \u00fb\u00fb\u00fb\u00fb \u00fb\u00fb\u00fb \u00fc \u0103 ", - " \u00fd\u00fd \u00fe\u00fe\u00fe\u00fe \u00f5\u00f5\u00f5\u00f5\u00f5 \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f7\u00f7\u00f7\u00f7 \u00ff \u00ff \u00ff\u00ff\u00ff \u0100\u0100\u0100\u0100\u0100 \u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8\u00f8 \u00fb\u00fb\u00fb\u00fb\u00fb ", - " \u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd \u00fe\u00fe\u00fe \u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6\u00f6 \u0100\u0100\u0100 ", - " \u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd\u00fd \u00fe\u00fe ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-line-wrap-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/text-line-wrap-512-512-1.0-grid-reference.json deleted file mode 100644 index 6c277bb58..000000000 --- a/tests/visual_tests/grids/text-line-wrap-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "keys": [ - "", - "2", - "1" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !! ! ", - " !!!!!!! ", - " !!!!!!!! ", - " ! ", - " !! ! ", - " !!!!!!!! ", - " !!!!!!!!! ", - " !!!!!!! ", - " ! ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ####### ", - " # ##### ", - " ######## ", - " # ", - " # # # ", - " ######## ", - " ######### ", - " # ## ", - " # ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-line-wrap-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/text-line-wrap-512-512-2.0-grid-reference.json deleted file mode 100644 index fd18c2559..000000000 --- a/tests/visual_tests/grids/text-line-wrap-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "keys": [ - "", - "2", - "1" - ], - "data": {}, - "grid": [ - " ", - " !! !! ", - " ! !! !! ", - " !!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!! ", - " ! !! !!!!!!!!!!! ", - " !!!! !!!!!!!! ", - " !!!! !!!!!!!! ", - " ", - " ", - " !! !! !! ", - " !!!!!!! !!!!!!! ", - " !!!!!!!!!!!!!!!! ", - " !!!!! !!!!!!!!!!!! ", - " !!!!! !! !!!!!!!!! ", - " !!!!! !!!!!!!!!! ", - " !!!! !!!!!!!!!! ", - " ", - " ! ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ## ## ## ", - " ####### ## ### ", - " ############## ", - " ## ########### ", - " ## ## ######## ", - " ##### ########## ", - " #### ########## ", - " ## ", - " ", - " ## ## ## ", - " ####### ######## ", - " ################ ", - " ## ## ######## ", - " #### ## ######## ", - " ####### ########## ", - " ## ### ", - " ", - " # ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-malayalam-800-100-1.0-grid-reference.json b/tests/visual_tests/grids/text-malayalam-800-100-1.0-grid-reference.json deleted file mode 100644 index c736769ce..000000000 --- a/tests/visual_tests/grids/text-malayalam-800-100-1.0-grid-reference.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "keys": [ - "", - "5" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!!!! !!!!!! ! ", - " !!! ! ! ! ! ", - " !!! ! ! ! ! ", - " !!!! ! !!! ! ", - " !!!!! ! ! ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-malayalam-800-100-2.0-grid-reference.json b/tests/visual_tests/grids/text-malayalam-800-100-2.0-grid-reference.json deleted file mode 100644 index 27504216e..000000000 --- a/tests/visual_tests/grids/text-malayalam-800-100-2.0-grid-reference.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "keys": [ - "", - "5" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!! !!! !!! !!!!!! ! ", - " ! !!! !! !! !!! !! ! ! ", - " !!! ! !! ! ! ! !! !! ! ", - " ! ! ! !! ! ! ! !! ! ! ", - " ! ! ! !! ! ! ! ! ! ! ", - " !!! ! !! ! ! ! !! ! !! ", - " !!!!!!!!! ! ! !!! ! ! ", - " ! ! !! ", - " !!!!!!!!!!! !!! ! ", - " !!!!!!!!!! ! !! ", - " !!!! ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-multi-layout-1-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/text-multi-layout-1-512-512-1.0-grid-reference.json deleted file mode 100644 index 5bdb416b7..000000000 --- a/tests/visual_tests/grids/text-multi-layout-1-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "keys": [ - "", - "2", - "3", - "5", - "6", - "4", - "1" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! # ", - " !! ## ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " $ ", - " $ ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " % ", - " %% ", - " % ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " & ' ", - " && '' ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-multi-layout-1-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/text-multi-layout-1-512-512-2.0-grid-reference.json deleted file mode 100644 index 354d80181..000000000 --- a/tests/visual_tests/grids/text-multi-layout-1-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "keys": [ - "", - "2", - "3", - "5", - "6", - "4", - "1" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! # ", - " ! # ", - " !!!! #### ", - " ! # ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " $ ", - " $ ", - " $$$$ ", - " $ ", - " ", - " ", - " ", - " ", - " ", - " ", - " % ", - " % ", - " %%%% ", - " % ", - " % ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " & ' ", - " & ' ", - " &&&& '''' ", - " & ' ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-multi-layout-2-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/text-multi-layout-2-512-512-1.0-grid-reference.json deleted file mode 100644 index 7386a8b19..000000000 --- a/tests/visual_tests/grids/text-multi-layout-2-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "keys": [ - "", - "1" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! ", - " ! ", - " ! ", - " ! !!! ", - " !! !!! ", - " ! !!! ", - " !!! !! ", - " ! ! !! ", - " ! !! !!! ! ", - " !! !! !! ", - " !!! ! ! ", - " !!!! !! ! ", - " !!! ! !!! ! ! ", - " !! ! ! ! ! !! ", - " ! !! !! ! ! ", - " ! !!! !! !!! !! ", - " !! ! ! !! !! ! ", - " !! ! ! !! ", - " !! ! !! !! !!! ! !!! ", - " !! ! !!!!!!!!!! !!!! !!!! ! !!! ! ! ! ", - " ! ! ! !! !! !!! !!!! ! ! !!! !! ", - " ! !!! !!! ! ", - " ! !!!! !! ", - " !!! !!! ! !!! !! ! ", - " !!!!!!!!!!! !!!! ! ! ! ! !!! !! ", - " !!!!!!!!!!! ! !!!!!!! !! ! ! ", - " !! !! !! ", - " !! ! ! ! ", - " ! !! ! ", - " !! !! ", - " ! !! ", - " ! ", - " ", - " ", - " ", - " ! !!! ! !! ! ", - " !!!!!!!!!!!!!!!!!!! !!!!!!!!! !!!!!!!!! !!!! !!!! ", - " !!!!!!!!!!!!!!!!!!! !!!!!!!!! !!!!!!!! !!!!!!!!!! ", - " !!! ! ! ! ! ! !! ! ! ! ! ! ! ", - " ! ! ! !!! ! ! !! ! ", - " ! !!!!!! !! !!!!!!! !!!!!!! !! !!!!!!!!! ", - " !!!!!!!!!!! !!!!!!! !!!!!!!!!!! !!!!!!!!! ", - " ! ! ! ! !! ! ", - " !!!!!!!!!!!!!! !!!!!!!! ", - " !!!!!!!!!!!!!! !!!!!!!! ", - " ", - " !!! ! ! ", - " !!!!!!!!! ", - " !!!!!!!!!! ", - " ! ! ! ", - " !!!!!!!! ", - " !!!!!!!! ", - " !! ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-multi-layout-2-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/text-multi-layout-2-512-512-2.0-grid-reference.json deleted file mode 100644 index de57d8b0f..000000000 --- a/tests/visual_tests/grids/text-multi-layout-2-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "keys": [ - "", - "1" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !! ", - " ! ", - " !! !! ", - " ! ! ", - " ! ! ", - " !! ! ! ! ", - " ! !! !! ! ", - " ! ! ! !!!!! ", - " ! ! !! ! !! ", - " ! ! !!! ! ", - " ! ! !! !! ", - " ! !! ! !! ", - " ! ! ! ! ! ", - " ! ! !! ! ", - " ! ! !! ", - " ! !!! !! ! ! ", - " ! ! ! ! !!! ", - " !!! !! ! ! ! ", - " ! !! ! ! ! ! ! ", - " !!!!! ! !! ! !! ", - " ! ! ! ! !! ! ", - " !!! ! !!! ! ! ", - " ! !! ! !!! ! ! ! ! ! ", - " ! ! !! ! ! ! !! ", - " !!! ! ! !! ! ! !!! !! ", - " ! ! ! !! ! ! ! !! ", - " !! !! ! ! ! !! ! ! !! ! !! ", - " !! ! ! ! !! !!! !! ! ! ", - " !!!!! !! !! ! ! ! ! !! !!! ", - " ! ! !!!!! !!! !!! ! !! ! ", - " !! ! ! ! !! ! ! ! ! ", - " ! !! ! !! ! ! ! !!!! !! ! ", - " !! ! ! !! !!! ! !!! ! !! ! ", - " ! !! ! !! !!!! ! ! ", - " ! !! ! ! ! ! !!! ! ", - " !!!! !! !! !! ! ! ! !!! ! ! !! ! ! ! ", - " ! ! !! !! ! ! ! ! !!! ! !! ! !!!! ", - " !!! !! !! !!!!!!! !!!!! !!!! !! !!!!!! !!!!! !!! ! !! !! !! ! !! !! ", - " !!!! !! ! ! !! !! !! !!!! ! !! !! !! !!!!! ! ! ! ! ! ", - " ! !!! ! !! !! !! !!!! ! !! !! !! !! ! !! !! ! ! ! ", - " !!!! !!! ! !! !! !!!! !!!! !! !!!!!! !!!!! ! ! ! ! !! !!! ", - " ! ! ! ! !!!!!! !! ", - " !!! ! !! ! ! ! ! ! ! ", - " ! ! !! ! ! ! ! !! ! ", - " !!!! !!!!!! ! ! ! ! ! !! !! ", - " !!!!! !!!!!! ! ! !!! !! !! ! ! ", - " !! !! !!!! !!! !!! !! !!!! !! !!!!!! !!! !! !! ! ! ", - " !!!!! !!!!!!! !! !! !! ! !! !!! ! ! !! ! !! ! !!!!! ", - " !! !! !!!!! !!!!!!!!! !! !!!!! !!! ! ! !! ! ! ! ! ", - " !!!!! !!!!!!!!!!!!!!! !! !!!! !! ! !!! ! !! ! ! ! ", - " ! !! !! !! !!! !! ! ", - " ! ! !!!! ! !!! ", - " ! ! !!! !! ! ! ", - " ! !!! !! !! ! ! ", - " ! ! ! ! !! ", - " ! ! ! !! ! ! ", - " ! ! ! ! ! ", - " !!! ! ! ! ", - " ! !!! ! ! ", - " !! ! !! ! ", - " ! ! ! ", - " ! ! ", - " ! ! ", - " ! ! ", - " ! ! ", - " ", - " ", - " ", - " ", - " !! !!!!! !! !!!! !! ", - " !!!!! !!!! !!!!!!!!!! !!! !!!! !!!!! !!!!! !! !!!!! !!!!! ", - " !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!! !!! !!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!! ", - " !! !!!! !!! !! !!!!! ", - " !!! !! !! !!!! !!! !! !!! !!!!!! !!! ", - " !!! !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! ", - " !!! !!! !! !! !!!! !! ", - " !! !! !! !!!!! !! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!! ", - " !! ", - " !!!!! !! !!! ", - " !!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!! !!!!!!!!!!! ", - " !!! !! !!! ", - " !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!! ", - " !!!! ", - " !!! ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-overlap-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/text-overlap-512-512-1.0-grid-reference.json deleted file mode 100644 index baa36a1a6..000000000 --- a/tests/visual_tests/grids/text-overlap-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "keys": [ - "1", - "", - "8", - "4", - "6", - "2", - "7", - "3", - "19", - "20", - "16", - "15", - "18", - "17", - "5", - "9", - "13", - "10", - "14", - "11", - "12" - ], - "data": {}, - "grid": [ - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "&&&&&&&&&&&&&&&&&&&&$$$&&&&&&&&&&&&&&&&&&%%%%&&&&&&&&&&&&&&&&&&&!!!!!!!!!!!''''''''''''''''''''###''''''''''''''''''''!!!!!!!!!!", - "&&&&&&&&&&&&&&&&&&&&$$$&&&&&&&&&&&&&&&&&&%%%%&&&&&&&&&&&&&&&&&&&!!!!!!!!!!!''''''''''''''''''''###''''''''''''''''''''!!!!!!!!!!", - "&&&&&&&&&&&&&&&&&&&&$$$&&&&&&&&&&&&&&&&&&%%%%&&&&&&&&&&&&&&&&&&(((!!!!!!!!!''''''''''''''''''''###''''''''''''''''''''!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!*********************", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!*********************", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!*********************", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)))!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!", - "/////////////////////////////////////////%%%%///////////////////((!!!!!!!+++++++++++++++++++++++++!!!!!!!-----------------------", - "/////////////////////////////////////////%%%%///////////////////!!!!!!!!!+++++++++++++++++++++++++!!!!!!!-----------------------", - "/////////////////////////////////////////%%%%///////////////////!!!!!!!!!+++++++++++++++++++++++++!!!!!!!-----------------------", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-", - " !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!00000000000000000000000000000000", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!00000000000000000000000000000000", - " !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!00000000000000000000000000000000", - " !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - " !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - " !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - " !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - " !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - " !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - " !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - " !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - " !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0", - "55555555511115555555555555555555555555555555555555553335555555555555555555555555555555!!!!!!!!!!!!!!!!!!!00000000000000000000000", - "55555555511115555555555555555555555555555555555555553335555555555555555555555555555555!!!!!!!!!!!!!!!!!!!00000000000000000000000", - "55555555511115555555555555555555555555555555555555553335555555555555555555555555555555!!!!!!!!!!!!!!!!!!!00000000000000000000000", - "55555555511115555555555555555555555555555555555555553335555555555555555555555555555555!!!!!!!!!!!!!!!!!!!00000000000000000000000", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-overlap-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/text-overlap-512-512-2.0-grid-reference.json deleted file mode 100644 index 952c0a167..000000000 --- a/tests/visual_tests/grids/text-overlap-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "keys": [ - "1", - "", - "8", - "4", - "6", - "2", - "7", - "3", - "19", - "20", - "16", - "15", - "18", - "17", - "5", - "9", - "13", - "10", - "14", - "11", - "12" - ], - "data": {}, - "grid": [ - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "&&&&&&&&&&&&&&&&&&&$$$$$$&&&&&&&&&&&&&&&%%%%%%&&&&&&&&&&&&&&&&&&!!!!!!!!!!!''''''''''''''''''######'''''''''''''''''''!!!!!!!!!!", - "&&&&&&&&&&&&&&&&&&&$$$$$$&&&&&&&&&&&&&&&%%%%%%&&&&&&&&&&&&&&&&&&!!!!!!!!!!!''''''''''''''''''######'''''''''''''''''''!!!!!!!!!!", - "&&&&&&&&&&&&&&&&&&&$$$$$$&&&&&&&&&&&&&&&%%%%%%&&&&&&&&&&&&&&&&&&!!!!!!!!!!!''''''''''''''''''######'''''''''''''''''''!!!!!!!!!!", - "&&&&&&&&&&&&&&&&&&&$$$$$$&&&&&&&&&&&&&&&%%%%%%&&&&&&&&&&&&&&&((((((!!!!!!!!''''''''''''''''''######'''''''''''''''''''!!!!!!!!!!", - "&&&&&&&&&&&&&&&&&&&$$$$$$&&&&&&&&&&&&&&&%%%%%%&&&&&&&&&&&&&&&((((((!!!!!!!!''''''''''''''''''######'''''''''''''''''''!!!!!!!!!!", - "&&&&&&&&&&&&&&&&&&&$$$$$$&&&&&&&&&&&&&&&%%%%%%&&&&&&&&&&&&&&&((((((!!!!!!!!''''''''''''''''''######'''''''''''''''''''!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!))))))!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!))))))!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!))))))!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!))))))!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!))))))!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!))))))!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!))))))!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!))))))!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!*********************", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!*********************", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!*********************", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!*********************", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!*********************", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!*********************", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!))))))!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!))))))!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))))))!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))))))!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))))))!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))))))!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))))))!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!++++++!!,,,,,,,!!!!!!!!!!!!!!!!!------!!!!!!!......!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!++++++!!,,,,,,,!!!!!!!!!!!!!!!!!------!!!!!!!......!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!++++++!!,,,,,,,!!!!!!!!!!!!!!!!!------!!!!!!!......!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!++++++!!,,,,,,,!!!!!!!!!!!!!!!!!------!!!!!!!......!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!++++++!!,,,,,,,!!!!!!!!!!!!!!!!!------!!!!!!!......!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!++++++!!,,,,,,,!!!!!!!!!!!!!!!!!------!!!!!!!......!!!!!", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!((((((!!!!!++++++!!,,,,,,,!!!!!!!!!!!!!!!!!------!!!!!!!......!!!!!", - "////////////////////////////////////////%%%%%%//////////////////(((!!!!!+++++++++++++++++++++++++++!!!!!------------------------", - "////////////////////////////////////////%%%%%%//////////////////(((!!!!!+++++++++++++++++++++++++++!!!!!------------------------", - "////////////////////////////////////////%%%%%%//////////////////(((!!!!!+++++++++++++++++++++++++++!!!!!------------------------", - "////////////////////////////////////////%%%%%%//////////////////!!!!!!!!+++++++++++++++++++++++++++!!!!!------------------------", - "////////////////////////////////////////%%%%%%//////////////////!!!!!!!!+++++++++++++++++++++++++++!!!!!------------------------", - "////////////////////////////////////////%%%%%%//////////////////!!!!!!!!+++++++++++++++++++++++++++!!!!!------------------------", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,,,,,!!!!!!++++++!!!!!!!!!!!!!!!!!!......!!---", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,,,,,!!!!!!++++++!!!!!!!!!!!!!!!!!!......!!---", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,,,,,!!!!!!++++++!!!!!!!!!!!!!!!!!!......!!---", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,,,,,!!!!!!++++++!!!!!!!!!!!!!!!!!!......!!---", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,,,,,!!!!!!++++++!!!!!!!!!!!!!!!!!!......!!---", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,,,,,!!!!!!++++++!!!!!!!!!!!!!!!!!!......!!---", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,,,,,!!!!!!++++++!!!!!!!!!!!!!!!!!!......!!---", - " !!!!!!!!!!!!!!!!$$$$$$!!!!!!!!!!!!!!!%%%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,,,,,!!!!!!++++++!!!!!!!!!!!!!!!!!!......!!---", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!00000000000000000000000000000000", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!00000000000000000000000000000000", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!00000000000000000000000000000000", - " !!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!00000000000000000000000000000000", - " !!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!00000000000000000000000000000000", - " !!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!00000000000000000000000000000000", - " !!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!000", - " !!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!000", - " !!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!000", - " !!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!000", - " !!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!000", - " !!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!000", - " !!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!000", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!000", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!000", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!000", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!000", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!000", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!000", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!000", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!000000!!!!!!!!!!!!!!!000", - "55555555111111555555555555555555555555555555555555533333355555555555555555555555555555!!!!!!!!!!!!!!!!!!000000000000000000000000", - "55555555111111555555555555555555555555555555555555533333355555555555555555555555555555!!!!!!!!!!!!!!!!!!000000000000000000000000", - "55555555111111555555555555555555555555555555555555533333355555555555555555555555555555!!!!!!!!!!!!!!!!!!000000000000000000000000", - "55555555111111555555555555555555555555555555555555533333355555555555555555555555555555!!!!!!!!!!!!!!!!!!000000000000000000000000", - "55555555111111555555555555555555555555555555555555533333355555555555555555555555555555!!!!!!!!!!!!!!!!!!000000000000000000000000", - "55555555111111555555555555555555555555555555555555533333355555555555555555555555555555!!!!!!!!!!!!!!!!!!000000000000000000000000", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!111111!!!!!!!!!!!!!!!222222!!!!!!!!!!!!!!!!333333!!!!!!!!!!!!!!!444444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-spacing-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/text-spacing-512-512-1.0-grid-reference.json deleted file mode 100644 index 6c7be17f9..000000000 --- a/tests/visual_tests/grids/text-spacing-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "keys": [ - "", - "1", - "2", - "10", - "11", - "14", - "16", - "12", - "13", - "15", - "3", - "4", - "5", - "6", - "17", - "7", - "8", - "9" - ], - "data": {}, - "grid": [ - " !!!! #### $$$ %%% &&&&&&&&&&&& ", - " !!! #### $$$$ %%%% &&&&&&&&&&&&&& ", - " !!!! #### $$$$ %%% &&&&&&&&&&& ", - " !!! #### $$$$ %%%% &&&&&&&&& ", - " !!!! #### $$$$ %%% &&&&&&&& ", - " !!! #### $$$$ %%%% &&&&&& ", - " !!!! #### $$$$ %%% &&&&&& ", - " !!! #### $$$$ %%%% &&&&& ", - " !!!! #### $$$$ %%% &&&&& ", - " !!! #### $$$$ %%%% ' &&&&& ", - " !!!! #### $$$$ %%% ''''''''' &&&& ", - " !!! #### $$$$ %%%% '''''''''''' &&&& ", - " !!!! #### $$$$ %%% '''''''''''''' &&&& ", - " !!! #### $$$$ %%%% '''''''''' &&&& ", - " !!!! #### $$$$ %%% '''''''' &&&& ", - " !!! #### $$$$ %%%% ''''''' &&& ", - " !!!! #### $$$$ %%% ''''''' &&&& ", - " !!! #### $$$$ %%%% '''''' &&& ", - "!!!! #### $$$$ %%% ''''' &&&& ", - "!!! #### $$$$ %%%% ''''' &&& ", - "!!! #### $$$$ %%% ''''' &&&&", - "!! #### $$$$ %%%% ''''' &&&&", - "!!! #### $$$$ %%%% '''' &&&", - "!!! ### $$$$ %%%% '''' &&&", - "!!!! #### $$$$ %%%% '''' &&&", - "!!!! ### $$$$ %%%% '''' &&", - " !!!! #### $$$$ %%%% '''' &&", - " !!!! ### $$$$ %%%% ''' &&", - " !!!! #### $$$$ %%%% '''' &&", - " !!!! ### $$$$ %%%% ''' &&", - " !!!! #### $$$$ %%%% '''' &&", - " !!!! ### $$$$ %%%% ''' &&", - " !!!! #### $$$$ %%%% ''' &", - " !!!! ### $$$$ %%%% '''' ", - " !!!! #### $$$$ %%%% '''' ", - " !!!! ### $$$$ %%%% ''' ", - " !!!! #### $$$$ %%%% ''' ", - " !!!! ### $$$$ %%%% ''' ", - " !!!! #### $$$$ %%%% ''' ", - " !!!! ### $$$$ %%%% ''' ", - " !!!! #### $$$$ %%%% '''' ", - " !!!! ### $$$$ %%%% '''' ", - " !!!! #### $$$$ %%%% '''' ", - " !!!! ### $$$$ %%%% '''' ", - " !! # $$ %% ''' ", - " ''' ", - " ''' ", - " ''' ", - " ''' ", - " ''' ", - " '''' ", - " '''' ", - " (( )) ''' **", - " (((( )))) '''' **", - " (((( )))) '''' **", - " (((( )))) '''' **", - " (((( )))) '''' **", - " (((( )))) '''' **", - " (((( )))) '''' **", - " (((( )))) '''' **", - " (((( )))) ''''' ***", - " (((( )))) '''' ***", - " (((( )))) '''' ***", - "++++++++++++ (((( )))) '''' ****", - "+++++++++++++ (((( )))) ''''' *** ", - "++++++++++++ (((( )))) ''''' **** ", - " (((( )))) ''''' **** ", - " (((( )))) '''''' **** ", - " (((( )))) '''''' **** ", - " (((( )))) ''''''' **** ", - " (((( )))) '''''''' **** ", - " (((( )))) ''''''''''' **** ", - " (((( )))) ''''''''''''''' **** ", - ",,,,,,,,,,,,,,,,,,,,,, (((( )))) ''''''''''' ***** ", - ",,,,,,,,,,,,,,,,,,,,,,, (((( )))) '''''''' ***** ", - ",,,,,,,,,,,,,,,,,,,,,,, (((( )))) ***** ", - ",,,,,,,,,,,,,,,,,,,,,, (((( )))) ***** ", - " (((( )))) ***** ", - " (((( )))) ****** ", - " (((( )))) ******* ", - " (((( )))) ******* ", - " (((( )))) ********* ", - " (((( )))) ************* ", - " (((( )))) ************* ", - "---------------------------------- (((( )))) *********** ", - "---------------------------------- (((( )))) ***** ", - "---------------------------------- (((( )))) ", - " (((( )))) ", - " (((( )))) ", - " (((( )))) ", - " (((( )))) ", - " (((( )))) ", - " (((( )))) ", - " (((( )))) ", - " (((( )))) ", - "............................................ (((( )))) ", - "............................................. ((( ))) //////// ", - "............................................ ((( ))) ///////////// ", - " //////////////// ", - " /////// //////// /", - " ///// ////// //", - " ///// ////// ///", - " //// ////// ////", - " // ////// //// ", - " ///////// /////// ", - "00000000000000000000000000000000000000000000000000000000000000000 //////////////// ", - "000000000000000000000000000000000000000000000000000000000000000000 ////////////// ", - "000000000000000000000000000000000000000000000000000000000000000000 /////// ", - "00000000000000000000000000000000000000000000000000000000000000000 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", - "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", - "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - "22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222" - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-spacing-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/text-spacing-512-512-2.0-grid-reference.json deleted file mode 100644 index d6ad24460..000000000 --- a/tests/visual_tests/grids/text-spacing-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "keys": [ - "", - "1", - "2", - "10", - "11", - "14", - "16", - "12", - "13", - "15", - "3", - "4", - "5", - "6", - "17", - "7", - "8", - "9" - ], - "data": {}, - "grid": [ - " !!!!!!! ###### $$$$$$$ %%%%%%% &&&&&&&&&&&&&&&&&& ", - " !!!!!!! ####### $$$$$$$ %%%%%%% &&&&&&&&&&&&&&&&&&& ", - " !!!!!!!! ####### $$$$$$$ %%%%%%% &&&&&&&&&&&&&&&&&&&& ", - " !!!!!!! ####### $$$$$$$ %%%%%%% &&&&&&&&&&&&&&&&&&&& ", - " !!!!!!!! ####### $$$$$$$ %%%%%%% &&&&&&&&&&&&&&& ", - " !!!!!!! ####### $$$$$$$ %%%%%%% &&&&&&&&&&&& ", - " !!!!!!!! ####### $$$$$$$ %%%%%%% &&&&&&&&&&& ", - " !!!!!!! ####### $$$$$$$ %%%%%%% &&&&&&&&&& ", - " !!!!!!!! ####### $$$$$$$ %%%%%%% ''''''' &&&&&&&&& ", - " !!!!!!! ####### $$$$$$$ %%%%%%% '''''''''''' &&&&&&&&& ", - " !!!!!!!! ####### $$$$$$$ %%%%%%% '''''''''''''''' &&&&&&&&& ", - " !!!!!!! ####### $$$$$$$ %%%%%%% '''''''''''''''''' &&&&&&&&& ", - " !!!!!!!! ####### $$$$$$$ %%%%%%% ''''''''''''''''''' &&&&&&&& ", - " !!!!!!! ####### $$$$$$$ %%%%%%% ''''''''''''''''''''' &&&&&&&& ", - "!!!!!!!! ####### $$$$$$$ %%%%%%% '''''''''''''''''' &&&&&&&& ", - "!!!!!!! ####### $$$$$$$ %%%%%%% '''''''''''''' &&&&&&& ", - "!!!!!!! ####### $$$$$$$ %%%%%%% '''''''''''' &&&&&&& ", - "!!!!!! ####### $$$$$$$ %%%%%%% ''''''''''' &&&&&&&", - "!!!!!! ####### $$$$$$$ %%%%%%% '''''''''' &&&&&&&", - "!!!!! ####### $$$$$$$ %%%%%%% ''''''''' &&&&&&", - "!!!!! ####### $$$$$$$ %%%%%%% ''''''''' &&&&&&", - "!!!! ###### $$$$$$$ %%%%%%% '''''''' &&&&&", - "!!!! ####### $$$$$$ %%%%%% '''''''' &&&&&", - "!!!!! ####### $$$$$$ %%%%%% '''''''' &&&&&", - "!!!!! ######## $$$$$$ %%%%%% '''''''' &&&&", - "!!!!!! ####### $$$$$$ %%%%%% '''''''' &&&&", - "!!!!!! ######## $$$$$$ %%%%%% '''''''' &&&&", - "!!!!!!! ####### $$$$$$ %%%%%% ''''''' &&&&", - "!!!!!!! ######## $$$$$$ %%%%%% ''''''' &&&&", - " !!!!!!! ####### $$$$$$ %%%%%% ''''''' &&&&", - " !!!!!!! ######## $$$$$$ %%%%%% ''''''' &&&&", - " !!!!!!! ####### $$$$$$ %%%%%% ''''''' &&&", - " !!!!!!! ######## $$$$$$ %%%%%% ''''''' &&&", - " !!!!!!! ####### $$$$$$ %%%%%% '''''' &&", - " !!!!!!! ######## $$$$$$ %%%%%% '''''' ", - " !!!!!!! ####### $$$$$$ %%%%%% ''''''' ", - " !!!!!!! ######## $$$$$$ %%%%%% ''''''' ", - " !!!!!!! ####### $$$$$$ %%%%%% ''''''' ", - " !!!!!!! ######## $$$$$$ %%%%%% '''''' ", - " !!!!!!! ####### $$$$$$ %%%%%% '''''' ", - " !!!!!!! ######## $$$$$$ %%%%%% '''''' ", - " !!!!!!! ####### $$$$$$ %%%%%% '''''' ", - " !!!!!!! ####### $$$$$$ %%%%%% '''''' ", - " !!!!!! ###### $$$$$$ %%%%%% '''''' ", - " !!!!!! ###### $$$$$$ %%%%%% '''''' ", - " !!!! #### $$$$ %%%% '''''' ", - " '''''' ", - " ''''''' ", - " ''''''' ", - " ''''''' ", - " '''''' ", - " (((( )))) ''''''' ***", - " (((((( )))))) ''''''' ***", - " (((((( )))))) '''''' ***", - " (((((( )))))) ''''''' ****", - " (((((( )))))) ''''''' ****", - " (((((( )))))) ''''''' ****", - " (((((( )))))) ''''''' ****", - " (((((( )))))) ''''''' ****", - " (((((( )))))) '''''''' ****", - " (((((( )))))) ''''''' ****", - "++++++++++++ (((((( )))))) '''''''' *****", - "++++++++++++++ (((((( )))))) '''''''' *****", - "++++++++++++++ (((((( )))))) '''''''' *****", - "++++++++++++++ (((((( )))))) ''''''''' ******", - "++++++++++++++ (((((( )))))) '''''''''' ******", - "+++++++++++++ (((((( )))))) '''''''''' *******", - " (((((( )))))) ''''''''''' *******", - " (((((( )))))) ''''''''''''' ******* ", - " (((((( )))))) ''''''''''''''' ******** ", - " (((((( )))))) ''''''''''''''''''' ******* ", - " (((((( )))))) ''''''''''''''''''''' ******** ", - ",,,,,,,,,,,,,,,,,,,,,,,, (((((( )))))) '''''''''''''''''''' ******** ", - ",,,,,,,,,,,,,,,,,,,,,,,, (((((( )))))) '''''''''''''''''' ******** ", - ",,,,,,,,,,,,,,,,,,,,,,,,, (((((( )))))) ''''''''''''''' ********* ", - ",,,,,,,,,,,,,,,,,,,,,,,,, ((((((( ))))))) ''''''''''' ********* ", - ",,,,,,,,,,,,,,,,,,,,,,,,, ((((((( ))))))) '''' ********** ", - ",,,,,,,,,,,,,,,,,,,,,,,, ((((((( ))))))) ********** ", - " ((((((( ))))))) *********** ", - " ((((((( ))))))) ************* ", - " ((((((( ))))))) *************** ", - " ((((((( ))))))) ******************** ", - " ((((((( ))))))) ********************* ", - "----------------------------------- ((((((( ))))))) ******************* ", - "----------------------------------- ((((((( ))))))) ***************** ", - "----------------------------------- ((((((( ))))))) ************** ", - "----------------------------------- ((((((( ))))))) ********** ", - "----------------------------------- ((((((( ))))))) ", - "---------------------------------- ((((((( ))))))) ", - " ((((((( ))))))) ", - " ((((((( ))))))) ", - " ((((((( ))))))) ", - " ((((((( ))))))) ", - "............................................ ((((((( ))))))) ", - ".............................................. ((((((( ))))))) //// ", - ".............................................. ((((((( ))))))) ////////// ", - ".............................................. ((((((( ))))))) /////////////// ", - ".............................................. (((((( )))))) /////////////////// ", - "............................................. ((((( ))))) ///////////////////// //", - " //////////////////////// ///", - " ////////////////////////// ////", - " ////////// ///////////// /////", - " //////// //////////// ///////", - " /////// /////////////////////////", - "000000000000000000000000000000000000000000000000000000000000000000 ///// ///////////////////////", - "0000000000000000000000000000000000000000000000000000000000000000000 //////////////////////", - "0000000000000000000000000000000000000000000000000000000000000000000 /////////////////// ", - "0000000000000000000000000000000000000000000000000000000000000000000 //////////////// ", - "0000000000000000000000000000000000000000000000000000000000000000000 /////////// ", - "000000000000000000000000000000000000000000000000000000000000000000 /// ", - " ", - " ", - " ", - " ", - " ", - "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", - "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", - "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", - "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", - "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", - "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111", - " ", - " ", - " ", - " ", - "22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222", - "22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222", - "22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222" - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-ttc-font-600-400-1.0-grid-reference.json b/tests/visual_tests/grids/text-ttc-font-600-400-1.0-grid-reference.json deleted file mode 100644 index 85e04d5ee..000000000 --- a/tests/visual_tests/grids/text-ttc-font-600-400-1.0-grid-reference.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "keys": [ - "", - "1", - "9", - "2", - "10", - "3", - "11", - "4", - "12", - "5", - "13", - "6", - "14", - "7", - "15", - "8", - "16" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !!! !!! # # ### ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " $$ $ %% % ", - " $ $ $ $$$$ %% % %%%% ", - " $$ $$ $ $$$$ %% %% % %%%% ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " & & & ' ' ' ", - " & && & & &&& & ' '' ' ' ''''' ", - " & &&& && & && & ' ''' '' ''' '' ' ", - " ", - " ", - " ", - " ", - " ", - " ", - " ( (( ) )) ", - " ( ( (( (( ( (( (( ( ) ) )) )) ) )) ) ) ", - " (( ( ( ( (( ( ( (( )) ) ) ) )) ) ) )) ", - " (( (( ( ( ( ( ( )) ) ) ) ) ) ) ) ", - " ( (( (( ( (( ( ( ((( ) )) )) ) )) ) ) ))) ", - " ", - " ", - " ", - " ", - " ", - " ** * * *** ++ + + +++ ", - " ** * ****** ** * *** *** *** ++ + ++ +++ ++ + +++ +++ +++ ", - " * * ** * * * * ** * * * * + + ++ + + + + ++ + + + + ", - " * *** * * * * * * * * * ** + +++ + + + + + + + + + ++ ", - " * ** *** ***** *** *** * * *** + ++ +++ +++++ +++ +++ + + +++ ", - " ", - " ", - " ", - " ", - " ,, , ,,, -- - - ---- ", - " ,, , ,, ,,,, --- - - - - -- -- - - - ", - " ,,, , ,,,, ,,,,,,, ,, ,,,,,,,,,,,,---- - -------- ---- -- --------- ---- ", - " , ,,, ,, ,,,, ,, ,, ,,, ,,,, ,,,,,---- - -- -- - -- -- --- ---- - -- ", - " , ,,, ,, ,,,, , ,, ,, ,,,,,, ,, ,,-- --- - -- - -- -- --------- - ---- ", - " , ,, ,, ,,,, ,, ,, ,,,, , ,,,, ,,,,,-- -- -- -- - - -- - ---- ---- - -- ", - " , , ,,, ,, ,,, ,,,, ,,,,,, ,,,,,-- -- ---- ------- ------------ - ---- ", - " ", - " ", - " ", - " .. . .. .... // / // //// ", - " ... . ... ... .. .. ... .....///../ /// /// /// // /// ///// /// ", - " ... . .............. ... ..........///../ ////////////// /// //// ///// //// ", - " . .. . .. .. .. .. .. .... .... ./.// / // // // // // //// //// / // ", - " . ... . . .. .. .. .. ....... ./ //// / / // // // // /////// / /// ", - " . ... .. .. .. .. .. ... .... ./ /// // // // // // / / //// / / ", - " . .. ..... ... .... ..... ....... ./...// ///// /// //// ///// /////// / //// ", - " ", - " ", - " 00 00 0000 11 11 1111 ", - " 00 00 0 00000 11 11 1 11111 ", - " 000 00 000 0000 000 00 000 111001100111 1111 111 11 111 11111 1111 ", - " 0000 00 00000 0000 00000 000 00000 1111011011111 1111 11111 11 11111 111111 1111 ", - " 0 00 00 00 00 0 00 00 00000 00 1011011011 11 1 11 11 11111 11 11 11 11 ", - " 0 0000 0 00 0 00 0 000 00000 10 11110100 11 1 11 1 111 11111 11 11 1111 ", - " 0 0000 00 00 0 00 00 0 00 00 10 1111 110011 1 11 11 1 11 11 11 11 111 ", - " 0 000 00000 000 00000 00000 00000 10 111011111 111111111 11111 11111 11 11 11111 ", - " 0 00 0000 000 0000 00000 00000 10 111001111 111 1111 1111 11111 11 11 1111 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-ttc-font-600-400-2.0-grid-reference.json b/tests/visual_tests/grids/text-ttc-font-600-400-2.0-grid-reference.json deleted file mode 100644 index 84058b5ac..000000000 --- a/tests/visual_tests/grids/text-ttc-font-600-400-2.0-grid-reference.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "keys": [ - "", - "1", - "9", - "2", - "10", - "3", - "11", - "4", - "12", - "5", - "13", - "14", - "6", - "7", - "15", - "8", - "16" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " !! ! ## # ", - " ! ! ! !!!! # # #### ", - " !! !! ! !!!! ## ## # #### ", - " ", - " ", - " ", - " ", - " ", - " ", - " $ $$ % %% ", - " $ $ $$ $$ $ $$ $$ $ % % %% %% % %% % % ", - " $$ $$ $ $ $$ $ $$ %% % % % %% % % %% ", - " $$ $$ $ $ $ $ $ %% % % % % % % ", - " $ $$ $$ $ $$ $ $ $$$ % %% %% % %% % % %%% ", - " ", - " ", - " ", - " ", - " && & &&& '' ' ''' ", - " && & && &&&& '' ' '' '''' ", - " &&& & &&&& &&&&&&& && &&&&&&&&&&&&& ''' ' '''' ''''''' '' ''''''''''''' ", - " & &&& && &&&& && && &&& &&&& &&&&& ' ''' '' '''' '' '' '''' '''' ''''' ", - " & &&& && &&&& & && && &&&&&& && &&& ' ''' ' '''' ' '' '' '''''' '' ''' ", - " & && && &&&& && && &&&& & &&&& &&&&&& ' '' '' '''' '' '' '''''' '''' '''''' ", - " & & &&& &&& &&& &&&& &&&&&& &&&&&& ' ' ''' ''' ''' '''' '''''' '''''' ", - " ", - " ", - " (( (( (((( )) )) )))) ", - " (( (( ( ((((( )) )) ) ))))) ", - " ((( (( ((( (((( ((( (( ((( )))(())(())) )))) ))) )) ))) ))))) )))) ", - " (((( (( ((((( (((( ((((( (( ((((( ))))())())))) )))) ))))) )) ))))) )))))) )))) ", - " ( (( (( (( (( ( (( (( ((((( (( )())())()) )) ) )) )) ))))) )) )) )) )) ", - " ( (((( ( (( ( (( ( ((( ((((( )( ))))()(( )) ) )) ) ))) ))))) )) )) )))) ", - " ( (((( (( (( ( (( (( ( (( (( )( )))) ))(()) ) )) )) ) )) )) )) )) ))) ", - " ( ((( ((((( ((( ((((( ((((( ((((( )( )))())))) ))))))))) ))))) ))))) )) )) ))))) ", - " ( (( (((( ((( (((( ((((( ((((( )( )))(()))) ))) )))) )))) ))))) )) )) )))) ", - " *** ** ***+++ ++ ++++ ", - " *** ** ** ****+++ ++ ++ ++++++ ", - " **** ** ** ** ++++ ++ ++ +++ + ", - " ***** ** ****** ***** ***** *** ++++***++ ++++++ +++++**+++++ +++ +++++ ++++++ +++++ ", - " ** ** ** ****** ***** ******* *** ++ ++* ++ ++++++*+++++*+++++++ +++ ++ ++ +++++++ ++++++ ", - " ** *** ** *** *** ** ** ** ****++ +++ ++*+++ +++ ++* ++ ++ +++++ ++ ++ ++ +++ ", - " ** ** ** ** ** ** ** ** **++ ++*++*++* ++ ++**+++ ++ ++++ ++++++ ++ ++ +++++ ", - " ** **** ** ** ** ** ** ++ *+++++*++* ++ ++**+++ ++ ++ +++ ++ ++ ++ ++++ ", - " ** **** *** *** ** ** ** ++ **++++*+++ +++ ++ *++ ++ ,, ++ +++ ++ ++ ++ ", - " --- **-- *** ****** **** *******,,, ***-,,,--**+++* ++++++* ++++*+++++++ ++,,,,,,,,+++++ ++ ++ ++++++ ", - " ---- **-- *** **** -- *** ***** ,,,,*---,,,--**+++* *+++,,, *+++* +++++ +,,,,,,,,,+++++ ++ ++ +++++ ", - " ---- -- --- ,,,,,---,,,-- ,,, ,,,, ,, ", - " ----- -- ----- ------ ----- ,,,,,---,,, ,,,,,,, ,,,,,,,-,,,,,,,-- ,,, ,,,,,,, ,,,,,,,, ,,,,,,, ", - " ------ -- -------- ------ -------- ,,,,,,--,,, ,,,,,,,,, ,,,,,,,,,,,,,,,,-- ,,,, ,,,,,,,, ,,,,,,,,, ,,,,,,,, ", - " ------ -- --------------- ---------,, ,,,--,,, ,,,,-,,,, ,,,---,,,,-,,,,, ,,,,, ,,, ,,,, ,,,, ,,,, ,,, ,, ", - " -- ---- -- --- --- --- --- ---,, ,,,,-,,,- ,,, ,,, ,,, ,,,---,,,, ,,,,,,, ,,, ,,, ,,, ,,,, ", - " -- --- -- --- --- --- -- ---,, ,,,,,,,-,,,-----,,, ,,, ,,,----,,, ,,,,,, ,,,,,,,, ,, ,,, ,,,,,, ", - " -- ------ -- --- --- -- ---,, ,,,,,,-,,,-----,,, ,,, ,,, ---,,,- ,,,, ,,,,,,,,, ,, ,,, ,,,,,,, ", - " .... -- ...---- --- --- --- --- ////,, ,///,,.,,,,- ,,,, ,,, ,,, ,,,- ////// ,,,, ,,, ,, ,,, ,,,,, ", - " .... -- ...---- --- ---...-- --- ////,, -///,,..,,,- ,,, ///, ,,,-- ,,,,- /////////,,, ,,,, ,, ,,, ,,, ", - " ..... -- ...---- --------...----------/////, -///,,..,,,,,,,,, ///,,,,,,,,,,,,,-- ,/////////,,,,,,,,, ,, ,,, ,,,,,,,, ", - " ...... -- ... --- .-------...----- --.-////// -///,,- .,/,,,,,- ///,,,,-,,,/,,,,- . ,///,,,,/ ,,,,,,,,, ,, //, ,,,,,,,, ", - " ...... ... ....... ........ .....////// ///,, ///////,.////////,./////// .......///,,, ,//////// ,/////////,,,//////// ", - " ....... ... ......... ........ ....../////// ///. /////////.////////./////////.......//// //////// ////////// //////// ", - " ... .... ... .... .... ... .... ./// //// ///..//// ///// ./// ..//// .////... .////// /// /// ///// /// /// // ", - " ... .... ... .... ... ... ... ///.//// ///.//// //// /// ../// ..///.... /////// /// //// /// //// ", - " ... .... ... ... ... ... ... ///. //// ///.///.. ///../// ../// ..////..... /////// /////// /// /// ////// ", - " 0000 ... 000..... ... ... ... .1111 ///. 111/////0///00 ..///../// ../// ...///....... 111111 ///////// /// /// /////// ", - " 0000 ... 000..... ... ... ... .1111 ///. 111/////0///0000./// /// ../// ..//// .....1111111111//// // /// /// ///// ", - " 00000 ... 000..... .... ....00... .11111 ///. 111/////0////000////11/// ../// ../// ...1111111111// /// /// /// /// ", - " 000000... 000..... .... ....000... .111111/// 111/////00////0////111/// ..//// .////.. ./11111///11/// //// /// /// // /// ", - " 000000... 000.....000000....00000000.. 111111/// 111/////111111////11111111//.111111///00..../1111///// /////111111/// 111/111111/////1111111 ", - " 0000000.. 000 ...00000000..000000000..01111111// 111 //111111111//111111111//1111111110000.../1111//// //111111111// 11111111111///11111111 ", - " 00000000 000 0000000000 000000000 0011111111 111 01111111111 111111111011111111110000 001111100 1111111111 11111111111 111111111 ", - " 000 0000 000 00000 00000 000 00111 11110 111 111100011111 111 00011110001111000 000111111 11 1111 11111 111 111 11 ", - " 000 0000 000 0000 0000 000 000111 1111 111 111100001111 111 0111100001111000 00001111111 111 1111 111 1111 ", - " 000 00000 000 000 000 000 000111 11111 111 111000000111 111000011110000 111000 0000011111111 11111111 1111 111 1111111 ", - " 000 0000 000 000 000 000 000111 1111 111 111 000111 01110000111 000 111000 000000011111 1111111111 111 111 11111111 ", - " 000 0000000 000 000 000 000111 01111111 111 00111001110000111 000 111000 0000001111 11111111111 111 111 111111 ", - " 000 0000000 0000 0000 000 000111 01111111 111 111100111 01111000 111000 00000111 1111 111 111 111 11111 ", - " 000 000000 0000 0000 000 000111 000111111 1111 111100111 001111000 1111000 000111 111 1111 111 111 1111 ", - " 000 00000 00000 0000 0000 00 00111 0000111111 01111011111 001111011011111011111000 0011111111111 1111 11111 111 111 111 11111 ", - " 000 00000 0000000000 0000000 0011100000 11111 01111111111 00111111101111111111 000 001111111111 11111111111 111 111 111111111 ", - " 000 0000 00000000 000000 01110000 1111 0011111111 001111110011111111 000 00111111111 1111111111 111 111 111111111 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-typographic-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/text-typographic-512-512-1.0-grid-reference.json deleted file mode 100644 index cd1fdc816..000000000 --- a/tests/visual_tests/grids/text-typographic-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "keys": [ - "2", - "", - "1" - ], - "data": {}, - "grid": [ - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###########!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!############!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##########!!!!", - " ! ! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!!!!!!!!!!", - " ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!#########", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##!!#!!!!!!!!", - " !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!", - "!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!", - "!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!#!!!!!!!!", - "!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!!!!", - "!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!!!!", - "!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!!!!", - "!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##!#######!!!!!!!", - "!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!############!!!!!!!", - "!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!########!###!!!!!!!", - "!!!!!!!! !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###############!!####!!!!!!", - "!!!!!!!! !!!! !!! !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!!####!##!!######!!!!!!", - "!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!###############!!!!!!!", - "!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##!!###############!!!!!!!", - "!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#############!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##!!##!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##!###!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##################!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###############!###!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!! !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###############!###!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#############!!!####!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!###############!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!###############!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!###############!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!##!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!##!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##!####!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !! !!!!!!!!!!!!!!!!!!!!!!!!!!#############!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!#############!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!##############!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !! !!!!!!!!!!!!!!!!!!!!!!!##############!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!###!!##############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!###!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!###!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!###!##!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!####!##!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!###!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!###!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!#######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!##!!!!!!!####!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!##########!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! ###########!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! ###########!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! !!!!!! !!!!###!##!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!#############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!##############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !##############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !##!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ####!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##!! ####!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######### !# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!########## !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!!#### # # # !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!######## ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!######## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!############# ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!#!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##!!!!!!!########!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#####!##!#########!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!##!#####!###!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!########!!!###!!!####!!!!!!!!!!!!!! !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!!####!##!!######!!!!!!!!!!!!!! !!!! !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!###############!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!###############!!!!!!!!!!!!!!!!! !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!#############!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!##!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!##!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!##!##!!#######!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!#######!!#######!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!#####!!!!######!!####!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!####!!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!###!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!###!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! ! !!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!###!##!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!####!##!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!####!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!###!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!##!####!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!##########!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!", - "!!!!!!!!!!!!!###############!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!", - "!!!!!!!!!!!!####!##########!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!", - "!!!!!!!!!!!!###!!###!####!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!", - "!!!!!!!!!!!####!!##############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!! !!!!!!!!!!!", - "!!!!!!!!!!!####!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!", - "!!!!!!!!!!!!###!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!! !! !!!!!!!!!!!", - "!!!!!!!!!!!!###!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!", - "!!!!!!!!!!!!###!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!", - "!!!!!!!!!!!!###!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!", - "!!!!!!!!!!!!###!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!", - "!!!!!!!!!!!!###!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!", - "!!!!!!##!!!!###!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!!!!!!!!!!!", - "!!!############!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!!!!!!!!!!!" - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-typographic-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/text-typographic-512-512-2.0-grid-reference.json deleted file mode 100644 index 83c913e42..000000000 --- a/tests/visual_tests/grids/text-typographic-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "keys": [ - "2", - "", - "1" - ], - "data": {}, - "grid": [ - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#####!####!!!", - " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!################", - "! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#############!!!", - "! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#########!###!!!", - "! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#########!!!!!!!", - "!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!!!!!!", - " !!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!!!!!", - " ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!!####", - " ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!######", - " ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!######", - " ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!#######", - " ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!###########!!######!", - "!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!!###########!!######!", - "!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#####!!###########!!######!", - "!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!################!!!#######!", - "!! !!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!################!!!#######!", - "!! !!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#################!!!#######!", - "!! !!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!########!!!!#######!", - "!! !!!!!! !!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!#####!!!!!######!", - "!! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!################!", - "!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!###############!!", - "!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!#################!!", - "!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!##################!!", - "!!!!!!! ! !!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!########!###############!!!!!", - "!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!#########!###############!!!!!", - "!!!!!!!!!!!!!!! !!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!!##################!!!!###!!!!!!!", - "!!!!!!!!!!!!!!! !!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!########################!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!########!##################!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##################!!!#######!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##########!!######!!!#######!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!! !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!########!!!!!####!!!!#######!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!! !!! !!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!########!!!!!!!!!!##########!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!! ! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!################!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!################!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##########################!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!! !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##########################!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#########################!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!##!!!###########!!###############!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!####!!############!#########!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!##################!!!#####!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!##################!!!#####!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!! !!!!!!!!!!!!!!!!!!!!!###############!!!!!!#####!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!! !!!!!!!!!!!!!!!!!!!!################!!!!!!#####!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!! !!!!!!!!!!!!!!!!!!!!#######!!!!!!!!!!!!!#######!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!! !!!! !!!!!!!!!!!!!!!!!!!!#######!!!!!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!!!!!!!!!!!!!!!!!!!#######!!!!!#############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!#######!!!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!#######!!################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!#######!!################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!#######!!################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!##########!!!############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!###########!!!##!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! ##############!!!##!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!###########!!#####!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!########!!!!!#####!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!! !!!########!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! !!!!!!!!!!!!!!#######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! !!!!!!!!!!!!!!#######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!! !!!!################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!###################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!###################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!! !# !#################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##### ###########!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######### !###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!############ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#### ##### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#### ####! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#### ####! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#### !!! ###### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##### ### ###### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##### ### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##### ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######! # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!####!!!!# # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##!!!###########!!!!# # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!###########!!!!####!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!################!!!!!##!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#################!!!######!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!################!!!######!!! !!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!##################!!!######!!! !!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###############!!!!!!######!!! !!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!!!!!!!!!!#######!!! !!!! !!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#######!!!!!!!###########!!!!! !!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!######!!!!################!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#!!!!###################!!!! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#!!!!###################!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#!!!!#################!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!#!!!!##############!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!####!!###!!!#!!!!#########!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!!!!#############!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!########!####!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! !!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!##############!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! !!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!##########!!!!!!!!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!########!!!!!!!!!!!!!#######!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!########!!!!!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!#######!!!!!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! !!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!#######!!!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!#######!!!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!#######!#################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!!!!!!!!!!!!#######!#################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!!!!!!!!!", - "!!!!!!!!!!!!##!!!###########!!!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!", - "!!!!!!!!!!!####!!############!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!", - "!!!!!!!!!!!##################!!#######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!", - "!!!!!!!!!!!##################!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!", - "!!!!!!!!!!!###############!!!!!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !!!!!!!!!!", - "!!!!!!!!!!################!!!!#######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!! !!!!!!!!!!", - "!!!!!!!!!!#######!!!!!!!!!!!!!#######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!! ! !!!!!!!!!!!", - "!!!!!!!!!!#######!!!!!!!!####!#######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!! !!!!!!!!!!!!", - "!!!!!!!!!!#######!###!!##############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!! !!!!!!!!!!!", - "!!!!!!!!!!#######!###################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! !!!!!!!!!!!", - "!!!!!!!!!!#######!################!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!!!!!!!!!!", - "!!!!!!!!!!#######!!##############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!!!!!!!!!!", - "!!!!!!!!!!#######!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!! !!!!!!!!!!!!", - "!!!!!!##########!!###############!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!! !!!!!!!!!!!!", - "!!!!!!###########!######!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!! !!!!!!!!!!!!" - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-upright-800-800-1.0-grid-reference.json b/tests/visual_tests/grids/text-upright-800-800-1.0-grid-reference.json deleted file mode 100644 index 732cd5075..000000000 --- a/tests/visual_tests/grids/text-upright-800-800-1.0-grid-reference.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "keys": [ - "", - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ! ", - " !!! ", - " !!!!! ", - " !!!!!!! ", - " !!!!!!!!! ", - " !!!! !!!!! ", - " !!!! !!!!! ", - " !!!! !!!!! ", - " !!!! !!!!! ", - " !!!! # !!!!! ", - " !!!! ### !!!!! ", - " !!!! ##### !!!!! ", - " !!!! ####### !!!!! ", - " !!!!! ######### !!!!! ", - " !!!!!! ##### ##### !!!!! ", - " !!!! ##### ##### !!!!! ", - " !!!!! ##### ##### !!!!! ", - " !!!!! ##### ##### !!!!! ", - " !!!!! ##### ##### !!!!! ", - " !!!! ##### $ ##### !!!!! ", - " !!!!! ##### $$$ ##### !!!!! ", - " !!!!! ##### $$$$$ ##### !!!!! ", - " !!!! ##### $$$$$$$ ##### !!!!! ", - " !!!!! ##### $$$$$$$$$ ##### !!!!! ", - " !!!! ##### $$$$ $$$$$ ##### !!!!! ", - " !!!! ! ##### $$$$ $$$$$ ##### !!!!!! ", - " !!!! ##### $$$$ $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ % $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%%%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% & %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&&&&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& &&&&& %%%%% $$$$$ ##### !!!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& & '' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& '''''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& '''''''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& ''''' '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& ''''' '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& ''''' '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& ''''' '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((((( '''' &&&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& & ''''' (((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( (((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& ''''' (((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& ''''' ((((( (((((( '''' &&&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ", - " !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((( ''' &&& %% $$$ ## !!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( '''''' &&&&& %%%% $$$$$ #### !!!!!! ", - " !!!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!!! ##### $$$$$ %%%%% &&&&& ' '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((((((( ''''' &&&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ((( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ( ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!!! ##### $$$$$ %%%%% &&&&& '''' ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& '''' '''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& ''''''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& ''''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!!! ##### $$$$$ %%%%% &&&&& ''''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!!! ##### $$$$$ %%%%% &&&&& ''' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!!! ##### $$$$$ %%%%% &&&&& ' &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&&& &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!!! ##### $$$$$ %%%%% &&&&& &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&&&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&&&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% &&& %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% & %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%% %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%%%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %%%% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ %% $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$ $$$$$ #### !!!!! ", - " !!!!! ##### $$$$$$$$$ #### !!!!! ", - " !!!!!! ##### $$$$$$$ #### !!!!!! ", - " !!!!! ##### $$$$$ #### !!!!! ", - " !!!!!! ##### $$$ #### !!!!! ", - " !!!!! ##### $ #### !!!!! ", - " !!!!! ##### #### !!!!! ", - " !!!!! ##### #### !!!!! ", - " !!!!!! ##### #### !!!!! ", - " !!!!! ##### #### !!!!! ", - " !!!!! ##### #### !!!!! ", - " !!!!!! ######## !!!!! ", - " !!!!! ###### !!!!! ", - " !!!!!! #### !!!!!! ", - " !!!!! ## !!!!! ", - " !!!!! !!!!! ", - " !!!!! !!!!! ", - " !!!!! !!!!! ", - " !!!!! !!!!! ", - " !!!!! !!!!! ", - " !!!!!!!!! ", - " !!!!!!! ", - " !!!!! ", - " !!! ", - " ! ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-upright-800-800-2.0-grid-reference.json b/tests/visual_tests/grids/text-upright-800-800-2.0-grid-reference.json deleted file mode 100644 index 67bbbf6b3..000000000 --- a/tests/visual_tests/grids/text-upright-800-800-2.0-grid-reference.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "keys": [ - "", - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "data": {}, - "grid": [ - " ", - " ! ", - " !!! ", - " !!!!! ", - " !!!!!!! ", - " !!!!!!!!! ", - " !!!!!!!!!!! ", - " !!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!!!! ", - " !!!!!!!!!###!!!!!!!!! ", - " !!!!!!!!!####!!!!!!!!!! ", - " !!!!!!!!!#######!!!!!!!!! ", - " !!!!!!!!!#########!!!!!!!!! ", - " !!!!!!!!!##########!!!!!!!!!! ", - " !!!!!!!!!#############!!!!!!!!! ", - " !!!!!!!!!##############!!!!!!!!!! ", - " !!!!!!!!!#################!!!!!!!!! ", - " !!!!!!!!!!!####### #######!#!!!!!!!!! ", - " !!!!!!!!!######### $ #######!#!!!!!!!!! ", - " !!!!!!!!!######### $$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% & %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ", - " !!!!!!!!!#!####### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #######!#!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ", - " !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ", - " !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ", - " !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ", - " !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ", - " !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&'''''''' ((((((((( ( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'&''''''' ((((((((( ((((((((( '''''''&'&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&''''''' ((((((((( ( ((((((((( '''''''&&&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ", - " !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!!!#######$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #######!!!!!!!!!!! ", - " !!!!!!!!!#!####### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #######!#!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''' &&&&&&&&& %%%%%%%% $$$$$$$$$ ######## !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((( '''''' &&&&&&& %%%%%% $$$$$$$ ###### !!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((( ''''' &&&&& %%%%% $$$$$ ###### !!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((( ''''''' &&&&&&& %%%%%%% $$$$$$$ ######## !!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&'&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&'&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%%%$$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " ! !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!!! ", - " !! !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''& &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ! ", - " !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''& &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ", - " !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&''''''' ((((((((( ((((((((('''''''''&&&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'&''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ", - " !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ", - " !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((((((((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ", - " !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((((((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((((((((((''''''''''&&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((((((((''''''''' '&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((((((''''''''' &'&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ", - " !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ", - " !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " ! !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !! !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&& &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%%%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$%% $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$ $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$$$######### !!!!!!!!! ", - " !!!!!!!!!######### $$$######### !!!!!!!!! ", - " !!!!!!!!!######### $######### !!!!!!!!! ", - " !!!!!!!!!################## !!!!!!!!! ", - " !!!!!!!!!################ !!!!!!!!! ", - " !!!!!!!!!############## !!!!!!!!! ", - " !!!!!!!!!############ !!!!!!!!! ", - " !!!!!!!!!########## !!!!!!!!! ", - " !!!!!!!!!!######## !!!!!!!!! ! ", - " !! !!!!!!!!!###### !!!!!!!!!! ", - " ! !!!!!!!!!#### !!!!!!!!!! ", - " !!!!!!!!!!## !!!!!!!!! ", - " !!!!!!!!!! !!!!!!!!!! ", - " !!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!! ", - " !!!!!!!!! ", - " !!!!!!! ", - " !!!!! ", - " !!! ", - " ! " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-vertical-alignment-800-800-1.0-grid-reference.json b/tests/visual_tests/grids/text-vertical-alignment-800-800-1.0-grid-reference.json deleted file mode 100644 index dd3bd2a2a..000000000 --- a/tests/visual_tests/grids/text-vertical-alignment-800-800-1.0-grid-reference.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "keys": [ - "", - "9", - "8", - "4", - "5", - "7", - "16", - "6", - "12", - "2", - "10", - "13", - "14", - "11", - "3", - "15", - "1" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! ", - " !!!! ", - " !!!!!!! !!!!! ", - " !!!!!!!!! !!!!!!! !!! ", - " !!!!!! !!!!! ! !!!!!!!! !!!!! ", - " !!!!!! !!!!!! ! !!!!!!!!!!!! !!!!!!!! ! ", - " !!!!!! !!!!! !!!!!!!!!!!!!!!! !!!!!!!!!! !!!! ", - " !!!!!! !!!!! !!!!!!! ! !!!!!!! !!!!! !!!!!! !!!!!! ", - " !!!!!! !!!!!! !!!!!!! ! !!!!!!!!! !!!!!! !!!!! !!!!! ", - " !!!!!!! !!!!!! !!!!!!! ! !!!!!!!! !!!!!! !!!!! !!!!!! ", - " !!!!!! !!!!! !!!!!!! ! ! !!!!!! !!!!! !!!!! !!!!!! ", - " !!!!!!! !!!!! !!!!!!! !!!!!!!!! !!!!!! !!!!!! !!!!! ", - " !!!!!! !!!!!! !!!!!!! !! !!!!!!! !!!!!! !!!!! !!!!!! ", - " !!!!! !!!!!! !!!!!!! !!!!!!! ! !!!!! !!!!! !!!!!! ", - " !!!! !!!!! !!!!! ! ! !!!!!!! !!!!!!! !!!!!! !!!!! ", - " !! ! !!!!! !!!!!! !!!!!!! !!!!!! !!!!!! !!!!!! ", - " !! !!!!!! !!!!! !!!!!!! !!!!!!! !!!!! !!!!! ", - " !!!!!! !!!!!! ! !!!!!!! !!!!!!! !!!!! !!!!!! ", - " !!!!! !!!!!! !!!!!!!!!!!!! !!!!!!!!!!! ", - " !!!!!!!!!!! !!!!!!!!!! !!!!!!!! ", - " !!!!!!!!! ! !!!!!!! !!!!! ", - " !!!!!! !!!!! !!! ", - " ### !!! # ! !!!! $$$ ", - " ##### ! # ##### ! $$$ ", - " ######## # ####### ## # $$$ ", - " ########### ############ ##### # ## $$$ ", - " ###### ###### ############### ######## #### $$$ ", - " ####### ##### ###### ## ##### ########## ##### $$$ ", - " ###### ##### ###### ######### ##### ##### ##### $$$ ", - " ###### ###### ######## ######### ###### ###### ###### $$$ ", - " ###### ###### ##### ## ### ##### ###### ###### ###### $$$ ", - " % ###### ##### ####### # ##### ##### ##### ##### $$$ ", - " % ####### ##### ##### # # ####### ##### ###### ###### $$$ ", - " % ###### ###### ###### ## # ###### ###### ###### ##### $$$ ", - " % #### ##### ###### # ######### ##### ##### ###### $$$ ", - " %%% ## ##### ###### # ######### # ##### ###### ###### $$$ ", - " %%% ###### ###### # ####### ###### ##### ##### $$$ ", - " %%% ###### ###### ## ###### ###### ###### ###### $$$ ", - " %%% ##### ###### # ####### ###### ########### $$$ ", - " %%% ##### ###### ############### ####### $$$ ", - " %%% ###### ##### # ########### ##### $$$ ", - " %%% ########### ########### # ## $$$ ", - " %%% ######## # ###### # $$$ ", - " %%% ##### ##### # $$$ ", - " %%% ### ## # # $$$ ", - " %%% & # $$$ ", - " %%% && &&&&& &&&&&&& $$$ ", - " %%% &&&&&&& &&&&&&&&& &&&&&&&&&& $$$ ", - " %%% &&&&&&&& &&&&&&&&&&& &&&&&&&&&&&&&&& &&&&&&&&&&&&& $$$ ", - " %%% &&&&&&&&&&& &&&&&&&&&&&&&& &&&&&&&&&&&&&&&&& &&&&&&&& &&&&& $$$ ", - " %%% &&&&&&&&&&&&&& &&&&&&& &&&&&&& &&&&&&& &&&&&&&&& &&&&&& &&&&& $$$$ ", - " %%% &&&&&&& &&&&& &&&&&&& &&&&&& &&&&&&&& && &&&&& &&&&& &&&&& $$$$ ", - " %%% &&&&&& &&&& &&&&&& &&&&&& &&&&&&& & &&&&& &&&&& &&&& $$$$ ", - " %%% &&&&&& &&&&& &&&&& &&&&&& &&&&&&& & &&&& &&&&&& &&&& $$$$ ", - " %%% &&&&& &&&& &&&&& &&&&&& &&&&&& && &&&& &&&&& &&&& && $$$$ ", - " %%% &&&&& &&&& &&&&& &&&&&& &&&&&&& &&&&&& &&&&& &&&&& &&&&& $$$$ ", - " %%% &&&& &&&& &&&&&& &&&&&& & &&&&&&&& &&&&& &&&&&& &&&&&&&&&&&&&& $$$$ ", - " %%% && & &&&&& &&&&&&& &&&&&& &&&&&& &&&&&&&&&&&&& &&&&&&&&&&& $$$$$ ", - " %%% && &&&&&&&&&&&&& &&&&&&&&&&&&&&& &&&&&&&&&& &&&&&&&&& $$$$ ", - " %%% &&&&&&&&&&& &&&&&&&&&&& & &&&&&& &&&& $$$$ ", - " %%%% &&&&&&& & &&&&&& & $$$$$$ ", - " %%%% && && & $$$$$ ", - " %%%% $$$$ ", - " %%%% $$$$ ", - " %%%% '''''''' $$$$$ ", - " %%%%%% ''''''''''' $$$$$ ", - " %%% '''''''' $$$$$ ", - " %%%% ''' $$$$ ", - " %%%% ''''''''''''''''''''''''' $$$$ ", - " %%%%% ''''''''''''''''''''''''' $$$$ ", - " %%%% (( (( ''''''''''''''''''''''''' $$$$$ ", - " %%%% ((((((((( (((((((( ''''''''''''''''''''''''' $$$$ ", - " %%% % (((((( ((((((((( (((((((((((( (((((((((((( $$$$ ", - " %%% (((((((((( (((((((((((( ((((((((((((((( (((((((((((((( $$$$$ ", - " %%%% (((((((((((((( (((((((((((((((( (((((((((( (((((( ((((((( (((( $$$$ ", - " %%%% ((((((( (((((( ((((((( (((((( ( ((((((( ((((( ((((( (((((( (((( $$$$$ ", - " %%%%% ((((((( (((( (((((( (((((((( (((((((( (( (((( ((((( (((( ( $$$$ ", - " %%% % (((((( (((( (((((( (((( (((((( ( ((((((( ((((( ((((( (( $$$$ ", - " %%% ((((( (((( ((((( ( ((((( (((((((( (((((( (((((( (((( ((( $$$$ ", - " %%%% ((((( (((( ((((( (((((( ( (((((((( (((((( ((((( (((( (((( $$$$$ ", - " %%%% (((( (((( (((((( (((((( ( ((((((( ((((( (((((( ((((( (((((( $$$$$$ ", - " %%%%% (( ((((( (((((( (((((( (((((((( (((((((((((((( ((((((((((((( $$$$ $ ", - " %%%% (((((( (((((( ) ((((((((((((( ( (((((((((((( ((((((((( $$$$ ", - " %%% ((((((((((( * ) ((((((((((((( ( (((((((( (((((( $$$$ ", - " %%% (((((((( **** ) (( ((((((( ( ((( $$$$$ ", - " %%%%%% (((( ***** ))) ( (((( (( $$$$$ ", - " %%%%% ***** ))) (( ( ++++++++++++ + + $$$$ ", - " %%%% ****** ))) +++++++++++++++++++++++++++++++++++++ ++ $$$$ ", - " %%%% ******* )))) ,,, +++++++++++++++++++++++++++++++++++++ ++ $$$$$ ", - " %%%% ****** )))) ,,, +++++++++++++++++++++++++++++++++ + $$$$$ ", - " %%%%% ****** ))) ,,, ------ +++++++++++++++++ $$$$$ ", - " %%%% ******* ))) ,,,, --------------------------------- + +++++++ $$$$ ", - " %%%% ****** ))) ,,,, ----------------------------- ++++++ + $$$$ ", - " %%%% ******* ))) ,,, ----------------------------- +++++ + $$$$$ ", - " %%%%% ****** )))) ,,, +++++ $$$$ ", - " %%%%% ****** )))) ,,, ++++++ $$$$ ", - " %%%% ******* ))) ,,, +++++ $$$$$ ", - " %%%% ******* ))) ,,, .. . ++++ $$$$ ", - " %%%% ****** ))) ,,,, . ... ................................. ++++ $$$$$ ", - " %%%% ******* ))) ,,,, ............................................ ++++ $$$$ ", - " %%%% ******** )))) ,,, ........................................... ++++ $$$$$$ ", - " %%%% ***** )))) ,,, . ................. ++++++ $$$$ ", - " %%%% ******* ))) ,,, ....... . . ++++++ $$$$$ ", - " %%%% * ****** ))) ,,, ..... . . ++++++ $$$$ ", - " %%%%% ***** ))) ,,,, .... . ++++ $$$$ ", - " %%%%%% ******* //////// ))) ,,,, . ... . ++++ $$$$ ", - " %%%% ******* /////////////// ))) ,,,, ..... +++++ $$$$ ", - " %%%%% ****** ////////////////////// )))) ,,, ...... ++++ $$$$ ", - " %%%%% ******* ////// ////////////// )))) ,,, ...... ++++ $$$$ ", - " %%%% ******* //////// ///////// ))) ,,, ..... +++++ $$$$ ", - " %%%% ****** // ///// //// ))) ,,, ..... ++++++ $$$$ ", - " %%%% ****** //////// ///// ))) ,,,, .. ..... 00000000000000000000000000000 +++++ $$$$ ", - " %%%% ******* / ////// //// ))) ,,,, .... 000000000000000000000000000000000 ++++ ++ $$$$ ", - " %%%% ***** / /////// //// ,,, .... 00000000000000000000000000000 +++ $$$$ ", - " %%%% ***** /////// //// ,,, ..... +++ $$$$ ", - " %%%% *** ////// ///// ,,, ...... +++++ + $$$$ ", - " %%% * ///// //// ,,, ..... +++++ $$$$ ", - " %%% /////// //// ,,, ... ++++++ $$$$ ", - " %%% ///// //// ,,, ..... +++++ $$$$ ", - " %%% ////// ///// ..... +++++++ $$$$ ", - " %%% /// //// ..... ++++++++++++++++ + ++++++ ++++ + $$$$ ", - " %%% //// /// ... . ++++++++++++++++++++++++++++++++++++++++++++++ $$$$ ", - " %%% //// /// . ..... +++++++++++++++++++++++++++++++++++++++++++++ $$$$ ", - " %%% /////// //// ...... +++++++++++++++++++++++++++++++++ + $$$$ ", - " %%% ///// //// .... ++ +++ + $$$$ ", - " %%% ///// //// ..... + +++ $$$$ ", - " %%% /////// /// ...... $$$$ ", - " %%% / //// /// ..... . $$$$ ", - " %%% ////// /// ....... $$$$ ", - " %%% ////// /// ...... $$$$ ", - " %%% ////// //// ....... ... . $$$$ ", - " %%% //// //// . .......... $$$$ ", - " %%% /// /// . .......................................... $$$$ ", - " %%% ////// /// ........................................... $$$$ ", - " %%% ////// /// ......................................... $$$$ ", - " %%% ///// /// . .. $$$$ ", - " %%% /////// /// .. $$$$ ", - " ////// //// $$$$ ", - " ///// ///// $$$$ ", - " / ///// ///// $ ", - " / ///// ////// $ ", - " /////// ////// $ ", - " ///// ///// ", - " ////// / ////// ", - " / /////// / ////// 1 ", - " ///////////// ///// 1 1 1 11 11 1 111 1111 1 11 11 11 ", - " /////////////////////// 11111111111111111111111111111111111111111111111111 ", - " ///////////////////// 111111111111111111111111111111111111111111111111111111 ", - " / / ///////////// 11111111111111111111111111111111111111111111111111 ", - " / / //// 1111111111 ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-vertical-alignment-800-800-2.0-grid-reference.json b/tests/visual_tests/grids/text-vertical-alignment-800-800-2.0-grid-reference.json deleted file mode 100644 index eb84e71a3..000000000 --- a/tests/visual_tests/grids/text-vertical-alignment-800-800-2.0-grid-reference.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "keys": [ - "", - "9", - "8", - "4", - "5", - "7", - "16", - "6", - "2", - "10", - "12", - "13", - "14", - "11", - "3", - "15", - "1" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! ", - " !!!! ! ! ", - " !!!!!! ! !!!! ! ", - " !!!!!!!!! !!!!!! ! !!!!!! ", - " !!!!!!!!!!! !!!!!!!!!!! !!! !!!!!! ", - " !!!!!!!!!!!!!!! !!!!!!!!!!!!!! !! !!!!!!! ", - " !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! ! ! !!!!!!!!!!!!! !! ", - " !!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!! !!!! ", - " !!!!!!!!!!!! !!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!! !!!!!! ", - " !!!!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!! ! ! ! !!!!!!!!!!!!!!!!!! ! !!!!!!!! ", - " !!!!!!!!!!!! !!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!! ", - " !!!!!!!!!!! !!!!!!!!!! ! !!!!!!!!!!!!!! !!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!! ", - " !!!!!!!!!!!! !!!!!!!!!! ! ! !!!!!!!!!!!! !!! !!!!!!!!!!! !!!!!!!!!!! ! !!!!!!!!!! !!!!!!!!!!! ", - " !!!!!!!!!!! !!!!!!!!!!! ! !!!!!!!!!!!! !!! ! ! !!!!!!!!!!!! !!!!!!!!!!! ! ! !!!!!!!!!! !!!!!!!!!!! ", - " !!!!!!!!!!! !!!!!!!!!!! ! !!!!!!!!!!!!!! ! !!!!!!!!!!! ! !!!!!!!!!!!!!! !! !!!!!!!!!! !!!!!!!!!! ", - " !!!!!!!!! !!!!!!!!!! ! !!!!!!!!!!!! ! !!!!! !!!!!!!!!!! !!!!!!!!!!!! ! !! !!!!!!!!!!! !!!!!!!!!!! ", - " !!!!!!!! !!!!!!!!!! !! !!! !!!!!!!!!!!! !! ! ! !!!!!!!!!!!!!!! !! !!!!!!!!!! ! ! ! !!!!!!!!!! !!!!!!!!!!! ", - " !!!!!!! !!!!!!!!!!! !!! !!!!!!!!!!!!!! ! !! ! !!!!!!!!!!! ! !!!!!!!!!!!! !! !!!!!!!!!! !!!!!!!!!! ", - " !!! !!! !!!!!!!!!!!! !!!!!!!!!!! ! !! ! !!!!!!!!!!! !!!!!!!!!!! ! ! !!!!!!!!!!!!!!!!!!!!! ", - " !!! !!!!!!!!!! !!!!!!!!!!! !!! ! !!!!!!!!!!!!!!!!!!!!! ! !! !!!!!!!!!!!!!!!!!!! ", - " !! !!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!! !! !!!!!!!!!!!!!!! ", - " !!!!!!!!!!!!!!!! !!!! ! !!!!!!!!!!!!!!! ! !!!!!!!!!!!!! ", - " ## !!!!!!!!!!!!! !! ## ! !!!!!!!!!!!!! !! !!!!!!!!!!! ", - " ##### !!!!!!!!!!!!! ! # ##### # ! !!!!!!!!!! !!!!!!! ", - " ######## !!!!!!!!!!! ! ! # ###### ## ! !!!!!!!!! ! ! ### !!!!! $$$$$$ ", - " ########## !!! !!!!!! ! ########## # ! !!!!! ! ! ######## !! $$$$$$ ", - " ############## !!!!! !! ############## # ! !! ! ######### # $$$$$$ ", - " ################ ! ! # ############## ! ! ### ########## #### $$$$$$ ", - " ################### !!! ###################### # ############ ##### $$$$$$ ", - " ##################### # # ###################### ################ ####### $$$$$$$ ", - " % ############ ########### # ############ ########## ################### ########## $$$$$$ ", - " % ############ ########## ############ ############### ##################### ########### $$$$$$$ ", - " % ############ ########## ## ############ ## ############ ########### ############ ########### $$$$$$$ ", - " % ############ ########### ############## ## ## ############ ### ############# ########### ########### $$$$$$ ", - " % ########### ########## # ########### # ## # # ############## ############ # # ########## ########## $$$$$$$ ", - " % ######### ########## ############ # # ## # # ########## # ########## # ## # ############ ########### $$$$$$ ", - " % ###### ########## ############# # ## # ############## ############# ### # # ########### ########### $$$$$$$$$ ", - " %%%%%%% ##### ########### # ############### # ########## # ############### # ## ########## ########### $$$$$$$ $ ", - " %%%%%%% ## ########## ########### # ## # ############ #### ########### ### ##################### $$$$$$ ", - " %%%%%%% ########## # ############ # ### # ############ ########### # ################## $$$$$$$$$$$$ ", - " %%%%%%% ############ ########### # # ### ####################### ## ############### $$$$$$ ", - " %%%%%%% ###################### # # #################### # ############# $$$$$$$$ ", - " %%%%%%%% # ##################### ## # ################# # # ########## $$$$$$$$$ $ ", - " %% %%%%%%% ## ################# ## # ## ################ ## ####### $$$$$$ ", - " %%%%%%%%% # ############### # ## # ############# # ##### $$$$$$ $ ", - " %%%%%%% # ############& ## & # ######### # # ## $$$$$$$$$$$ ", - " %%%%%%%%% # # ####### #& # && &&# # ###### ## $$$$$$ $ ", - " %%%%%%%%% ## ########&#### && &&&&&&# ##### &&&&&&&&&&& $$$$$$$$$ ", - " % %%%%%%%% &&&&&&& # ### &#&&&&&&&&& && &&&&&&&&&&# &&&&&&&&&&&&&&& $$$$$$$ ", - " % %%%%%%%% &&&&&&&&&& &&#&&&##&&&&&&&& & & &&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&& $$$$$$ ", - " %%%%%%%% &&&&&&&&&&&&& && &&###&&&&&&&&&&& && &&&&&&&&&&&&&&&&& && &&&&&&&&&&&&&&&&&& $$$$$$$ $ ", - " %%%%%%%%%% &&&&&&&&&&&&&&&& & &&&&&&&&&&&&&&&&&& & &&&&&&&&&&&&&&&&&&&&&&& & &&&&&&&&&&&&&&&&&&&& $$$$$$ $ ", - " %%%%%%% &&&&&&&&&&&&&&&&&&& & & &&&&&&&&&&&&&&&&&&&& & &&&&&&&&&&&&&&&&&&&&&&& & &&&&&&&&&&&&&&&&&&&&&& $$$$$$$ $ ", - " %%%%%%% &&&&&&&&&&&&&&&&&&&&& && &&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&&& &&&&&&&&& $$$$$$$ $ ", - " %%%%%%% &&&&&&&&&&&& &&&&&&&&&&& &&&&&&&&&&&&& &&&&&&&&&&&&& &&&&&&&&&&&&&&& &&&&&&&&&&&& & &&&&&&&&&&&&& &&&&&&&& & $$$$$$ $ ", - " %%%%%%%%% &&&&&&&&&&& &&&&&&&&& && &&&&&&&&&& & && &&&&&&&& & && &&&&&&&&&&& & &&&&&&&&&&&&&& && &&&&&&&&&& &&&&&&&& && $$$$$$$$$ ", - " % %%%%%%% &&&&&&&&&& &&&&&&&& & && &&&&&&&&&&& & && &&&&&&&& &&& &&&&&&&&&&& & & & &&&&&&&&&& &&&&&&&&&&&&& &&&&&&&& &&&&& $$$$$$ $ ", - " %%%%%% &&&&&&& &&&&&&&& & &&&&&&&&&&& & & & &&&&&&&&& &&&&&&&&&&&& &&& & && &&&&&&&&&&&&&&&&&&&&&& & &&&&&&&&&&&&&&&& $$$$$$$$$ ", - " %%%%%%%%% &&&&&& &&&&&&&&&&&&&&&&&&&&&& & &&&&&&&&&&&&&&&&&&&&&&&& &&& & &&&&&&&&&&&&&&&&&&&& & &&&&&&&&&&&&&&&&& $$$$$$$ ", - " %%%%%% && &&& &&&&&&&&&&&&&&&&&&&& & & &&&&&&&&&&&&&&&&&&& && & &&&&&&&&&&&&&&&&& &&&& &&&&&&&&&&&&&&&& $$$$$$$$$$ ", - " %%%%%%%%% && & &&&&&&&&&&&&&&&&&&& & &&&&&&&&&&&&&&&&&&&&&& & &&&&&&&&&&&&&&&&& & && &&&&&&&&&&&&& $$$$$$$ ", - " % %%%%%%&& &&&&&&&&&&&&&&&& && & &&&&&&&&&&&&&&& && & &&&&&&&&&&&&&& & & &&&&&&&&&&& $$$$$$$ ", - " % %%%%&&& &&&&&&&&&&&&&&& & &&&&&&&&&&&&& && & &&&&&&&&&& && & &&&&&&& $$$$$$$$$$ ", - " % %%%%%& &&&&&&&&& &&& & &&&&&&&&&&& && & & &&&& & && & $$$$$$ ", - " %% %%%%%% &&&&& &&&& & & & & &&&&& && '''''''''' $$$$$$$ $ ", - " %% %%%%%% & & & & ''''''''''$$$$$$$$$ $ ", - " %%%%%%% &&& & ''''''''''''''''' $$$$$$$ $ ", - " %%%%%%%%% ''''''''''''''''' $$$$$$$$$$ ", - " %%%%%% '''''''''' $$$$$$$$$ ", - " %%%%%%%%% ''''''''''''''''''''''''''' $$$$$$$$$ ", - " %%%%%% ( (( ''''''''''''''''''''''''''' $$$$$$$ ", - " % %%%%%% (( (( (((( (( ((((((( ''''''''''''''''''''''''''' $$$$$$ ", - " % %%%%%% ( ( ( (((((((( (( (((((((((((( ((((((((((( ''''''''''''''''''''''''''' $$$$$$$$$$ ", - " %%%%%% ((((((((( ( (((((((((((( ( ((((((((((((((( (( ((((((((((((((( ''''''''''''''''''''''''''' $$$$$$$ ", - " %% %%%%%% ((((((((((((( ( ((((((((((((((( ((((((((((((((((((( (((((((((((((((((( '''''''''''''''''''''''''''$ $$$$$$ ", - " % %%%%%%% (((((((((((((((( ( ((((((((((((((((( ( (((((((((((((((((( ( ((((((((((((((((((( $$$$$$$$$$ ", - " %%%%%%% (((((((((((((((((( (((((((((((((((((((( ( ((((((((((((((((((((( ( ((((((((((((((((((((( ( $$$$$$ ", - " %%%%%%%%% ((((((((((((((((((((( ((((((((((((((((((((((( ( ( ((((((((((((((((((((((( ((((((((((((((((((((((((( ((( $$$$$$$$$$ ", - " %%%%%% (((((((((((((((((((((( ( (((((((((((( (((((((((( ( ( (((((((((((((( (((((((((( (((((((((( ( ( (((((((( ((( $$$$$$$ ", - " %%%%%%%%% ((((((((((( (((((((( (((((((((((( ((( ((((((((( ( ((((((((((((( ((( ( ((((((((( ( ( ((((((((((( ( ( (((((((( (( ((( $$$$$$ ", - " %%%%%% (((((((((( (((((((( ((((((((((( ( ((((((((((( (( ( (((((((((( (( ( ( ((((((((((((( ((((((((((( ( ( ( (((((((( ((((((( $$$$$$$$$$ ", - " %%%%%% ((((((((( ((((((( ( (((((((((( (( ((((( ((((((((( (((((((((((( ( (((( (( (((((((((( ((((((((((( ((( ( ((((((((((((((((( $ $$$$$$ ", - " %%%%%%%%% (((((( ((((((((( ((((((((((( ( ((( (((((((((((((((((((((( (( ( (((((((((((((((((((( (( (((((((((((((((( $$$$$$$$$$$ ", - " %%%%%% (((( (((((((((((((((((((( ( )) ( (((((((((((((((((( ( ( ( ( ((((((((((((((((( ( ( ((((((((((((((((( $$$$$$$ $$$ ", - " % %%%%%%%%% (( (((((((((((((((((((( (()) ((((((((((((((((((( (( ((((((((((((((((((( ( * * * ***(**(**((((((((( $$$$$$ $ $ ", - " % % %%%%%% ((((((((((((((((())((()) ( (((((((((((((((( ( (((((((((((((((( ( ( * * * * * (*((*(*(**(**** $$$$$$$ $$ $ ", - " % % %%%%%% ((((((((((((( ()))))) ( (((((((((((((( ( (( ((((((((((((((( * ( * * * * * *((*(*((* * * $ $$$$$$$ ", - " %%%%%%%%%% (((((((((((()(())) +++++( ((((((((((( ( ( ((((((( ( ( ********************** *(* ** * ** $$$$$$$$$ ", - " %%%%%% (((((((((()))())) +++++++ ( (((((( (( ( ((( ( (************************************* ** $$$$$$$ ", - " %%%%%%%%% ((( (())()))))) ++++++ ( ( (, ( ( (( (( ( ( *************************************** ** $$$$$$ ", - " %%%%%% ( ( )((()))))) ++++++ ( ,,,,,,, ((( (( ***************************************** * $$$$$$$$$$ ", - " %%%%%% ())))))))))) ++++++ ,,,,,,, ------------------------ ****************************************** * $$$$$$$ ", - " %%%%%%%%% ))))))))))) ++++++ ,,,,,, ----------------------------- ********************************************* $ $$$$$$$$$ ", - " %%%%%% )))))))))) +++++++ ,,,,,, ----------------------------- * ** * * **************************** * $$$$$$$$ $ ", - " %%%%%%%%% ))))))))))) +++++++ ,,,,,, ----------------------------- ** *** * * * ** ************* $$$$$$$ $ ", - " %%%%%% ))))))))))) ++++++ ,,,,,, -----------------------------... .. * * * * ********** $ $$$$$$$ $$ ", - " %%%%%% )))))))))) ++++++ ,,,,,,, ----------------------------- . .. * ******** ** $$$$$$$ ", - " %%%%%%%%% ))))))))))) ++++++ ,,,,,,, . . .--------------.... . . * ********* $$$$$$$ ", - " %%%%%% ))))))))))) ++++++ ,,,,,,, .. .. . ... . . . . . ............... * ******* $$$$$$$$$$ ", - " %%%%%% )))))))))) +++++++ ,,,,,, .. . ...................................... * ******** * $$$$$$ ", - " %%%%%%%%% ))))))))))) +++++++ ,,,,,, ............................................. * ****** * * $$$$$$$$$$ ", - " %%%%%% ))))))))))) ++++++ ,,,,,, . ............................................ ******** * * $ $$$$$$ ", - " %%%%%%%%% )))))))))) / // ++++++ ,,,,,, ............................................... ********* $ $$$$$$$$$ ", - " % %%%%%%% ))))))))))) / / /// ++++++ ,,,,,,, .............................................. ******** $$$$$$$ $ ", - " % %%%%%%% ))))))))))) /// / / / // / ++++++ ,,,,,,, .. ............................................ *********** $$$$$$$ $ ", - " % %%%%%%% )))))))))) / / //// ////// / / +++++++ ,,,,,, ............. . . . . ...... ... . . ******** $$$$$$ $$ ", - " %%%%%% ))))))))))) / //////////// / / / +++++++ ,,,,,, ......... . .. ******** $$$$$$ ", - " %%%%%%%%% )))))))))) / / //////////////////// +++++++ ,,,,,, . . ........ . . . ********** $$$$$$ $ ", - " %%%%%% )))))))))) / / //////////////////////// ++++++ ,,,,,, . . ......... . ******* $$$$$$$$$ $ ", - " %%%%%% ))))))))))) / ////////////////////////////// ++++++ ,,,,,, ... ........ ******* $$$$$$$$$ ", - " %%%%%%%%% )))))))))) / ///////////////////////////// ++++++ ,,,,,,, ........ ********** $$$$$$$ ", - " %%%%%% )))))))))) ////////////////////////////////++++++ ,,,,,,, ......... 00000000000000000000000000000 ******* $ $$$$$$$$$ ", - " %%%%%%%%% ))))))))))) / ///////////// / //////////////+++++++,,,,,, .......... 00000000000000000000000000000 ********* $ $$$$$$ ", - " % %%%%%% )))))))))) /// ////////// / ///// / ////////+++++++,,,,,, ........ . 000000000000000000000000000000000000 ********* $$$$$$ $ ", - " %%%%%% )))))))))) //////////// // / / ///////////++++ ,,,,,, ....... 000000000000000000000000000000000000 ****** $$$$$$$$$$ ", - " % %%%%%% )))))))))) /////////////// //////// ,,,,,, ........... 00000000000000000000000000000 ************* $ $$$$$$ ", - " % %%%%%% ))))))) ////////////// ///////// ,,,,,,, ...... . 00000000000000000000000000000 ******* $ $$$$$$ ", - " % %%%%%% ))))) ///////// /////// /,,,,,,, ......... . 000000000000000000 ********** $$$$$$$ ", - " % %%%%%% )))) /// ////////// /////////,,,,,,, ........ * * ******** *** $$$$$$$$$ ", - " % %%%%%% ) /////// / ////////,,,,,, ...... * ** ** * * * ******* * *$ $$$$$$$ ", - " %%%%%% // /////// //////// ,,,, ........... *** * * * * ****** * *** *** * ********** * $$$$$$$ $ ", - " %%%%%% ///////// //////// ...... . ***************************** *************** $ $$$$$$$ $ ", - " %%%%%%%%% / / ////// / //////// ...... . ************************************************ $$$$$$$$$$ $ ", - " % %%%%%% / / /////// / ///// ........... ********************************************** ** $ $$$$$$$$ ", - " %%%%%%% // /////// ////// ....... ********************************************** $ $$$$$$ ", - " %%%%%%%%% /// ////// ////// .......... ******************************************** * $$$$$$$$$ ", - " % %%%%%% /////////// ////// . . ...... . ******************************************** $$$$$$$$ $ ", - " % %%%%%% /////// ////// . ...... . * * * *** **************** * * $$$$$$$$ ", - " %%%%%%%% //////////// ////// . .......... * * * * * * * *** *** * ** $$$$$$$ ", - " %%%%%% ////// /////// ........ . * * * * * * * * * * $ $$$$$$ ", - " %%%%%%%%%%% / /////// /////// ........... . . . ** * ** * *** *** * $$$$$$$ ", - " % %%%%%% //////// / ////// . .......... .. ... ... ... ... ... $$$$$$ ", - " % %%%%%% /////// / ////// ........... .................................. $$$$$$$$ ", - " %%%%%%%% ////////// ////// .. ............................................ $$$$$$$ ", - " %%%%%% / /////// /////// ............................................. ..... $$$$$$ ", - " %%%%%% ///////// //////// . .................................................. $$$$$$$ ", - " %%%%%% //////////// //////// . .......................................... $ $$$$$$ ", - " %%%%%% ///////// /////// . ........................................ $$$$$$ ", - " %%%%%% //////// / ////// .. ..................................... $$$$$$ ", - " // ///////// / /////// . . . . . . . . . . . . $$$$$$ ", - " /////////// / ////////// . . . . . . . . . . . $$$$$$ ", - " // ///////// // ////////// .... ... ... .. ... . . . $$ ", - " / ///////// / //////////// $$ ", - " / ////////// //////////// $$ ", - " / ///////// /// / //////////// $$ ", - " / //////////// / / /// //////////// / $$ ", - " / ///////////////// / ///////////// // 11111111111111111111111111 $$ ", - " //////////////////////////////// / 11111111111111111111111111111111111111111111111111 $$ ", - " / //////////////////////////// / // 111111111111111111111111111111111111111111111111111111111 ", - " ////////////////////////////// / 111111111111111111111111111111111111111111111111111111111 ", - " //////////////////////// / / 11111111111111111111111111111111111111111111111111 ", - " / / ///////////////// / / 11111111111111111111111111111111111111111111111111 ", - " //// / / ///////// /// 11111111111111111111111111111111111111 ", - " / / / / / / / ", - " //// / / / /// ", - " /// / ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-wrap-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/text-wrap-512-512-1.0-grid-reference.json deleted file mode 100644 index 1f3b63330..000000000 --- a/tests/visual_tests/grids/text-wrap-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "keys": [ - "", - "2", - "1", - "3" - ], - "data": {}, - "grid": [ - " !!! ", - " !!! ", - " !!!! ", - " !! !! ", - " ", - " ", - " ", - " !! !! ", - " !!! ", - " !!! ", - " !!! ", - " !! !! ", - " !! !! ", - " ", - " ", - " ", - " !! !! ", - " !!! ", - " !! ", - " !!! ", - " !! !! ", - " !! ! ", - " ", - " ", - " !! ! ", - " !!!! ", - " !!! ", - " !!! ", - " !!!! ", - " !! !! ", - " ", - " ", - " ", - " !! !! ", - " !!! ", - " !!! ", - " !!! ", - " !! !! ", - " !! !! ", - " ", - " ", - " ", - " !! !! ", - " !!! ", - " !! ", - " !!! ", - " !! !! ", - " !! ! ", - " ", - " ", - " !! ! ", - " !!!! ", - " !!! ", - " !!! ## ## ## ## #### ", - " !!!! ### ### #### ", - " !! !! ## ## ## ", - " #### ### #### ", - " ## ## ## ## #### ", - " ## ## ## # ## ## ", - " ", - " ", - " # ## ## ## ## ## ", - " #### ## ## #### ", - " ### ### ## ", - " ## ### ## ", - " #### ### #### ", - " ## ## ## ## ## ## ", - " ", - " ", - " ", - " # ## ## ## ## ## ", - " #### #### #### ", - " ## ### ## $ $$ ", - " ## ### ### $$$$ ", - " #### #### #### $$$ ", - " ## ## ## ## ## # $$ ", - " $$$$ ", - " $$ $$ ", - " ", - " ", - " ", - " $$ $ $$ $$ ", - " $$$$ $$$$ ", - " $$ $$$ ", - " $$$ $$$ ", - " $$$$ $$$$ ", - " $$ $$ $$ $$ ", - " ", - " ", - " ", - " $$$$ $$ $$ ", - " $$$$ $$$ ", - " $$ $$ ", - " $$$$ $$$ ", - " $$$$ $$ $$ ", - " $$ $$ $ $$ ", - " ", - " ", - " $ $$ $ $$ ", - " $$$$ $$$$ ", - " $$$ $$$ ", - " $$ $$ ", - " $$$$ $$$$ ", - " $$ $$ $$ $$ ", - " ", - " ", - " ", - " $$ $ $$ $$ ", - " $$$$ $$$$ ", - " $$ $$$ ", - " $$$ $$$ ", - " $$$$ $$$$ ", - " $$ $$ $$ $$ ", - " ", - " ", - " ", - " $$$$ $$ $$ ", - " $$$$ $$$ ", - " $$ $$ ", - " $$$$ $$$ ", - " $$$$ $$ $$ ", - " $$ $$ $ $$ ", - " ", - " ", - " $ $$ $ $$ ", - " $$$$ $$$$ ", - " $$$ $$$ ", - " $$ $$ " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/text-wrap-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/text-wrap-512-512-2.0-grid-reference.json deleted file mode 100644 index 6d6c4ba22..000000000 --- a/tests/visual_tests/grids/text-wrap-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "keys": [ - "", - "2", - "3", - "1" - ], - "data": {}, - "grid": [ - " !!!!! ", - " !!!!! ", - " !!!!!! ", - " !!!!!!! ", - " !!!! !!!! ", - " !!!! !!! ", - " !!! !!!! ", - " ", - " ", - " ", - " ", - " ", - " !!! !!! ", - " !!! !!!! ", - " !!!! !!! ", - " !!!!!!!! ", - " !!!!!! ", - " !!!!! ", - " !!!! ", - " !!!!! ", - " !!!!!!! ", - " !!! !!!! ", - " !!!! !!! ", - " !!!! !!!! ", - " !!! !!! ", - " ", - " ", - " ", - " ", - " ", - " !!! !!!! ", - " !!!! !!! ", - " !!! !!!! ", - " !!!!!!! ", - " !!!!! ", - " !!!! #### ### ", - " !!!!! ### #### ", - " !!!!!! ######## ", - " !!!!!!! ###### ", - " !!!! !!!! ##### ", - " !!! !!!! #### ", - " !!!! !!! $$$ $$$ $$$ $$$ $$$ $$$$ ###### ", - " $$$$ $$$$ $$$$ $$$$ $$$$ $$$ ###### ", - " $$$$$$$$ $$$$$$$$ $$$ $$$$ ######## ", - " $$$$$$ $$$$$$ $$$$$$$ #### #### ", - " $$$$$$ $$$$$$ $$$$$ ### ### ", - " $$$$ $$$$ $$$$ ### ### ", - " !!!! !!! $$$$ $$$$$ $$$$$ ", - " !!! !!! $$$$$$ $$$$$$ $$$$$$$ ", - " !!!! !!!! $$$$$$$$ $$$$$$$$ $$$ $$$ ", - " !!!!!!! $$$ $$$ $$$$ $$$ $$$$ $$$$ ", - " !!!!! $$$$ $$$$ $$$ $$$$ $$$$ $$$$ ", - " !!!!! $$$ $$$ $$$$ $$$ $$$ $$$ ### ### ### #### ", - " !!!!! #### #### #### ### ", - " !!!!!! ### #### ### #### ", - " !!!!!!! ####### ####### ", - " !!!! !!!! ##### ##### ", - " !!!! !!! #### #### ", - " !!! !!!! $$$ $$$ $$$ $$$ $$$ $$$ ##### ##### ", - " $$$$ $$$$ $$$$ $$$$ $$$ $$$$ ###### ####### ", - " $$$$ $$$ $$$ $$$$ $$$$ $$$$ ####### ### ### ", - " $$$$$$$ $$$$$$$ $$$$$$$ #### #### #### #### ", - " $$$$$$ $$$$$$ $$$$$$ ### #### #### #### ", - " $$$$ $$$$ $$$$$ #### ### ### ### ", - " $$$$ $$$$ $$$$$ ", - " !!! !!!! $$$$$$ $$$$$$ $$$$$ ", - " !!!! !!! $$$$$$$$ $$$$$$$ $$$$$$$ ", - " !!!!!!!! $$$ $$$ $$$ $$$$ $$$$ $$$$ ", - " !!!!!! $$$$ $$$$ $$$$ $$$$ $$$ $$$ ", - " !!!!! $$$ $$$ $$$$ $$$ $$$$ $$$$ ### ### ### ### ", - " !!!! #### #### ### #### ", - " !!!!! ### #### #### #### ", - " !!!!!!! ####### ####### ", - " !!! !!!! ###### ##### ", - " !!!! !!! #### ##### ", - " !!!! !!!! #### ##### ", - " !!! !!! $$$ $$$$ $$$ $$$ $$$$ $$$ ###### ##### ", - " $$$$ $$$ $$$$ $$$$ $$$ $$$$ ####### ####### ", - " $$$$$$$$ $$$ $$$ $$$$$$$$ ### #### #### #### ", - " $$$$$$ $$$$$$$ $$$$$$ ### #### ### ### ", - " $$$$$ $$$$$ $$$$$ #### ### #### #### ", - " $$$$ $$$$ $$$$ ", - " !!! !!!! $$$$$ $$$$$ $$$$$ ", - " !!!! !!! $$$$$$$ $$$$$$$ $$$$$$ ", - " !!! !!!! $$$ $$$$ $$$$ $$$ $$$$$$$$ ", - " !!!!!!! $$$$ $$$ $$$ $$$$ $$$ $$$$ ", - " !!!!! $$$$ $$$$ $$$$ $$$$ $$$ $$$ ", - " !!!! $$$ $$$ $$$ $$$ $$$ $$$ #### ### #### ### ", - " !!!!! ### #### ### #### ", - " !!!!!! ######## ######## ", - " !!!!!!! ###### ###### ", - " !!!! !!!! ##### ##### ", - " !!! !!!! #### #### ", - " !!!! !!! ###### ###### ", - " ###### ###### ", - " ######## ######## ", - " #### #### #### #### ", - " ### ### ### ### ", - " ### ### ### ### ", - " ", - " ", - " ", - " ", - " ", - " ### ### ### #### ", - " #### #### #### ### ", - " ### #### ### #### ", - " ####### ####### ", - " ###### ##### ", - " #### #### ", - " ##### ##### ", - " ###### ####### ", - " ####### ### ### ", - " #### #### #### #### ", - " ### #### #### #### ", - " #### ### ### ### ", - " ", - " ", - " ", - " ", - " ", - " ### ### ### ### ", - " #### #### ### #### ", - " ### #### #### #### ", - " ####### ####### ", - " ###### ###### ", - " #### ##### ", - " #### ##### " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-alpha-broken-assoc-alpha-gdal-600-400-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-alpha-broken-assoc-alpha-gdal-600-400-1.0-grid-reference.json deleted file mode 100644 index 1a15981c2..000000000 --- a/tests/visual_tests/grids/tiff-alpha-broken-assoc-alpha-gdal-600-400-1.0-grid-reference.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-alpha-broken-assoc-alpha-gdal-600-400-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-alpha-broken-assoc-alpha-gdal-600-400-2.0-grid-reference.json deleted file mode 100644 index 1a15981c2..000000000 --- a/tests/visual_tests/grids/tiff-alpha-broken-assoc-alpha-gdal-600-400-2.0-grid-reference.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-alpha-gdal-600-400-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-alpha-gdal-600-400-1.0-grid-reference.json deleted file mode 100644 index 1a15981c2..000000000 --- a/tests/visual_tests/grids/tiff-alpha-gdal-600-400-1.0-grid-reference.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-alpha-gdal-600-400-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-alpha-gdal-600-400-2.0-grid-reference.json deleted file mode 100644 index 1a15981c2..000000000 --- a/tests/visual_tests/grids/tiff-alpha-gdal-600-400-2.0-grid-reference.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-alpha-gradient-gdal-600-400-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-alpha-gradient-gdal-600-400-1.0-grid-reference.json deleted file mode 100644 index 1a15981c2..000000000 --- a/tests/visual_tests/grids/tiff-alpha-gradient-gdal-600-400-1.0-grid-reference.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-alpha-gradient-gdal-600-400-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-alpha-gradient-gdal-600-400-2.0-grid-reference.json deleted file mode 100644 index 1a15981c2..000000000 --- a/tests/visual_tests/grids/tiff-alpha-gradient-gdal-600-400-2.0-grid-reference.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-edge-alignment-gdal1-255-257-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-edge-alignment-gdal1-255-257-1.0-grid-reference.json deleted file mode 100644 index a9b8956b3..000000000 --- a/tests/visual_tests/grids/tiff-edge-alignment-gdal1-255-257-1.0-grid-reference.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-edge-alignment-gdal1-255-257-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-edge-alignment-gdal1-255-257-2.0-grid-reference.json deleted file mode 100644 index a9b8956b3..000000000 --- a/tests/visual_tests/grids/tiff-edge-alignment-gdal1-255-257-2.0-grid-reference.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-edge-alignment-gdal1-256-256-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-edge-alignment-gdal1-256-256-1.0-grid-reference.json deleted file mode 100644 index e023c5e7e..000000000 --- a/tests/visual_tests/grids/tiff-edge-alignment-gdal1-256-256-1.0-grid-reference.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-edge-alignment-gdal1-256-256-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-edge-alignment-gdal1-256-256-2.0-grid-reference.json deleted file mode 100644 index e023c5e7e..000000000 --- a/tests/visual_tests/grids/tiff-edge-alignment-gdal1-256-256-2.0-grid-reference.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-edge-alignment-gdal2-255-257-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-edge-alignment-gdal2-255-257-1.0-grid-reference.json deleted file mode 100644 index a9b8956b3..000000000 --- a/tests/visual_tests/grids/tiff-edge-alignment-gdal2-255-257-1.0-grid-reference.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-edge-alignment-gdal2-255-257-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-edge-alignment-gdal2-255-257-2.0-grid-reference.json deleted file mode 100644 index a9b8956b3..000000000 --- a/tests/visual_tests/grids/tiff-edge-alignment-gdal2-255-257-2.0-grid-reference.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-edge-alignment-gdal2-256-256-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-edge-alignment-gdal2-256-256-1.0-grid-reference.json deleted file mode 100644 index e023c5e7e..000000000 --- a/tests/visual_tests/grids/tiff-edge-alignment-gdal2-256-256-1.0-grid-reference.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-edge-alignment-gdal2-256-256-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-edge-alignment-gdal2-256-256-2.0-grid-reference.json deleted file mode 100644 index e023c5e7e..000000000 --- a/tests/visual_tests/grids/tiff-edge-alignment-gdal2-256-256-2.0-grid-reference.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-nodata-edge-gdal-600-400-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-nodata-edge-gdal-600-400-1.0-grid-reference.json deleted file mode 100644 index 1a15981c2..000000000 --- a/tests/visual_tests/grids/tiff-nodata-edge-gdal-600-400-1.0-grid-reference.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-nodata-edge-gdal-600-400-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-nodata-edge-gdal-600-400-2.0-grid-reference.json deleted file mode 100644 index 1a15981c2..000000000 --- a/tests/visual_tests/grids/tiff-nodata-edge-gdal-600-400-2.0-grid-reference.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-nodata-edge-gdal-969-793-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-nodata-edge-gdal-969-793-1.0-grid-reference.json deleted file mode 100644 index 924d7413b..000000000 --- a/tests/visual_tests/grids/tiff-nodata-edge-gdal-969-793-1.0-grid-reference.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-nodata-edge-gdal-969-793-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-nodata-edge-gdal-969-793-2.0-grid-reference.json deleted file mode 100644 index 924d7413b..000000000 --- a/tests/visual_tests/grids/tiff-nodata-edge-gdal-969-793-2.0-grid-reference.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-nodata-edge-rgba-500-100-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-nodata-edge-rgba-500-100-1.0-grid-reference.json deleted file mode 100644 index dcf3d346b..000000000 --- a/tests/visual_tests/grids/tiff-nodata-edge-rgba-500-100-1.0-grid-reference.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-nodata-edge-rgba-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-nodata-edge-rgba-512-512-1.0-grid-reference.json deleted file mode 100644 index 53162f357..000000000 --- a/tests/visual_tests/grids/tiff-nodata-edge-rgba-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-nodata-edge-rgba-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-nodata-edge-rgba-512-512-2.0-grid-reference.json deleted file mode 100644 index 53162f357..000000000 --- a/tests/visual_tests/grids/tiff-nodata-edge-rgba-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-nodata-rgb-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-nodata-rgb-512-512-1.0-grid-reference.json deleted file mode 100644 index 53162f357..000000000 --- a/tests/visual_tests/grids/tiff-nodata-rgb-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-nodata-rgb-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-nodata-rgb-512-512-2.0-grid-reference.json deleted file mode 100644 index 53162f357..000000000 --- a/tests/visual_tests/grids/tiff-nodata-rgb-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-nodata-rgba-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-nodata-rgba-512-512-1.0-grid-reference.json deleted file mode 100644 index 53162f357..000000000 --- a/tests/visual_tests/grids/tiff-nodata-rgba-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-nodata-rgba-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-nodata-rgba-512-512-2.0-grid-reference.json deleted file mode 100644 index 53162f357..000000000 --- a/tests/visual_tests/grids/tiff-nodata-rgba-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-nodata-tolerance-512-512-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-nodata-tolerance-512-512-1.0-grid-reference.json deleted file mode 100644 index 53162f357..000000000 --- a/tests/visual_tests/grids/tiff-nodata-tolerance-512-512-1.0-grid-reference.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-nodata-tolerance-512-512-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-nodata-tolerance-512-512-2.0-grid-reference.json deleted file mode 100644 index 53162f357..000000000 --- a/tests/visual_tests/grids/tiff-nodata-tolerance-512-512-2.0-grid-reference.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-opaque-edge-gdal-256-256-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-opaque-edge-gdal-256-256-1.0-grid-reference.json deleted file mode 100644 index e023c5e7e..000000000 --- a/tests/visual_tests/grids/tiff-opaque-edge-gdal-256-256-1.0-grid-reference.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-opaque-edge-gdal-256-256-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-opaque-edge-gdal-256-256-2.0-grid-reference.json deleted file mode 100644 index e023c5e7e..000000000 --- a/tests/visual_tests/grids/tiff-opaque-edge-gdal-256-256-2.0-grid-reference.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-opaque-edge-gdal-969-793-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-opaque-edge-gdal-969-793-1.0-grid-reference.json deleted file mode 100644 index 924d7413b..000000000 --- a/tests/visual_tests/grids/tiff-opaque-edge-gdal-969-793-1.0-grid-reference.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-opaque-edge-gdal-969-793-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-opaque-edge-gdal-969-793-2.0-grid-reference.json deleted file mode 100644 index 924d7413b..000000000 --- a/tests/visual_tests/grids/tiff-opaque-edge-gdal-969-793-2.0-grid-reference.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-opaque-edge-gdal2-600-400-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-opaque-edge-gdal2-600-400-1.0-grid-reference.json deleted file mode 100644 index 1a15981c2..000000000 --- a/tests/visual_tests/grids/tiff-opaque-edge-gdal2-600-400-1.0-grid-reference.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-opaque-edge-gdal2-600-400-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-opaque-edge-gdal2-600-400-2.0-grid-reference.json deleted file mode 100644 index 1a15981c2..000000000 --- a/tests/visual_tests/grids/tiff-opaque-edge-gdal2-600-400-2.0-grid-reference.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-opaque-edge-gdal2-969-793-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-opaque-edge-gdal2-969-793-1.0-grid-reference.json deleted file mode 100644 index 924d7413b..000000000 --- a/tests/visual_tests/grids/tiff-opaque-edge-gdal2-969-793-1.0-grid-reference.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-opaque-edge-gdal2-969-793-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-opaque-edge-gdal2-969-793-2.0-grid-reference.json deleted file mode 100644 index 924d7413b..000000000 --- a/tests/visual_tests/grids/tiff-opaque-edge-gdal2-969-793-2.0-grid-reference.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-opaque-edge-raster2-600-400-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-opaque-edge-raster2-600-400-1.0-grid-reference.json deleted file mode 100644 index 1a15981c2..000000000 --- a/tests/visual_tests/grids/tiff-opaque-edge-raster2-600-400-1.0-grid-reference.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-opaque-edge-raster2-600-400-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-opaque-edge-raster2-600-400-2.0-grid-reference.json deleted file mode 100644 index 1a15981c2..000000000 --- a/tests/visual_tests/grids/tiff-opaque-edge-raster2-600-400-2.0-grid-reference.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-opaque-edge-raster2-969-793-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-opaque-edge-raster2-969-793-1.0-grid-reference.json deleted file mode 100644 index 924d7413b..000000000 --- a/tests/visual_tests/grids/tiff-opaque-edge-raster2-969-793-1.0-grid-reference.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-opaque-edge-raster2-969-793-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-opaque-edge-raster2-969-793-2.0-grid-reference.json deleted file mode 100644 index 924d7413b..000000000 --- a/tests/visual_tests/grids/tiff-opaque-edge-raster2-969-793-2.0-grid-reference.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-reprojection-1-250-250-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-reprojection-1-250-250-1.0-grid-reference.json deleted file mode 100644 index 4f1f36aa4..000000000 --- a/tests/visual_tests/grids/tiff-reprojection-1-250-250-1.0-grid-reference.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-reprojection-1-250-250-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-reprojection-1-250-250-2.0-grid-reference.json deleted file mode 100644 index 4f1f36aa4..000000000 --- a/tests/visual_tests/grids/tiff-reprojection-1-250-250-2.0-grid-reference.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-reprojection-2-250-250-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-reprojection-2-250-250-1.0-grid-reference.json deleted file mode 100644 index 4f1f36aa4..000000000 --- a/tests/visual_tests/grids/tiff-reprojection-2-250-250-1.0-grid-reference.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-reprojection-2-250-250-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-reprojection-2-250-250-2.0-grid-reference.json deleted file mode 100644 index 4f1f36aa4..000000000 --- a/tests/visual_tests/grids/tiff-reprojection-2-250-250-2.0-grid-reference.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-resampling-600-400-1.0-grid-reference.json b/tests/visual_tests/grids/tiff-resampling-600-400-1.0-grid-reference.json deleted file mode 100644 index 1a15981c2..000000000 --- a/tests/visual_tests/grids/tiff-resampling-600-400-1.0-grid-reference.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff-resampling-600-400-2.0-grid-reference.json b/tests/visual_tests/grids/tiff-resampling-600-400-2.0-grid-reference.json deleted file mode 100644 index 1a15981c2..000000000 --- a/tests/visual_tests/grids/tiff-resampling-600-400-2.0-grid-reference.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff_colortable-256-256-1.0-grid-reference.json b/tests/visual_tests/grids/tiff_colortable-256-256-1.0-grid-reference.json deleted file mode 100644 index e023c5e7e..000000000 --- a/tests/visual_tests/grids/tiff_colortable-256-256-1.0-grid-reference.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff_colortable-256-256-2.0-grid-reference.json b/tests/visual_tests/grids/tiff_colortable-256-256-2.0-grid-reference.json deleted file mode 100644 index e023c5e7e..000000000 --- a/tests/visual_tests/grids/tiff_colortable-256-256-2.0-grid-reference.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff_colortable_custom_nodata-256-256-1.0-grid-reference.json b/tests/visual_tests/grids/tiff_colortable_custom_nodata-256-256-1.0-grid-reference.json deleted file mode 100644 index e023c5e7e..000000000 --- a/tests/visual_tests/grids/tiff_colortable_custom_nodata-256-256-1.0-grid-reference.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/tiff_colortable_custom_nodata-256-256-2.0-grid-reference.json b/tests/visual_tests/grids/tiff_colortable_custom_nodata-256-256-2.0-grid-reference.json deleted file mode 100644 index e023c5e7e..000000000 --- a/tests/visual_tests/grids/tiff_colortable_custom_nodata-256-256-2.0-grid-reference.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/vrt_colortable-256-256-1.0-grid-reference.json b/tests/visual_tests/grids/vrt_colortable-256-256-1.0-grid-reference.json deleted file mode 100644 index e023c5e7e..000000000 --- a/tests/visual_tests/grids/vrt_colortable-256-256-1.0-grid-reference.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/vrt_colortable-256-256-2.0-grid-reference.json b/tests/visual_tests/grids/vrt_colortable-256-256-2.0-grid-reference.json deleted file mode 100644 index e023c5e7e..000000000 --- a/tests/visual_tests/grids/vrt_colortable-256-256-2.0-grid-reference.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "keys": [ - "" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/whole-centroid-600-400-1.0-grid-reference.json b/tests/visual_tests/grids/whole-centroid-600-400-1.0-grid-reference.json deleted file mode 100644 index 9ba6a8614..000000000 --- a/tests/visual_tests/grids/whole-centroid-600-400-1.0-grid-reference.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "keys": [ - "", - "1" - ], - "data": {}, - "grid": [ - " !!!! ", - " !!!!! ", - " ! ! ", - " ! ! ", - " ! !!! ", - " ! ! ", - " ! ! ! ! ! ", - " ! ! ! !!! ! ", - " ! ! ! ", - " ! ! ", - " ! ! ! ", - " !!!!!!! !! ! ", - " ! ! ", - " ! !!! ! ", - " ! !! ! ! ", - " !! ", - " ! ! ", - " ! ", - " !! ! ", - " !! ! ", - " ! ! ", - " ! ", - " ! ! ", - " ! ! ", - " ! ", - " ! ! ", - " ! ! ", - " ! ! ! ! ", - " !!! ! !! ", - " ! ! !! ! ", - " ! ! ! ", - " ! ! ! ! ", - " !! ! ! ! ", - " ! ", - " ! ! ", - " ! ! ", - " ! ! ", - " ! ! ", - " !!! ", - " ! !!!!! ! ", - " ! !!!!! ! ", - " ! !!!!! ", - " ! !!!!! ! ", - " !! ! ! ! ", - " ! ! ", - " ! ! ", - " ! ! ", - " ! ! ! ! ", - " ! ! ", - " ! ! ", - " ! !!! ", - " ! ! !! ", - " !! ! ", - " ! ! ", - " ! ", - " ! ! ", - " ! !! ", - " ! ! ", - " ! ! ", - " ! !! ! ! ! ", - " !!! ! ! ", - " ! ! ! ", - " ! ! ! ! ", - " ! ! !! !! ", - " ! ! ! ", - " ! ! !! ! ", - " ! ! ! !! ! ", - " ! ! ! ! ! ! ", - " ! ! ", - " ! ! ! ! ! ", - " ! ! ", - " ! ! ! ! ! ", - " ! ! ! ! ", - " ! ! ! ", - " ! ! ! ", - " ! ", - " ! ! ! ", - " ! ! !! ! ! ", - " ! ! ! ", - " !! ! !! ", - " ! !! ", - " ! ! ", - " ! ! ", - " ! ! ", - " ! ! ! ", - " ! ", - " !! ! ! ", - " ! ! !!!! !! ", - " ! ! !! ! !!! ", - " ! ! ", - " ! ! ", - " !! ! ", - " ! ! ", - " ! ! ", - " ! ", - " ! ! ", - " ! ", - " !! ", - " ! !! ! ", - " ! ! " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/grids/whole-centroid-600-400-2.0-grid-reference.json b/tests/visual_tests/grids/whole-centroid-600-400-2.0-grid-reference.json deleted file mode 100644 index c891f75bd..000000000 --- a/tests/visual_tests/grids/whole-centroid-600-400-2.0-grid-reference.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "keys": [ - "", - "1" - ], - "data": {}, - "grid": [ - " !!!!! ", - " !!!!!! !! ", - " ! ! ", - " ! !! ", - " ! !!!! ", - " ! !!!! !! ", - " !! ! !! ! ! ", - " ! ! ! !!! ! ", - " ! ! ! ! ! ", - " ! ! ! ! ", - " ! ! ! ! ", - " !!!!!!! !! ! ", - " ! ! ", - " ! !!!! ! ", - " ! !! !!!! ", - " ! !! ", - " ! !! ", - " !! ", - " !! ! ", - " !! ! ", - " ! ! ", - " ! ! ", - " ! ! ", - " ! ! ", - " ! ! ", - " ! ! ", - " ! ! ", - " ! !! !! ! ", - " !!! ! !! ", - " !! ! !! !! ", - " !! !!! ! ", - " ! ! ! ! ! ", - " !! ! ! !! ", - " ! ! ! ", - " ! ! ", - " ! ! ", - " ! !!!!! ! ", - " ! !!!!!!!! ! ", - " ! !!!!!!!!! ! ", - " ! !!!!!!!!!! ! ", - " ! !!!!!!!!!!! ! ", - " ! ! !!!!!!!!!!! ! ", - " !! ! !!!!!!!!!! ! ", - " !!! ! !!!!!!!!! ! ", - " ! ! !!!!!!! !! ", - " ! ! !!!!! !! ", - " !! ! ", - " ! ! ! ! ", - " !! ! ", - " ! ! ", - " !! !!!!! ", - " ! ! !!! ", - " !! ! ", - " ! ! ", - " !! ", - " ! ! ", - " !! !! ", - " ! !! ", - " ! ! !! ", - " ! !!!!! !! ! ", - " !!!! ! ! ! ! ", - " ! ! ! !! !! ", - " ! ! !! ! !! ", - " ! ! ! !! !! ", - " ! ! !! ! ! ", - " ! ! !! !! ! ", - " ! ! ! ! !!!! ! ", - " ! ! !! ! ! ! ", - " ! !! ! ! ", - " ! ! ! ! ! ", - " ! ! ! ! ", - " ! ! ! ! ! ", - " ! ! ! ! ", - " ! ! ! ! ", - " ! ! ! !! ", - " ! ! ! ", - " ! ! ! ", - " !! ! !! ! ! ", - " !! ! ! ! ", - " !!! ! !! ", - " ! ! !! ", - " !! ! ! ", - " ! ! ", - " !! ! ", - " ! ! ! ", - " ! ! ", - " !!! ! ! ", - " ! ! !!!!!! !! ! ", - " !!! !! !!!! ! !!!! ", - " ! !! ! ", - " !! ! ", - " !! ! ", - " !! ! ", - " !! ! ", - " ! ! ", - " ! ! ", - " !! ! ", - " !! ! ", - " ! !! ! ", - " ! !!! " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/html_report_template.html b/tests/visual_tests/html_report_template.html deleted file mode 100644 index 759b8fe40..000000000 --- a/tests/visual_tests/html_report_template.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - -
-
expected
-
% difference
-
actual
-{{RESULTS}} -
- - diff --git a/tests/visual_tests/images/antimeridian-bbox-1000-1000-1.0-agg-reference.png b/tests/visual_tests/images/antimeridian-bbox-1000-1000-1.0-agg-reference.png deleted file mode 100644 index b6b609827..000000000 Binary files a/tests/visual_tests/images/antimeridian-bbox-1000-1000-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/antimeridian-bbox-1000-1000-1.0-cairo-reference.png b/tests/visual_tests/images/antimeridian-bbox-1000-1000-1.0-cairo-reference.png deleted file mode 100644 index dac432bc9..000000000 Binary files a/tests/visual_tests/images/antimeridian-bbox-1000-1000-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/antimeridian-bbox-1000-1000-2.0-agg-reference.png b/tests/visual_tests/images/antimeridian-bbox-1000-1000-2.0-agg-reference.png deleted file mode 100644 index 6d2727053..000000000 Binary files a/tests/visual_tests/images/antimeridian-bbox-1000-1000-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/antimeridian-bbox-1000-1000-2.0-cairo-reference.png b/tests/visual_tests/images/antimeridian-bbox-1000-1000-2.0-cairo-reference.png deleted file mode 100644 index 855cf05d9..000000000 Binary files a/tests/visual_tests/images/antimeridian-bbox-1000-1000-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/building-symbolizer-opacity-512-512-1.0-agg-reference.png b/tests/visual_tests/images/building-symbolizer-opacity-512-512-1.0-agg-reference.png deleted file mode 100644 index 7622ea3b5..000000000 Binary files a/tests/visual_tests/images/building-symbolizer-opacity-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/building-symbolizer-opacity-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/building-symbolizer-opacity-512-512-1.0-cairo-reference.png deleted file mode 100644 index 80429554a..000000000 Binary files a/tests/visual_tests/images/building-symbolizer-opacity-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/building-symbolizer-opacity-512-512-2.0-agg-reference.png b/tests/visual_tests/images/building-symbolizer-opacity-512-512-2.0-agg-reference.png deleted file mode 100644 index 560f7159e..000000000 Binary files a/tests/visual_tests/images/building-symbolizer-opacity-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/building-symbolizer-opacity-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/building-symbolizer-opacity-512-512-2.0-cairo-reference.png deleted file mode 100644 index 6b3504584..000000000 Binary files a/tests/visual_tests/images/building-symbolizer-opacity-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/charspacing-200-400-1.0-agg-reference.png b/tests/visual_tests/images/charspacing-200-400-1.0-agg-reference.png deleted file mode 100644 index c6976c363..000000000 Binary files a/tests/visual_tests/images/charspacing-200-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/charspacing-200-400-1.0-cairo-reference.png b/tests/visual_tests/images/charspacing-200-400-1.0-cairo-reference.png deleted file mode 100644 index 38c6d76da..000000000 Binary files a/tests/visual_tests/images/charspacing-200-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/charspacing-200-400-2.0-agg-reference.png b/tests/visual_tests/images/charspacing-200-400-2.0-agg-reference.png deleted file mode 100644 index 918f2414f..000000000 Binary files a/tests/visual_tests/images/charspacing-200-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/charspacing-200-400-2.0-cairo-reference.png b/tests/visual_tests/images/charspacing-200-400-2.0-cairo-reference.png deleted file mode 100644 index 09ae1130d..000000000 Binary files a/tests/visual_tests/images/charspacing-200-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/charspacing-lines-300-300-1.0-agg-reference.png b/tests/visual_tests/images/charspacing-lines-300-300-1.0-agg-reference.png deleted file mode 100644 index 5068e9079..000000000 Binary files a/tests/visual_tests/images/charspacing-lines-300-300-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/charspacing-lines-300-300-1.0-cairo-reference.png b/tests/visual_tests/images/charspacing-lines-300-300-1.0-cairo-reference.png deleted file mode 100644 index 229f0bf40..000000000 Binary files a/tests/visual_tests/images/charspacing-lines-300-300-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/charspacing-lines-300-300-2.0-agg-reference.png b/tests/visual_tests/images/charspacing-lines-300-300-2.0-agg-reference.png deleted file mode 100644 index 8083f0b66..000000000 Binary files a/tests/visual_tests/images/charspacing-lines-300-300-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/charspacing-lines-300-300-2.0-cairo-reference.png b/tests/visual_tests/images/charspacing-lines-300-300-2.0-cairo-reference.png deleted file mode 100644 index 64373f432..000000000 Binary files a/tests/visual_tests/images/charspacing-lines-300-300-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/collision-600-400-1.0-agg-reference.png b/tests/visual_tests/images/collision-600-400-1.0-agg-reference.png deleted file mode 100644 index c4793d70e..000000000 Binary files a/tests/visual_tests/images/collision-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/collision-600-400-1.0-agg.png b/tests/visual_tests/images/collision-600-400-1.0-agg.png deleted file mode 100644 index 808c0bdca..000000000 Binary files a/tests/visual_tests/images/collision-600-400-1.0-agg.png and /dev/null differ diff --git a/tests/visual_tests/images/collision-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/collision-600-400-1.0-cairo-reference.png deleted file mode 100644 index 7f4ae4995..000000000 Binary files a/tests/visual_tests/images/collision-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/collision-600-400-1.0-cairo.png b/tests/visual_tests/images/collision-600-400-1.0-cairo.png deleted file mode 100644 index c8a3eba8d..000000000 Binary files a/tests/visual_tests/images/collision-600-400-1.0-cairo.png and /dev/null differ diff --git a/tests/visual_tests/images/collision-600-400-1.0-grid.json b/tests/visual_tests/images/collision-600-400-1.0-grid.json deleted file mode 100644 index 25daa99fc..000000000 --- a/tests/visual_tests/images/collision-600-400-1.0-grid.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "keys": [ - "", - "1" - ], - "data": {}, - "grid": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ! ", - " !! ", - " !!!! ", - " !!!!! ", - " !!!!! ", - " !!!!! ", - " !!!! ", - " !!! ", - " !!! ", - " !!!! ", - " !!!!! ", - " !!!!!!! ", - " !!!!!! ", - " !!!! ", - " ! !!! ", - " !!!! ", - " !!!!! ", - " !!!!!! ", - " !!!! ", - " !! ", - " !! ", - " !!!! ", - " !!!!! ", - " !!!!! ", - " !!!!! ", - " !!!! ", - " !! ", - " ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!! ", - " !!! ", - " !!!! ", - " ! ! ", - " ", - " ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!! ", - " !!! ", - " !!!! ", - " !!!! ", - " ! ", - " !! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!! ", - " ! ", - " !!! ", - " !!!! ", - " !!!! ", - " !!! ", - " !!!! ", - " !!!! ", - " !!!! ", - " !!! ", - " ", - " !! ", - " !!! ", - " !!!! ", - " !!!! ", - " !!! ", - " !!!! ", - " !!! ", - " ! ! ! ", - " !! ", - " !!!! ", - " !!!!! ", - " !!!!!! ", - " !!!! ", - " !! ! !! ", - " !!!! ", - " !!!!! ", - " !!!!!!!! ", - " !!!!!! ", - " !! !!! ", - " !!!!!! ", - " !!!!!!!! ", - " !!!!!! !! ", - " !!! !!!! ", - " !!!!! !! ", - " !!!!!!!! ", - " !!!!!! ", - " !!! " - ] -} \ No newline at end of file diff --git a/tests/visual_tests/images/collision-600-400-2.0-agg-reference.png b/tests/visual_tests/images/collision-600-400-2.0-agg-reference.png deleted file mode 100644 index 72fd64809..000000000 Binary files a/tests/visual_tests/images/collision-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/collision-600-400-2.0-agg.png b/tests/visual_tests/images/collision-600-400-2.0-agg.png deleted file mode 100644 index d0e7a446f..000000000 Binary files a/tests/visual_tests/images/collision-600-400-2.0-agg.png and /dev/null differ diff --git a/tests/visual_tests/images/collision-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/collision-600-400-2.0-cairo-reference.png deleted file mode 100644 index b74dc5e79..000000000 Binary files a/tests/visual_tests/images/collision-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/collision-600-400-2.0-cairo.png b/tests/visual_tests/images/collision-600-400-2.0-cairo.png deleted file mode 100644 index d72f19440..000000000 Binary files a/tests/visual_tests/images/collision-600-400-2.0-cairo.png and /dev/null differ diff --git a/tests/visual_tests/images/colorize-alpha1-512-512-1.0-agg-reference.png b/tests/visual_tests/images/colorize-alpha1-512-512-1.0-agg-reference.png deleted file mode 100644 index 27b4496d5..000000000 Binary files a/tests/visual_tests/images/colorize-alpha1-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/colorize-alpha1-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/colorize-alpha1-512-512-1.0-cairo-reference.png deleted file mode 100644 index 24a8a1876..000000000 Binary files a/tests/visual_tests/images/colorize-alpha1-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/colorize-alpha1-512-512-2.0-agg-reference.png b/tests/visual_tests/images/colorize-alpha1-512-512-2.0-agg-reference.png deleted file mode 100644 index 7bf897af0..000000000 Binary files a/tests/visual_tests/images/colorize-alpha1-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/colorize-alpha1-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/colorize-alpha1-512-512-2.0-cairo-reference.png deleted file mode 100644 index f4266ef39..000000000 Binary files a/tests/visual_tests/images/colorize-alpha1-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/colorize-alpha2-512-512-1.0-agg-reference.png b/tests/visual_tests/images/colorize-alpha2-512-512-1.0-agg-reference.png deleted file mode 100644 index 975fe4907..000000000 Binary files a/tests/visual_tests/images/colorize-alpha2-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/colorize-alpha2-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/colorize-alpha2-512-512-1.0-cairo-reference.png deleted file mode 100644 index 24a8a1876..000000000 Binary files a/tests/visual_tests/images/colorize-alpha2-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/colorize-alpha2-512-512-2.0-agg-reference.png b/tests/visual_tests/images/colorize-alpha2-512-512-2.0-agg-reference.png deleted file mode 100644 index 661f67803..000000000 Binary files a/tests/visual_tests/images/colorize-alpha2-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/colorize-alpha2-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/colorize-alpha2-512-512-2.0-cairo-reference.png deleted file mode 100644 index f4266ef39..000000000 Binary files a/tests/visual_tests/images/colorize-alpha2-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/colorize-alpha3-512-512-1.0-agg-reference.png b/tests/visual_tests/images/colorize-alpha3-512-512-1.0-agg-reference.png deleted file mode 100644 index f39190293..000000000 Binary files a/tests/visual_tests/images/colorize-alpha3-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/colorize-alpha3-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/colorize-alpha3-512-512-1.0-cairo-reference.png deleted file mode 100644 index 24a8a1876..000000000 Binary files a/tests/visual_tests/images/colorize-alpha3-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/colorize-alpha3-512-512-2.0-agg-reference.png b/tests/visual_tests/images/colorize-alpha3-512-512-2.0-agg-reference.png deleted file mode 100644 index 30a571da3..000000000 Binary files a/tests/visual_tests/images/colorize-alpha3-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/colorize-alpha3-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/colorize-alpha3-512-512-2.0-cairo-reference.png deleted file mode 100644 index f4266ef39..000000000 Binary files a/tests/visual_tests/images/colorize-alpha3-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/dots-500-100-1.0-agg-reference.png b/tests/visual_tests/images/dots-500-100-1.0-agg-reference.png deleted file mode 100644 index c9b1d7b4d..000000000 Binary files a/tests/visual_tests/images/dots-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/dots-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/dots-500-100-1.0-cairo-reference.png deleted file mode 100644 index e11b74acf..000000000 Binary files a/tests/visual_tests/images/dots-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/dots-500-100-2.0-agg-reference.png b/tests/visual_tests/images/dots-500-100-2.0-agg-reference.png deleted file mode 100644 index c9b1d7b4d..000000000 Binary files a/tests/visual_tests/images/dots-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/dots-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/dots-500-100-2.0-cairo-reference.png deleted file mode 100644 index e11b74acf..000000000 Binary files a/tests/visual_tests/images/dots-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/dst-over-compositing-512-512-1.0-agg-reference.png b/tests/visual_tests/images/dst-over-compositing-512-512-1.0-agg-reference.png deleted file mode 100644 index cde23168f..000000000 Binary files a/tests/visual_tests/images/dst-over-compositing-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/dst-over-compositing-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/dst-over-compositing-512-512-1.0-cairo-reference.png deleted file mode 100644 index aa51da4ef..000000000 Binary files a/tests/visual_tests/images/dst-over-compositing-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/dst-over-compositing-512-512-2.0-agg-reference.png b/tests/visual_tests/images/dst-over-compositing-512-512-2.0-agg-reference.png deleted file mode 100644 index 685debbe7..000000000 Binary files a/tests/visual_tests/images/dst-over-compositing-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/dst-over-compositing-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/dst-over-compositing-512-512-2.0-cairo-reference.png deleted file mode 100644 index aa51da4ef..000000000 Binary files a/tests/visual_tests/images/dst-over-compositing-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/expressionformat-500-100-1.0-agg-reference.png b/tests/visual_tests/images/expressionformat-500-100-1.0-agg-reference.png deleted file mode 100644 index 0781f3836..000000000 Binary files a/tests/visual_tests/images/expressionformat-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/expressionformat-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/expressionformat-500-100-1.0-cairo-reference.png deleted file mode 100644 index 3f47f8529..000000000 Binary files a/tests/visual_tests/images/expressionformat-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/expressionformat-500-100-2.0-agg-reference.png b/tests/visual_tests/images/expressionformat-500-100-2.0-agg-reference.png deleted file mode 100644 index 3b7263de3..000000000 Binary files a/tests/visual_tests/images/expressionformat-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/expressionformat-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/expressionformat-500-100-2.0-cairo-reference.png deleted file mode 100644 index de1f80384..000000000 Binary files a/tests/visual_tests/images/expressionformat-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-1-500-100-1.0-agg-reference.png b/tests/visual_tests/images/formatting-1-500-100-1.0-agg-reference.png deleted file mode 100644 index 64be9c95e..000000000 Binary files a/tests/visual_tests/images/formatting-1-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-1-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/formatting-1-500-100-1.0-cairo-reference.png deleted file mode 100644 index 52d5d5cdb..000000000 Binary files a/tests/visual_tests/images/formatting-1-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-1-500-100-2.0-agg-reference.png b/tests/visual_tests/images/formatting-1-500-100-2.0-agg-reference.png deleted file mode 100644 index a43a8d760..000000000 Binary files a/tests/visual_tests/images/formatting-1-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-1-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/formatting-1-500-100-2.0-cairo-reference.png deleted file mode 100644 index 17d6caf32..000000000 Binary files a/tests/visual_tests/images/formatting-1-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-2-500-100-1.0-agg-reference.png b/tests/visual_tests/images/formatting-2-500-100-1.0-agg-reference.png deleted file mode 100644 index 64be9c95e..000000000 Binary files a/tests/visual_tests/images/formatting-2-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-2-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/formatting-2-500-100-1.0-cairo-reference.png deleted file mode 100644 index 52d5d5cdb..000000000 Binary files a/tests/visual_tests/images/formatting-2-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-2-500-100-2.0-agg-reference.png b/tests/visual_tests/images/formatting-2-500-100-2.0-agg-reference.png deleted file mode 100644 index a43a8d760..000000000 Binary files a/tests/visual_tests/images/formatting-2-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-2-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/formatting-2-500-100-2.0-cairo-reference.png deleted file mode 100644 index 17d6caf32..000000000 Binary files a/tests/visual_tests/images/formatting-2-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-3-500-100-1.0-agg-reference.png b/tests/visual_tests/images/formatting-3-500-100-1.0-agg-reference.png deleted file mode 100644 index cc9131041..000000000 Binary files a/tests/visual_tests/images/formatting-3-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-3-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/formatting-3-500-100-1.0-cairo-reference.png deleted file mode 100644 index ffabcb0e6..000000000 Binary files a/tests/visual_tests/images/formatting-3-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-3-500-100-2.0-agg-reference.png b/tests/visual_tests/images/formatting-3-500-100-2.0-agg-reference.png deleted file mode 100644 index d0ff1b474..000000000 Binary files a/tests/visual_tests/images/formatting-3-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-3-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/formatting-3-500-100-2.0-cairo-reference.png deleted file mode 100644 index ae70b9a36..000000000 Binary files a/tests/visual_tests/images/formatting-3-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-4-500-100-1.0-agg-reference.png b/tests/visual_tests/images/formatting-4-500-100-1.0-agg-reference.png deleted file mode 100644 index fa3ffc1c5..000000000 Binary files a/tests/visual_tests/images/formatting-4-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-4-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/formatting-4-500-100-1.0-cairo-reference.png deleted file mode 100644 index fa3ffc1c5..000000000 Binary files a/tests/visual_tests/images/formatting-4-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-4-500-100-2.0-agg-reference.png b/tests/visual_tests/images/formatting-4-500-100-2.0-agg-reference.png deleted file mode 100644 index 4c2ce1bef..000000000 Binary files a/tests/visual_tests/images/formatting-4-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-4-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/formatting-4-500-100-2.0-cairo-reference.png deleted file mode 100644 index 43f9fcf36..000000000 Binary files a/tests/visual_tests/images/formatting-4-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-5-500-100-1.0-agg-reference.png b/tests/visual_tests/images/formatting-5-500-100-1.0-agg-reference.png deleted file mode 100644 index 64be9c95e..000000000 Binary files a/tests/visual_tests/images/formatting-5-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-5-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/formatting-5-500-100-1.0-cairo-reference.png deleted file mode 100644 index 52d5d5cdb..000000000 Binary files a/tests/visual_tests/images/formatting-5-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-5-500-100-2.0-agg-reference.png b/tests/visual_tests/images/formatting-5-500-100-2.0-agg-reference.png deleted file mode 100644 index a43a8d760..000000000 Binary files a/tests/visual_tests/images/formatting-5-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-5-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/formatting-5-500-100-2.0-cairo-reference.png deleted file mode 100644 index 17d6caf32..000000000 Binary files a/tests/visual_tests/images/formatting-5-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-6-500-100-1.0-agg-reference.png b/tests/visual_tests/images/formatting-6-500-100-1.0-agg-reference.png deleted file mode 100644 index 64be9c95e..000000000 Binary files a/tests/visual_tests/images/formatting-6-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-6-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/formatting-6-500-100-1.0-cairo-reference.png deleted file mode 100644 index 52d5d5cdb..000000000 Binary files a/tests/visual_tests/images/formatting-6-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-6-500-100-2.0-agg-reference.png b/tests/visual_tests/images/formatting-6-500-100-2.0-agg-reference.png deleted file mode 100644 index a43a8d760..000000000 Binary files a/tests/visual_tests/images/formatting-6-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-6-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/formatting-6-500-100-2.0-cairo-reference.png deleted file mode 100644 index 17d6caf32..000000000 Binary files a/tests/visual_tests/images/formatting-6-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-7-500-100-1.0-agg-reference.png b/tests/visual_tests/images/formatting-7-500-100-1.0-agg-reference.png deleted file mode 100644 index 64be9c95e..000000000 Binary files a/tests/visual_tests/images/formatting-7-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-7-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/formatting-7-500-100-1.0-cairo-reference.png deleted file mode 100644 index 52d5d5cdb..000000000 Binary files a/tests/visual_tests/images/formatting-7-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-7-500-100-2.0-agg-reference.png b/tests/visual_tests/images/formatting-7-500-100-2.0-agg-reference.png deleted file mode 100644 index a43a8d760..000000000 Binary files a/tests/visual_tests/images/formatting-7-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-7-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/formatting-7-500-100-2.0-cairo-reference.png deleted file mode 100644 index 17d6caf32..000000000 Binary files a/tests/visual_tests/images/formatting-7-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-8-500-100-1.0-agg-reference.png b/tests/visual_tests/images/formatting-8-500-100-1.0-agg-reference.png deleted file mode 100644 index 64be9c95e..000000000 Binary files a/tests/visual_tests/images/formatting-8-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-8-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/formatting-8-500-100-1.0-cairo-reference.png deleted file mode 100644 index 52d5d5cdb..000000000 Binary files a/tests/visual_tests/images/formatting-8-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-8-500-100-2.0-agg-reference.png b/tests/visual_tests/images/formatting-8-500-100-2.0-agg-reference.png deleted file mode 100644 index a43a8d760..000000000 Binary files a/tests/visual_tests/images/formatting-8-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-8-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/formatting-8-500-100-2.0-cairo-reference.png deleted file mode 100644 index 17d6caf32..000000000 Binary files a/tests/visual_tests/images/formatting-8-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-expr-alignment-500-500-1.0-agg-reference.png b/tests/visual_tests/images/formatting-expr-alignment-500-500-1.0-agg-reference.png deleted file mode 100644 index 65d3d0811..000000000 Binary files a/tests/visual_tests/images/formatting-expr-alignment-500-500-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-expr-alignment-500-500-1.0-cairo-reference.png b/tests/visual_tests/images/formatting-expr-alignment-500-500-1.0-cairo-reference.png deleted file mode 100644 index 883a7d53e..000000000 Binary files a/tests/visual_tests/images/formatting-expr-alignment-500-500-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-expr-alignment-500-500-2.0-agg-reference.png b/tests/visual_tests/images/formatting-expr-alignment-500-500-2.0-agg-reference.png deleted file mode 100644 index d2a79b230..000000000 Binary files a/tests/visual_tests/images/formatting-expr-alignment-500-500-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/formatting-expr-alignment-500-500-2.0-cairo-reference.png b/tests/visual_tests/images/formatting-expr-alignment-500-500-2.0-cairo-reference.png deleted file mode 100644 index 2cf0264d9..000000000 Binary files a/tests/visual_tests/images/formatting-expr-alignment-500-500-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/functional-expressions-256-256-1.0-agg-reference.png b/tests/visual_tests/images/functional-expressions-256-256-1.0-agg-reference.png deleted file mode 100644 index 6f83711ad..000000000 Binary files a/tests/visual_tests/images/functional-expressions-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/functional-expressions-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/functional-expressions-256-256-1.0-cairo-reference.png deleted file mode 100644 index fca6441a4..000000000 Binary files a/tests/visual_tests/images/functional-expressions-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/functional-expressions-256-256-2.0-agg-reference.png b/tests/visual_tests/images/functional-expressions-256-256-2.0-agg-reference.png deleted file mode 100644 index 8041c1280..000000000 Binary files a/tests/visual_tests/images/functional-expressions-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/functional-expressions-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/functional-expressions-256-256-2.0-cairo-reference.png deleted file mode 100644 index 97b599874..000000000 Binary files a/tests/visual_tests/images/functional-expressions-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/functional-expressions-length-512-512-1.0-agg-reference.png b/tests/visual_tests/images/functional-expressions-length-512-512-1.0-agg-reference.png deleted file mode 100644 index 427b74ce1..000000000 Binary files a/tests/visual_tests/images/functional-expressions-length-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/functional-expressions-length-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/functional-expressions-length-512-512-1.0-cairo-reference.png deleted file mode 100644 index 731f9ddb3..000000000 Binary files a/tests/visual_tests/images/functional-expressions-length-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/functional-expressions-length-512-512-2.0-agg-reference.png b/tests/visual_tests/images/functional-expressions-length-512-512-2.0-agg-reference.png deleted file mode 100644 index 9fc93a556..000000000 Binary files a/tests/visual_tests/images/functional-expressions-length-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/functional-expressions-length-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/functional-expressions-length-512-512-2.0-cairo-reference.png deleted file mode 100644 index b24eb4776..000000000 Binary files a/tests/visual_tests/images/functional-expressions-length-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/gdal-filter-factor-600-400-1.0-agg-reference.png b/tests/visual_tests/images/gdal-filter-factor-600-400-1.0-agg-reference.png deleted file mode 100644 index d6130fd62..000000000 Binary files a/tests/visual_tests/images/gdal-filter-factor-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/gdal-filter-factor-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/gdal-filter-factor-600-400-1.0-cairo-reference.png deleted file mode 100644 index d6130fd62..000000000 Binary files a/tests/visual_tests/images/gdal-filter-factor-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/gdal-filter-factor-600-400-2.0-agg-reference.png b/tests/visual_tests/images/gdal-filter-factor-600-400-2.0-agg-reference.png deleted file mode 100644 index d6130fd62..000000000 Binary files a/tests/visual_tests/images/gdal-filter-factor-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/gdal-filter-factor-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/gdal-filter-factor-600-400-2.0-cairo-reference.png deleted file mode 100644 index d6130fd62..000000000 Binary files a/tests/visual_tests/images/gdal-filter-factor-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geojson-geometry-collection-256-256-1.0-agg-reference.png b/tests/visual_tests/images/geojson-geometry-collection-256-256-1.0-agg-reference.png deleted file mode 100644 index f53c79907..000000000 Binary files a/tests/visual_tests/images/geojson-geometry-collection-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geojson-geometry-collection-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/geojson-geometry-collection-256-256-1.0-cairo-reference.png deleted file mode 100644 index fe7a53ec6..000000000 Binary files a/tests/visual_tests/images/geojson-geometry-collection-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geojson-geometry-collection-256-256-2.0-agg-reference.png b/tests/visual_tests/images/geojson-geometry-collection-256-256-2.0-agg-reference.png deleted file mode 100644 index 206205586..000000000 Binary files a/tests/visual_tests/images/geojson-geometry-collection-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geojson-geometry-collection-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/geojson-geometry-collection-256-256-2.0-cairo-reference.png deleted file mode 100644 index 03d961875..000000000 Binary files a/tests/visual_tests/images/geojson-geometry-collection-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-scale-500-500-1.0-agg-reference.png b/tests/visual_tests/images/geometry-transform-scale-500-500-1.0-agg-reference.png deleted file mode 100644 index 820af7496..000000000 Binary files a/tests/visual_tests/images/geometry-transform-scale-500-500-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-scale-500-500-1.0-cairo-reference.png b/tests/visual_tests/images/geometry-transform-scale-500-500-1.0-cairo-reference.png deleted file mode 100644 index 23814149e..000000000 Binary files a/tests/visual_tests/images/geometry-transform-scale-500-500-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-scale-500-500-2.0-agg-reference.png b/tests/visual_tests/images/geometry-transform-scale-500-500-2.0-agg-reference.png deleted file mode 100644 index 518cb570e..000000000 Binary files a/tests/visual_tests/images/geometry-transform-scale-500-500-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-scale-500-500-2.0-cairo-reference.png b/tests/visual_tests/images/geometry-transform-scale-500-500-2.0-cairo-reference.png deleted file mode 100644 index 83b72c1f7..000000000 Binary files a/tests/visual_tests/images/geometry-transform-scale-500-500-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-scale-patterns-500-500-1.0-agg-reference.png b/tests/visual_tests/images/geometry-transform-scale-patterns-500-500-1.0-agg-reference.png deleted file mode 100644 index 76eaf0b5e..000000000 Binary files a/tests/visual_tests/images/geometry-transform-scale-patterns-500-500-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-scale-patterns-500-500-1.0-cairo-reference.png b/tests/visual_tests/images/geometry-transform-scale-patterns-500-500-1.0-cairo-reference.png deleted file mode 100644 index 27c93ac18..000000000 Binary files a/tests/visual_tests/images/geometry-transform-scale-patterns-500-500-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-scale-patterns-500-500-2.0-agg-reference.png b/tests/visual_tests/images/geometry-transform-scale-patterns-500-500-2.0-agg-reference.png deleted file mode 100644 index eee2ab7af..000000000 Binary files a/tests/visual_tests/images/geometry-transform-scale-patterns-500-500-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-scale-patterns-500-500-2.0-cairo-reference.png b/tests/visual_tests/images/geometry-transform-scale-patterns-500-500-2.0-cairo-reference.png deleted file mode 100644 index 6342816f6..000000000 Binary files a/tests/visual_tests/images/geometry-transform-scale-patterns-500-500-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-translate-200-200-1.0-agg-reference.png b/tests/visual_tests/images/geometry-transform-translate-200-200-1.0-agg-reference.png deleted file mode 100644 index 7c7086ed6..000000000 Binary files a/tests/visual_tests/images/geometry-transform-translate-200-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-translate-200-200-1.0-cairo-reference.png b/tests/visual_tests/images/geometry-transform-translate-200-200-1.0-cairo-reference.png deleted file mode 100644 index d7929db08..000000000 Binary files a/tests/visual_tests/images/geometry-transform-translate-200-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-translate-200-200-2.0-agg-reference.png b/tests/visual_tests/images/geometry-transform-translate-200-200-2.0-agg-reference.png deleted file mode 100644 index 12e0a9adb..000000000 Binary files a/tests/visual_tests/images/geometry-transform-translate-200-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-translate-200-200-2.0-cairo-reference.png b/tests/visual_tests/images/geometry-transform-translate-200-200-2.0-cairo-reference.png deleted file mode 100644 index c2078916b..000000000 Binary files a/tests/visual_tests/images/geometry-transform-translate-200-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-translate-patterns-200-200-1.0-agg-reference.png b/tests/visual_tests/images/geometry-transform-translate-patterns-200-200-1.0-agg-reference.png deleted file mode 100644 index 9a68f740a..000000000 Binary files a/tests/visual_tests/images/geometry-transform-translate-patterns-200-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-translate-patterns-200-200-1.0-cairo-reference.png b/tests/visual_tests/images/geometry-transform-translate-patterns-200-200-1.0-cairo-reference.png deleted file mode 100644 index 03f7e4c97..000000000 Binary files a/tests/visual_tests/images/geometry-transform-translate-patterns-200-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-translate-patterns-200-200-2.0-agg-reference.png b/tests/visual_tests/images/geometry-transform-translate-patterns-200-200-2.0-agg-reference.png deleted file mode 100644 index 44786428f..000000000 Binary files a/tests/visual_tests/images/geometry-transform-translate-patterns-200-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-translate-patterns-200-200-2.0-cairo-reference.png b/tests/visual_tests/images/geometry-transform-translate-patterns-200-200-2.0-cairo-reference.png deleted file mode 100644 index 9bdd6da17..000000000 Binary files a/tests/visual_tests/images/geometry-transform-translate-patterns-200-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-translate-patterns-svg-200-200-1.0-agg-reference.png b/tests/visual_tests/images/geometry-transform-translate-patterns-svg-200-200-1.0-agg-reference.png deleted file mode 100644 index 1204e2138..000000000 Binary files a/tests/visual_tests/images/geometry-transform-translate-patterns-svg-200-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-translate-patterns-svg-200-200-1.0-cairo-reference.png b/tests/visual_tests/images/geometry-transform-translate-patterns-svg-200-200-1.0-cairo-reference.png deleted file mode 100644 index cd17dfe1e..000000000 Binary files a/tests/visual_tests/images/geometry-transform-translate-patterns-svg-200-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-translate-patterns-svg-200-200-2.0-agg-reference.png b/tests/visual_tests/images/geometry-transform-translate-patterns-svg-200-200-2.0-agg-reference.png deleted file mode 100644 index 210990d54..000000000 Binary files a/tests/visual_tests/images/geometry-transform-translate-patterns-svg-200-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/geometry-transform-translate-patterns-svg-200-200-2.0-cairo-reference.png b/tests/visual_tests/images/geometry-transform-translate-patterns-svg-200-200-2.0-cairo-reference.png deleted file mode 100644 index 21bdb3eca..000000000 Binary files a/tests/visual_tests/images/geometry-transform-translate-patterns-svg-200-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-1-512-512-1.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-1-512-512-1.0-agg-reference.png deleted file mode 100644 index df24c35d3..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-1-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-1-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-1-512-512-1.0-cairo-reference.png deleted file mode 100644 index f35755b7c..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-1-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-1-512-512-2.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-1-512-512-2.0-agg-reference.png deleted file mode 100644 index 91711d969..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-1-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-1-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-1-512-512-2.0-cairo-reference.png deleted file mode 100644 index 2c109d2d2..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-1-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-2-512-512-1.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-2-512-512-1.0-agg-reference.png deleted file mode 100644 index bef874b71..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-2-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-2-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-2-512-512-1.0-cairo-reference.png deleted file mode 100644 index 0d43c451f..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-2-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-2-512-512-2.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-2-512-512-2.0-agg-reference.png deleted file mode 100644 index aebd66e83..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-2-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-2-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-2-512-512-2.0-cairo-reference.png deleted file mode 100644 index 56de27930..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-2-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-3-512-256-1.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-3-512-256-1.0-agg-reference.png deleted file mode 100644 index 33be04dc2..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-3-512-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-3-512-256-1.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-3-512-256-1.0-cairo-reference.png deleted file mode 100644 index 567d77c04..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-3-512-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-3-512-256-2.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-3-512-256-2.0-agg-reference.png deleted file mode 100644 index 2ff84564e..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-3-512-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-3-512-256-2.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-3-512-256-2.0-cairo-reference.png deleted file mode 100644 index 5a023e40c..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-3-512-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-4-500-100-1.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-4-500-100-1.0-agg-reference.png deleted file mode 100644 index 6d9467406..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-4-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-4-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-4-500-100-1.0-cairo-reference.png deleted file mode 100644 index 15ce645b3..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-4-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-4-500-100-2.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-4-500-100-2.0-agg-reference.png deleted file mode 100644 index ec7c0bb8d..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-4-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-4-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-4-500-100-2.0-cairo-reference.png deleted file mode 100644 index c844a95b7..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-4-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-4-512-256-1.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-4-512-256-1.0-agg-reference.png deleted file mode 100644 index 5c39f4591..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-4-512-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-4-512-256-1.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-4-512-256-1.0-cairo-reference.png deleted file mode 100644 index 1d40bd89e..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-4-512-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-4-512-256-2.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-4-512-256-2.0-agg-reference.png deleted file mode 100644 index 56ed895dd..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-4-512-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-4-512-256-2.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-4-512-256-2.0-cairo-reference.png deleted file mode 100644 index 9978139ff..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-4-512-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-1-512-512-1.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-line-1-512-512-1.0-agg-reference.png deleted file mode 100644 index 00df3fef3..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-1-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-1-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-line-1-512-512-1.0-cairo-reference.png deleted file mode 100644 index 07a3f932b..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-1-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-1-512-512-2.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-line-1-512-512-2.0-agg-reference.png deleted file mode 100644 index fa0c2c9ce..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-1-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-1-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-line-1-512-512-2.0-cairo-reference.png deleted file mode 100644 index f14e37c24..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-1-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-2-512-512-1.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-line-2-512-512-1.0-agg-reference.png deleted file mode 100644 index e5a0b8166..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-2-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-2-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-line-2-512-512-1.0-cairo-reference.png deleted file mode 100644 index d284916ef..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-2-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-2-512-512-2.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-line-2-512-512-2.0-agg-reference.png deleted file mode 100644 index f67cdd7ff..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-2-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-2-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-line-2-512-512-2.0-cairo-reference.png deleted file mode 100644 index 5e1f4992a..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-2-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-avoid-edges-512-512-1.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-line-avoid-edges-512-512-1.0-agg-reference.png deleted file mode 100644 index 5b5152459..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-avoid-edges-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-avoid-edges-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-line-avoid-edges-512-512-1.0-cairo-reference.png deleted file mode 100644 index a37ec5267..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-avoid-edges-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-avoid-edges-512-512-2.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-line-avoid-edges-512-512-2.0-agg-reference.png deleted file mode 100644 index 81c0645bf..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-avoid-edges-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-avoid-edges-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-line-avoid-edges-512-512-2.0-cairo-reference.png deleted file mode 100644 index a538d5b03..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-avoid-edges-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-minimum-padding-512-512-1.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-line-minimum-padding-512-512-1.0-agg-reference.png deleted file mode 100644 index a4f075d88..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-minimum-padding-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-minimum-padding-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-line-minimum-padding-512-512-1.0-cairo-reference.png deleted file mode 100644 index 9e7285320..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-minimum-padding-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-minimum-padding-512-512-2.0-agg-reference.png b/tests/visual_tests/images/group-symbolizer-line-minimum-padding-512-512-2.0-agg-reference.png deleted file mode 100644 index d9c6f9cf8..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-minimum-padding-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/group-symbolizer-line-minimum-padding-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/group-symbolizer-line-minimum-padding-512-512-2.0-cairo-reference.png deleted file mode 100644 index 46a7988ca..000000000 Binary files a/tests/visual_tests/images/group-symbolizer-line-minimum-padding-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/halo-comp-op-on-satellite-450-450-1.0-agg-reference.png b/tests/visual_tests/images/halo-comp-op-on-satellite-450-450-1.0-agg-reference.png deleted file mode 100644 index 55b0559d3..000000000 Binary files a/tests/visual_tests/images/halo-comp-op-on-satellite-450-450-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/halo-comp-op-on-satellite-450-450-1.0-cairo-reference.png b/tests/visual_tests/images/halo-comp-op-on-satellite-450-450-1.0-cairo-reference.png deleted file mode 100644 index 1a33ced33..000000000 Binary files a/tests/visual_tests/images/halo-comp-op-on-satellite-450-450-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/halo-comp-op-on-satellite-450-450-2.0-agg-reference.png b/tests/visual_tests/images/halo-comp-op-on-satellite-450-450-2.0-agg-reference.png deleted file mode 100644 index 147e05657..000000000 Binary files a/tests/visual_tests/images/halo-comp-op-on-satellite-450-450-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/halo-comp-op-on-satellite-450-450-2.0-cairo-reference.png b/tests/visual_tests/images/halo-comp-op-on-satellite-450-450-2.0-cairo-reference.png deleted file mode 100644 index ba73af49f..000000000 Binary files a/tests/visual_tests/images/halo-comp-op-on-satellite-450-450-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/harfbuzz-800-200-1.0-agg-reference.png b/tests/visual_tests/images/harfbuzz-800-200-1.0-agg-reference.png deleted file mode 100644 index f11d26423..000000000 Binary files a/tests/visual_tests/images/harfbuzz-800-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/harfbuzz-800-200-1.0-cairo-reference.png b/tests/visual_tests/images/harfbuzz-800-200-1.0-cairo-reference.png deleted file mode 100644 index f83b2778a..000000000 Binary files a/tests/visual_tests/images/harfbuzz-800-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/harfbuzz-800-200-2.0-agg-reference.png b/tests/visual_tests/images/harfbuzz-800-200-2.0-agg-reference.png deleted file mode 100644 index adecccb54..000000000 Binary files a/tests/visual_tests/images/harfbuzz-800-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/harfbuzz-800-200-2.0-cairo-reference.png b/tests/visual_tests/images/harfbuzz-800-200-2.0-cairo-reference.png deleted file mode 100644 index b1fd3d835..000000000 Binary files a/tests/visual_tests/images/harfbuzz-800-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/hb-fontsets-800-200-1.0-agg-reference.png b/tests/visual_tests/images/hb-fontsets-800-200-1.0-agg-reference.png deleted file mode 100644 index ef8510f04..000000000 Binary files a/tests/visual_tests/images/hb-fontsets-800-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/hb-fontsets-800-200-1.0-cairo-reference.png b/tests/visual_tests/images/hb-fontsets-800-200-1.0-cairo-reference.png deleted file mode 100644 index a5219625b..000000000 Binary files a/tests/visual_tests/images/hb-fontsets-800-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/hb-fontsets-800-200-2.0-agg-reference.png b/tests/visual_tests/images/hb-fontsets-800-200-2.0-agg-reference.png deleted file mode 100644 index 18990f201..000000000 Binary files a/tests/visual_tests/images/hb-fontsets-800-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/hb-fontsets-800-200-2.0-cairo-reference.png b/tests/visual_tests/images/hb-fontsets-800-200-2.0-cairo-reference.png deleted file mode 100644 index b9e7aec73..000000000 Binary files a/tests/visual_tests/images/hb-fontsets-800-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/image-filters-galore-512-512-1.0-agg-reference.png b/tests/visual_tests/images/image-filters-galore-512-512-1.0-agg-reference.png deleted file mode 100644 index f2df50a8a..000000000 Binary files a/tests/visual_tests/images/image-filters-galore-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/image-filters-galore-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/image-filters-galore-512-512-1.0-cairo-reference.png deleted file mode 100644 index f6c9d11c4..000000000 Binary files a/tests/visual_tests/images/image-filters-galore-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/image-filters-galore-512-512-2.0-agg-reference.png b/tests/visual_tests/images/image-filters-galore-512-512-2.0-agg-reference.png deleted file mode 100644 index f2df50a8a..000000000 Binary files a/tests/visual_tests/images/image-filters-galore-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/image-filters-galore-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/image-filters-galore-512-512-2.0-cairo-reference.png deleted file mode 100644 index f6c9d11c4..000000000 Binary files a/tests/visual_tests/images/image-filters-galore-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/image-filters-multi-blur-512-512-1.0-agg-reference.png b/tests/visual_tests/images/image-filters-multi-blur-512-512-1.0-agg-reference.png deleted file mode 100644 index f482887dd..000000000 Binary files a/tests/visual_tests/images/image-filters-multi-blur-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/image-filters-multi-blur-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/image-filters-multi-blur-512-512-1.0-cairo-reference.png deleted file mode 100644 index caf6fc826..000000000 Binary files a/tests/visual_tests/images/image-filters-multi-blur-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/image-filters-multi-blur-512-512-2.0-agg-reference.png b/tests/visual_tests/images/image-filters-multi-blur-512-512-2.0-agg-reference.png deleted file mode 100644 index 1492c17e8..000000000 Binary files a/tests/visual_tests/images/image-filters-multi-blur-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/image-filters-multi-blur-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/image-filters-multi-blur-512-512-2.0-cairo-reference.png deleted file mode 100644 index 579c89b84..000000000 Binary files a/tests/visual_tests/images/image-filters-multi-blur-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/image-filters-multi-blur-inflate-512-512-1.0-agg-reference.png b/tests/visual_tests/images/image-filters-multi-blur-inflate-512-512-1.0-agg-reference.png deleted file mode 100644 index 7c977a10c..000000000 Binary files a/tests/visual_tests/images/image-filters-multi-blur-inflate-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/image-filters-multi-blur-inflate-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/image-filters-multi-blur-inflate-512-512-1.0-cairo-reference.png deleted file mode 100644 index caf6fc826..000000000 Binary files a/tests/visual_tests/images/image-filters-multi-blur-inflate-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/image-filters-multi-blur-inflate-512-512-2.0-agg-reference.png b/tests/visual_tests/images/image-filters-multi-blur-inflate-512-512-2.0-agg-reference.png deleted file mode 100644 index b4aeaaf71..000000000 Binary files a/tests/visual_tests/images/image-filters-multi-blur-inflate-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/image-filters-multi-blur-inflate-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/image-filters-multi-blur-inflate-512-512-2.0-cairo-reference.png deleted file mode 100644 index 579c89b84..000000000 Binary files a/tests/visual_tests/images/image-filters-multi-blur-inflate-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/jalign-auto-200-200-1.0-agg-reference.png b/tests/visual_tests/images/jalign-auto-200-200-1.0-agg-reference.png deleted file mode 100644 index 0fd4d818b..000000000 Binary files a/tests/visual_tests/images/jalign-auto-200-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/jalign-auto-200-200-1.0-cairo-reference.png b/tests/visual_tests/images/jalign-auto-200-200-1.0-cairo-reference.png deleted file mode 100644 index a92df8755..000000000 Binary files a/tests/visual_tests/images/jalign-auto-200-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/jalign-auto-200-200-2.0-agg-reference.png b/tests/visual_tests/images/jalign-auto-200-200-2.0-agg-reference.png deleted file mode 100644 index fecedca3c..000000000 Binary files a/tests/visual_tests/images/jalign-auto-200-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/jalign-auto-200-200-2.0-cairo-reference.png b/tests/visual_tests/images/jalign-auto-200-200-2.0-cairo-reference.png deleted file mode 100644 index 8d99da3c8..000000000 Binary files a/tests/visual_tests/images/jalign-auto-200-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/khmer-800-200-1.0-agg-reference.png b/tests/visual_tests/images/khmer-800-200-1.0-agg-reference.png deleted file mode 100644 index e462c19a5..000000000 Binary files a/tests/visual_tests/images/khmer-800-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/khmer-800-200-1.0-cairo-reference.png b/tests/visual_tests/images/khmer-800-200-1.0-cairo-reference.png deleted file mode 100644 index 9881bc0a2..000000000 Binary files a/tests/visual_tests/images/khmer-800-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/khmer-800-200-2.0-agg-reference.png b/tests/visual_tests/images/khmer-800-200-2.0-agg-reference.png deleted file mode 100644 index f54f69361..000000000 Binary files a/tests/visual_tests/images/khmer-800-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/khmer-800-200-2.0-cairo-reference.png b/tests/visual_tests/images/khmer-800-200-2.0-cairo-reference.png deleted file mode 100644 index 38c79e98d..000000000 Binary files a/tests/visual_tests/images/khmer-800-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/kurdish-text-512-512-1.0-agg-reference.png b/tests/visual_tests/images/kurdish-text-512-512-1.0-agg-reference.png deleted file mode 100644 index f0e08ec7b..000000000 Binary files a/tests/visual_tests/images/kurdish-text-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/kurdish-text-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/kurdish-text-512-512-1.0-cairo-reference.png deleted file mode 100644 index db5bac3b4..000000000 Binary files a/tests/visual_tests/images/kurdish-text-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/kurdish-text-512-512-2.0-agg-reference.png b/tests/visual_tests/images/kurdish-text-512-512-2.0-agg-reference.png deleted file mode 100644 index 3c48219d3..000000000 Binary files a/tests/visual_tests/images/kurdish-text-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/kurdish-text-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/kurdish-text-512-512-2.0-cairo-reference.png deleted file mode 100644 index d1abf463d..000000000 Binary files a/tests/visual_tests/images/kurdish-text-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/kurdish-text-ogr-512-512-1.0-agg-reference.png b/tests/visual_tests/images/kurdish-text-ogr-512-512-1.0-agg-reference.png deleted file mode 100644 index f0e08ec7b..000000000 Binary files a/tests/visual_tests/images/kurdish-text-ogr-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/kurdish-text-ogr-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/kurdish-text-ogr-512-512-1.0-cairo-reference.png deleted file mode 100644 index db5bac3b4..000000000 Binary files a/tests/visual_tests/images/kurdish-text-ogr-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/kurdish-text-ogr-512-512-2.0-agg-reference.png b/tests/visual_tests/images/kurdish-text-ogr-512-512-2.0-agg-reference.png deleted file mode 100644 index 3c48219d3..000000000 Binary files a/tests/visual_tests/images/kurdish-text-ogr-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/kurdish-text-ogr-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/kurdish-text-ogr-512-512-2.0-cairo-reference.png deleted file mode 100644 index d1abf463d..000000000 Binary files a/tests/visual_tests/images/kurdish-text-ogr-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-offset-900-250-1.0-agg-reference.png b/tests/visual_tests/images/line-offset-900-250-1.0-agg-reference.png deleted file mode 100644 index 644529e50..000000000 Binary files a/tests/visual_tests/images/line-offset-900-250-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-offset-900-250-1.0-cairo-reference.png b/tests/visual_tests/images/line-offset-900-250-1.0-cairo-reference.png deleted file mode 100644 index eb0db9546..000000000 Binary files a/tests/visual_tests/images/line-offset-900-250-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-offset-900-250-2.0-agg-reference.png b/tests/visual_tests/images/line-offset-900-250-2.0-agg-reference.png deleted file mode 100644 index 095d02b5f..000000000 Binary files a/tests/visual_tests/images/line-offset-900-250-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-offset-900-250-2.0-cairo-reference.png b/tests/visual_tests/images/line-offset-900-250-2.0-cairo-reference.png deleted file mode 100644 index 8b65591fa..000000000 Binary files a/tests/visual_tests/images/line-offset-900-250-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-opacity-multi-render-512-512-1.0-agg-reference.png b/tests/visual_tests/images/line-opacity-multi-render-512-512-1.0-agg-reference.png deleted file mode 100644 index 73a23b95a..000000000 Binary files a/tests/visual_tests/images/line-opacity-multi-render-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-opacity-multi-render-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/line-opacity-multi-render-512-512-1.0-cairo-reference.png deleted file mode 100644 index cadd94f8d..000000000 Binary files a/tests/visual_tests/images/line-opacity-multi-render-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-opacity-multi-render-512-512-2.0-agg-reference.png b/tests/visual_tests/images/line-opacity-multi-render-512-512-2.0-agg-reference.png deleted file mode 100644 index 300842542..000000000 Binary files a/tests/visual_tests/images/line-opacity-multi-render-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-opacity-multi-render-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/line-opacity-multi-render-512-512-2.0-cairo-reference.png deleted file mode 100644 index 94fe30c24..000000000 Binary files a/tests/visual_tests/images/line-opacity-multi-render-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-issue-2726-256-256-1.0-agg-reference.png b/tests/visual_tests/images/line-pattern-issue-2726-256-256-1.0-agg-reference.png deleted file mode 100644 index 4b3c3f8c1..000000000 Binary files a/tests/visual_tests/images/line-pattern-issue-2726-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-issue-2726-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/line-pattern-issue-2726-256-256-1.0-cairo-reference.png deleted file mode 100644 index 4b3c3f8c1..000000000 Binary files a/tests/visual_tests/images/line-pattern-issue-2726-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-issue-2726-256-256-2.0-agg-reference.png b/tests/visual_tests/images/line-pattern-issue-2726-256-256-2.0-agg-reference.png deleted file mode 100644 index 4b3c3f8c1..000000000 Binary files a/tests/visual_tests/images/line-pattern-issue-2726-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-issue-2726-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/line-pattern-issue-2726-256-256-2.0-cairo-reference.png deleted file mode 100644 index 4b3c3f8c1..000000000 Binary files a/tests/visual_tests/images/line-pattern-issue-2726-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-smooth-and-offset-500-100-1.0-agg-reference.png b/tests/visual_tests/images/line-pattern-smooth-and-offset-500-100-1.0-agg-reference.png deleted file mode 100644 index 6da936da1..000000000 Binary files a/tests/visual_tests/images/line-pattern-smooth-and-offset-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-smooth-and-offset-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/line-pattern-smooth-and-offset-500-100-1.0-cairo-reference.png deleted file mode 100644 index 9818100e1..000000000 Binary files a/tests/visual_tests/images/line-pattern-smooth-and-offset-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-smooth-and-offset-500-100-2.0-agg-reference.png b/tests/visual_tests/images/line-pattern-smooth-and-offset-500-100-2.0-agg-reference.png deleted file mode 100644 index a8b724ee6..000000000 Binary files a/tests/visual_tests/images/line-pattern-smooth-and-offset-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-smooth-and-offset-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/line-pattern-smooth-and-offset-500-100-2.0-cairo-reference.png deleted file mode 100644 index 41c6076cd..000000000 Binary files a/tests/visual_tests/images/line-pattern-smooth-and-offset-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-smooth-and-offset-512-512-1.0-agg-reference.png b/tests/visual_tests/images/line-pattern-smooth-and-offset-512-512-1.0-agg-reference.png deleted file mode 100644 index 2e19a2bbf..000000000 Binary files a/tests/visual_tests/images/line-pattern-smooth-and-offset-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-smooth-and-offset-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/line-pattern-smooth-and-offset-512-512-1.0-cairo-reference.png deleted file mode 100644 index 9a2081b05..000000000 Binary files a/tests/visual_tests/images/line-pattern-smooth-and-offset-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-smooth-and-offset-512-512-2.0-agg-reference.png b/tests/visual_tests/images/line-pattern-smooth-and-offset-512-512-2.0-agg-reference.png deleted file mode 100644 index 5e79a9a95..000000000 Binary files a/tests/visual_tests/images/line-pattern-smooth-and-offset-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-smooth-and-offset-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/line-pattern-smooth-and-offset-512-512-2.0-cairo-reference.png deleted file mode 100644 index 48e86f041..000000000 Binary files a/tests/visual_tests/images/line-pattern-smooth-and-offset-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-symbolizer-900-250-1.0-agg-reference.png b/tests/visual_tests/images/line-pattern-symbolizer-900-250-1.0-agg-reference.png deleted file mode 100644 index a91822638..000000000 Binary files a/tests/visual_tests/images/line-pattern-symbolizer-900-250-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-symbolizer-900-250-1.0-cairo-reference.png b/tests/visual_tests/images/line-pattern-symbolizer-900-250-1.0-cairo-reference.png deleted file mode 100644 index ab07426ca..000000000 Binary files a/tests/visual_tests/images/line-pattern-symbolizer-900-250-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-symbolizer-900-250-2.0-agg-reference.png b/tests/visual_tests/images/line-pattern-symbolizer-900-250-2.0-agg-reference.png deleted file mode 100644 index 49f01f54b..000000000 Binary files a/tests/visual_tests/images/line-pattern-symbolizer-900-250-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-symbolizer-900-250-2.0-cairo-reference.png b/tests/visual_tests/images/line-pattern-symbolizer-900-250-2.0-cairo-reference.png deleted file mode 100644 index 9ff788714..000000000 Binary files a/tests/visual_tests/images/line-pattern-symbolizer-900-250-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-1.0-agg-reference.png b/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-1.0-agg-reference.png deleted file mode 100644 index 738f7ce18..000000000 Binary files a/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-1.0-cairo-reference.png deleted file mode 100644 index ea54754e6..000000000 Binary files a/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-2.0-agg-reference.png b/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-2.0-agg-reference.png deleted file mode 100644 index 738f7ce18..000000000 Binary files a/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-2.0-cairo-reference.png deleted file mode 100644 index ea54754e6..000000000 Binary files a/tests/visual_tests/images/line-pattern-symbolizer-opacity-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-smooth-and-offset-512-512-1.0-agg-reference.png b/tests/visual_tests/images/line-smooth-and-offset-512-512-1.0-agg-reference.png deleted file mode 100644 index d076d6582..000000000 Binary files a/tests/visual_tests/images/line-smooth-and-offset-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-smooth-and-offset-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/line-smooth-and-offset-512-512-1.0-cairo-reference.png deleted file mode 100644 index 5ef66cae7..000000000 Binary files a/tests/visual_tests/images/line-smooth-and-offset-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-smooth-and-offset-512-512-2.0-agg-reference.png b/tests/visual_tests/images/line-smooth-and-offset-512-512-2.0-agg-reference.png deleted file mode 100644 index 8fd9b3ddd..000000000 Binary files a/tests/visual_tests/images/line-smooth-and-offset-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-smooth-and-offset-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/line-smooth-and-offset-512-512-2.0-cairo-reference.png deleted file mode 100644 index 3d139ab1b..000000000 Binary files a/tests/visual_tests/images/line-smooth-and-offset-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-symbolizer-expressions-256-256-1.0-agg-reference.png b/tests/visual_tests/images/line-symbolizer-expressions-256-256-1.0-agg-reference.png deleted file mode 100644 index 3889e8f54..000000000 Binary files a/tests/visual_tests/images/line-symbolizer-expressions-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-symbolizer-expressions-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/line-symbolizer-expressions-256-256-1.0-cairo-reference.png deleted file mode 100644 index fddacfda6..000000000 Binary files a/tests/visual_tests/images/line-symbolizer-expressions-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-symbolizer-expressions-256-256-2.0-agg-reference.png b/tests/visual_tests/images/line-symbolizer-expressions-256-256-2.0-agg-reference.png deleted file mode 100644 index dcd491669..000000000 Binary files a/tests/visual_tests/images/line-symbolizer-expressions-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-symbolizer-expressions-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/line-symbolizer-expressions-256-256-2.0-cairo-reference.png deleted file mode 100644 index 7400f7687..000000000 Binary files a/tests/visual_tests/images/line-symbolizer-expressions-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-symbolizer-expressions-all-256-256-1.0-agg-reference.png b/tests/visual_tests/images/line-symbolizer-expressions-all-256-256-1.0-agg-reference.png deleted file mode 100644 index d804115b5..000000000 Binary files a/tests/visual_tests/images/line-symbolizer-expressions-all-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-symbolizer-expressions-all-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/line-symbolizer-expressions-all-256-256-1.0-cairo-reference.png deleted file mode 100644 index 310add4ac..000000000 Binary files a/tests/visual_tests/images/line-symbolizer-expressions-all-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-symbolizer-expressions-all-256-256-2.0-agg-reference.png b/tests/visual_tests/images/line-symbolizer-expressions-all-256-256-2.0-agg-reference.png deleted file mode 100644 index bac9f66e5..000000000 Binary files a/tests/visual_tests/images/line-symbolizer-expressions-all-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line-symbolizer-expressions-all-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/line-symbolizer-expressions-all-256-256-2.0-cairo-reference.png deleted file mode 100644 index 018385126..000000000 Binary files a/tests/visual_tests/images/line-symbolizer-expressions-all-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line_break-800-800-1.0-agg-reference.png b/tests/visual_tests/images/line_break-800-800-1.0-agg-reference.png deleted file mode 100644 index af83882a5..000000000 Binary files a/tests/visual_tests/images/line_break-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line_break-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/line_break-800-800-1.0-cairo-reference.png deleted file mode 100644 index dcfab57af..000000000 Binary files a/tests/visual_tests/images/line_break-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line_break-800-800-2.0-agg-reference.png b/tests/visual_tests/images/line_break-800-800-2.0-agg-reference.png deleted file mode 100644 index acf3b5566..000000000 Binary files a/tests/visual_tests/images/line_break-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/line_break-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/line_break-800-800-2.0-cairo-reference.png deleted file mode 100644 index c60f3b2c0..000000000 Binary files a/tests/visual_tests/images/line_break-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-200-200-1.0-agg-reference.png b/tests/visual_tests/images/lines-1-200-200-1.0-agg-reference.png deleted file mode 100644 index 40fb2c6ef..000000000 Binary files a/tests/visual_tests/images/lines-1-200-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-200-200-1.0-cairo-reference.png b/tests/visual_tests/images/lines-1-200-200-1.0-cairo-reference.png deleted file mode 100644 index 675002fe1..000000000 Binary files a/tests/visual_tests/images/lines-1-200-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-200-200-2.0-agg-reference.png b/tests/visual_tests/images/lines-1-200-200-2.0-agg-reference.png deleted file mode 100644 index 5b48ee538..000000000 Binary files a/tests/visual_tests/images/lines-1-200-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-200-200-2.0-cairo-reference.png b/tests/visual_tests/images/lines-1-200-200-2.0-cairo-reference.png deleted file mode 100644 index c46804b5d..000000000 Binary files a/tests/visual_tests/images/lines-1-200-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-400-400-1.0-agg-reference.png b/tests/visual_tests/images/lines-1-400-400-1.0-agg-reference.png deleted file mode 100644 index 8bac08273..000000000 Binary files a/tests/visual_tests/images/lines-1-400-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-400-400-1.0-cairo-reference.png b/tests/visual_tests/images/lines-1-400-400-1.0-cairo-reference.png deleted file mode 100644 index 31dec4591..000000000 Binary files a/tests/visual_tests/images/lines-1-400-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-400-400-2.0-agg-reference.png b/tests/visual_tests/images/lines-1-400-400-2.0-agg-reference.png deleted file mode 100644 index b6ef2dba6..000000000 Binary files a/tests/visual_tests/images/lines-1-400-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-400-400-2.0-cairo-reference.png b/tests/visual_tests/images/lines-1-400-400-2.0-cairo-reference.png deleted file mode 100644 index b3fa84eda..000000000 Binary files a/tests/visual_tests/images/lines-1-400-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-600-600-1.0-agg-reference.png b/tests/visual_tests/images/lines-1-600-600-1.0-agg-reference.png deleted file mode 100644 index 20208397e..000000000 Binary files a/tests/visual_tests/images/lines-1-600-600-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-600-600-1.0-cairo-reference.png b/tests/visual_tests/images/lines-1-600-600-1.0-cairo-reference.png deleted file mode 100644 index de8fbb265..000000000 Binary files a/tests/visual_tests/images/lines-1-600-600-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-600-600-2.0-agg-reference.png b/tests/visual_tests/images/lines-1-600-600-2.0-agg-reference.png deleted file mode 100644 index d36c9b845..000000000 Binary files a/tests/visual_tests/images/lines-1-600-600-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-600-600-2.0-cairo-reference.png b/tests/visual_tests/images/lines-1-600-600-2.0-cairo-reference.png deleted file mode 100644 index 0d454cf56..000000000 Binary files a/tests/visual_tests/images/lines-1-600-600-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-800-800-1.0-agg-reference.png b/tests/visual_tests/images/lines-1-800-800-1.0-agg-reference.png deleted file mode 100644 index 51ffc04c9..000000000 Binary files a/tests/visual_tests/images/lines-1-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/lines-1-800-800-1.0-cairo-reference.png deleted file mode 100644 index 77ccce9bd..000000000 Binary files a/tests/visual_tests/images/lines-1-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-800-800-2.0-agg-reference.png b/tests/visual_tests/images/lines-1-800-800-2.0-agg-reference.png deleted file mode 100644 index bf3daee62..000000000 Binary files a/tests/visual_tests/images/lines-1-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-1-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/lines-1-800-800-2.0-cairo-reference.png deleted file mode 100644 index 1e919d92f..000000000 Binary files a/tests/visual_tests/images/lines-1-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-200-200-1.0-agg-reference.png b/tests/visual_tests/images/lines-2-200-200-1.0-agg-reference.png deleted file mode 100644 index a493a3777..000000000 Binary files a/tests/visual_tests/images/lines-2-200-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-200-200-1.0-cairo-reference.png b/tests/visual_tests/images/lines-2-200-200-1.0-cairo-reference.png deleted file mode 100644 index bb670ccde..000000000 Binary files a/tests/visual_tests/images/lines-2-200-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-200-200-2.0-agg-reference.png b/tests/visual_tests/images/lines-2-200-200-2.0-agg-reference.png deleted file mode 100644 index 5b48ee538..000000000 Binary files a/tests/visual_tests/images/lines-2-200-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-200-200-2.0-cairo-reference.png b/tests/visual_tests/images/lines-2-200-200-2.0-cairo-reference.png deleted file mode 100644 index c46804b5d..000000000 Binary files a/tests/visual_tests/images/lines-2-200-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-400-400-1.0-agg-reference.png b/tests/visual_tests/images/lines-2-400-400-1.0-agg-reference.png deleted file mode 100644 index e7f288dc8..000000000 Binary files a/tests/visual_tests/images/lines-2-400-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-400-400-1.0-cairo-reference.png b/tests/visual_tests/images/lines-2-400-400-1.0-cairo-reference.png deleted file mode 100644 index 24ab97117..000000000 Binary files a/tests/visual_tests/images/lines-2-400-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-400-400-2.0-agg-reference.png b/tests/visual_tests/images/lines-2-400-400-2.0-agg-reference.png deleted file mode 100644 index 0b1eb7ebc..000000000 Binary files a/tests/visual_tests/images/lines-2-400-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-400-400-2.0-cairo-reference.png b/tests/visual_tests/images/lines-2-400-400-2.0-cairo-reference.png deleted file mode 100644 index 82779ac9f..000000000 Binary files a/tests/visual_tests/images/lines-2-400-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-600-600-1.0-agg-reference.png b/tests/visual_tests/images/lines-2-600-600-1.0-agg-reference.png deleted file mode 100644 index 00783e00d..000000000 Binary files a/tests/visual_tests/images/lines-2-600-600-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-600-600-1.0-cairo-reference.png b/tests/visual_tests/images/lines-2-600-600-1.0-cairo-reference.png deleted file mode 100644 index 86a68520b..000000000 Binary files a/tests/visual_tests/images/lines-2-600-600-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-600-600-2.0-agg-reference.png b/tests/visual_tests/images/lines-2-600-600-2.0-agg-reference.png deleted file mode 100644 index 9120a92e1..000000000 Binary files a/tests/visual_tests/images/lines-2-600-600-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-600-600-2.0-cairo-reference.png b/tests/visual_tests/images/lines-2-600-600-2.0-cairo-reference.png deleted file mode 100644 index b5b8b9fd7..000000000 Binary files a/tests/visual_tests/images/lines-2-600-600-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-800-800-1.0-agg-reference.png b/tests/visual_tests/images/lines-2-800-800-1.0-agg-reference.png deleted file mode 100644 index 374bd8b58..000000000 Binary files a/tests/visual_tests/images/lines-2-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/lines-2-800-800-1.0-cairo-reference.png deleted file mode 100644 index 06cba6461..000000000 Binary files a/tests/visual_tests/images/lines-2-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-800-800-2.0-agg-reference.png b/tests/visual_tests/images/lines-2-800-800-2.0-agg-reference.png deleted file mode 100644 index 6ce2d680d..000000000 Binary files a/tests/visual_tests/images/lines-2-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-2-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/lines-2-800-800-2.0-cairo-reference.png deleted file mode 100644 index 8038bcc7b..000000000 Binary files a/tests/visual_tests/images/lines-2-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-200-200-1.0-agg-reference.png b/tests/visual_tests/images/lines-3-200-200-1.0-agg-reference.png deleted file mode 100644 index 40fb2c6ef..000000000 Binary files a/tests/visual_tests/images/lines-3-200-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-200-200-1.0-cairo-reference.png b/tests/visual_tests/images/lines-3-200-200-1.0-cairo-reference.png deleted file mode 100644 index 675002fe1..000000000 Binary files a/tests/visual_tests/images/lines-3-200-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-200-200-2.0-agg-reference.png b/tests/visual_tests/images/lines-3-200-200-2.0-agg-reference.png deleted file mode 100644 index 5b48ee538..000000000 Binary files a/tests/visual_tests/images/lines-3-200-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-200-200-2.0-cairo-reference.png b/tests/visual_tests/images/lines-3-200-200-2.0-cairo-reference.png deleted file mode 100644 index c46804b5d..000000000 Binary files a/tests/visual_tests/images/lines-3-200-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-400-400-1.0-agg-reference.png b/tests/visual_tests/images/lines-3-400-400-1.0-agg-reference.png deleted file mode 100644 index 771f4e511..000000000 Binary files a/tests/visual_tests/images/lines-3-400-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-400-400-1.0-cairo-reference.png b/tests/visual_tests/images/lines-3-400-400-1.0-cairo-reference.png deleted file mode 100644 index e2c9d3177..000000000 Binary files a/tests/visual_tests/images/lines-3-400-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-400-400-2.0-agg-reference.png b/tests/visual_tests/images/lines-3-400-400-2.0-agg-reference.png deleted file mode 100644 index b6ef2dba6..000000000 Binary files a/tests/visual_tests/images/lines-3-400-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-400-400-2.0-cairo-reference.png b/tests/visual_tests/images/lines-3-400-400-2.0-cairo-reference.png deleted file mode 100644 index b3fa84eda..000000000 Binary files a/tests/visual_tests/images/lines-3-400-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-600-600-1.0-agg-reference.png b/tests/visual_tests/images/lines-3-600-600-1.0-agg-reference.png deleted file mode 100644 index 4253a6611..000000000 Binary files a/tests/visual_tests/images/lines-3-600-600-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-600-600-1.0-cairo-reference.png b/tests/visual_tests/images/lines-3-600-600-1.0-cairo-reference.png deleted file mode 100644 index 9585bbbcc..000000000 Binary files a/tests/visual_tests/images/lines-3-600-600-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-600-600-2.0-agg-reference.png b/tests/visual_tests/images/lines-3-600-600-2.0-agg-reference.png deleted file mode 100644 index be1723eeb..000000000 Binary files a/tests/visual_tests/images/lines-3-600-600-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-600-600-2.0-cairo-reference.png b/tests/visual_tests/images/lines-3-600-600-2.0-cairo-reference.png deleted file mode 100644 index 68e25a28c..000000000 Binary files a/tests/visual_tests/images/lines-3-600-600-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-800-800-1.0-agg-reference.png b/tests/visual_tests/images/lines-3-800-800-1.0-agg-reference.png deleted file mode 100644 index 01568eaa4..000000000 Binary files a/tests/visual_tests/images/lines-3-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/lines-3-800-800-1.0-cairo-reference.png deleted file mode 100644 index 58c0abd05..000000000 Binary files a/tests/visual_tests/images/lines-3-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-800-800-2.0-agg-reference.png b/tests/visual_tests/images/lines-3-800-800-2.0-agg-reference.png deleted file mode 100644 index b436b3a8d..000000000 Binary files a/tests/visual_tests/images/lines-3-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-3-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/lines-3-800-800-2.0-cairo-reference.png deleted file mode 100644 index 039e1a029..000000000 Binary files a/tests/visual_tests/images/lines-3-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-200-200-1.0-agg-reference.png b/tests/visual_tests/images/lines-4-200-200-1.0-agg-reference.png deleted file mode 100644 index 746324777..000000000 Binary files a/tests/visual_tests/images/lines-4-200-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-200-200-1.0-cairo-reference.png b/tests/visual_tests/images/lines-4-200-200-1.0-cairo-reference.png deleted file mode 100644 index eda6579b0..000000000 Binary files a/tests/visual_tests/images/lines-4-200-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-200-200-2.0-agg-reference.png b/tests/visual_tests/images/lines-4-200-200-2.0-agg-reference.png deleted file mode 100644 index 7dcd48893..000000000 Binary files a/tests/visual_tests/images/lines-4-200-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-200-200-2.0-cairo-reference.png b/tests/visual_tests/images/lines-4-200-200-2.0-cairo-reference.png deleted file mode 100644 index c983d4fbe..000000000 Binary files a/tests/visual_tests/images/lines-4-200-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-400-400-1.0-agg-reference.png b/tests/visual_tests/images/lines-4-400-400-1.0-agg-reference.png deleted file mode 100644 index 35bdf0f4e..000000000 Binary files a/tests/visual_tests/images/lines-4-400-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-400-400-1.0-cairo-reference.png b/tests/visual_tests/images/lines-4-400-400-1.0-cairo-reference.png deleted file mode 100644 index 97e7dff32..000000000 Binary files a/tests/visual_tests/images/lines-4-400-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-400-400-2.0-agg-reference.png b/tests/visual_tests/images/lines-4-400-400-2.0-agg-reference.png deleted file mode 100644 index 64d63cef9..000000000 Binary files a/tests/visual_tests/images/lines-4-400-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-400-400-2.0-cairo-reference.png b/tests/visual_tests/images/lines-4-400-400-2.0-cairo-reference.png deleted file mode 100644 index 33433c1d8..000000000 Binary files a/tests/visual_tests/images/lines-4-400-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-600-600-1.0-agg-reference.png b/tests/visual_tests/images/lines-4-600-600-1.0-agg-reference.png deleted file mode 100644 index 3221710a4..000000000 Binary files a/tests/visual_tests/images/lines-4-600-600-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-600-600-1.0-cairo-reference.png b/tests/visual_tests/images/lines-4-600-600-1.0-cairo-reference.png deleted file mode 100644 index 94e994158..000000000 Binary files a/tests/visual_tests/images/lines-4-600-600-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-600-600-2.0-agg-reference.png b/tests/visual_tests/images/lines-4-600-600-2.0-agg-reference.png deleted file mode 100644 index a12cddea2..000000000 Binary files a/tests/visual_tests/images/lines-4-600-600-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-600-600-2.0-cairo-reference.png b/tests/visual_tests/images/lines-4-600-600-2.0-cairo-reference.png deleted file mode 100644 index 28b52655f..000000000 Binary files a/tests/visual_tests/images/lines-4-600-600-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-800-800-1.0-agg-reference.png b/tests/visual_tests/images/lines-4-800-800-1.0-agg-reference.png deleted file mode 100644 index 98dd66b64..000000000 Binary files a/tests/visual_tests/images/lines-4-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/lines-4-800-800-1.0-cairo-reference.png deleted file mode 100644 index 6387b5961..000000000 Binary files a/tests/visual_tests/images/lines-4-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-800-800-2.0-agg-reference.png b/tests/visual_tests/images/lines-4-800-800-2.0-agg-reference.png deleted file mode 100644 index a0f7db6db..000000000 Binary files a/tests/visual_tests/images/lines-4-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-4-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/lines-4-800-800-2.0-cairo-reference.png deleted file mode 100644 index dcf9dc107..000000000 Binary files a/tests/visual_tests/images/lines-4-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-200-200-1.0-agg-reference.png b/tests/visual_tests/images/lines-5-200-200-1.0-agg-reference.png deleted file mode 100644 index 7c11f46c2..000000000 Binary files a/tests/visual_tests/images/lines-5-200-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-200-200-1.0-cairo-reference.png b/tests/visual_tests/images/lines-5-200-200-1.0-cairo-reference.png deleted file mode 100644 index 07714c5cb..000000000 Binary files a/tests/visual_tests/images/lines-5-200-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-200-200-2.0-agg-reference.png b/tests/visual_tests/images/lines-5-200-200-2.0-agg-reference.png deleted file mode 100644 index e7cd4b645..000000000 Binary files a/tests/visual_tests/images/lines-5-200-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-200-200-2.0-cairo-reference.png b/tests/visual_tests/images/lines-5-200-200-2.0-cairo-reference.png deleted file mode 100644 index 7c27c3f57..000000000 Binary files a/tests/visual_tests/images/lines-5-200-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-400-400-1.0-agg-reference.png b/tests/visual_tests/images/lines-5-400-400-1.0-agg-reference.png deleted file mode 100644 index 7b130ff41..000000000 Binary files a/tests/visual_tests/images/lines-5-400-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-400-400-1.0-cairo-reference.png b/tests/visual_tests/images/lines-5-400-400-1.0-cairo-reference.png deleted file mode 100644 index b4cbcdd3e..000000000 Binary files a/tests/visual_tests/images/lines-5-400-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-400-400-2.0-agg-reference.png b/tests/visual_tests/images/lines-5-400-400-2.0-agg-reference.png deleted file mode 100644 index aa66314dd..000000000 Binary files a/tests/visual_tests/images/lines-5-400-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-400-400-2.0-cairo-reference.png b/tests/visual_tests/images/lines-5-400-400-2.0-cairo-reference.png deleted file mode 100644 index d29e6bbea..000000000 Binary files a/tests/visual_tests/images/lines-5-400-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-600-600-1.0-agg-reference.png b/tests/visual_tests/images/lines-5-600-600-1.0-agg-reference.png deleted file mode 100644 index 9b2e1d431..000000000 Binary files a/tests/visual_tests/images/lines-5-600-600-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-600-600-1.0-cairo-reference.png b/tests/visual_tests/images/lines-5-600-600-1.0-cairo-reference.png deleted file mode 100644 index b664e1fc4..000000000 Binary files a/tests/visual_tests/images/lines-5-600-600-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-600-600-2.0-agg-reference.png b/tests/visual_tests/images/lines-5-600-600-2.0-agg-reference.png deleted file mode 100644 index b3d541627..000000000 Binary files a/tests/visual_tests/images/lines-5-600-600-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-600-600-2.0-cairo-reference.png b/tests/visual_tests/images/lines-5-600-600-2.0-cairo-reference.png deleted file mode 100644 index 9a9467672..000000000 Binary files a/tests/visual_tests/images/lines-5-600-600-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-800-800-1.0-agg-reference.png b/tests/visual_tests/images/lines-5-800-800-1.0-agg-reference.png deleted file mode 100644 index 5a5660438..000000000 Binary files a/tests/visual_tests/images/lines-5-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/lines-5-800-800-1.0-cairo-reference.png deleted file mode 100644 index a485040d1..000000000 Binary files a/tests/visual_tests/images/lines-5-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-800-800-2.0-agg-reference.png b/tests/visual_tests/images/lines-5-800-800-2.0-agg-reference.png deleted file mode 100644 index 4ed73785a..000000000 Binary files a/tests/visual_tests/images/lines-5-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-5-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/lines-5-800-800-2.0-cairo-reference.png deleted file mode 100644 index 260832ba7..000000000 Binary files a/tests/visual_tests/images/lines-5-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-200-200-1.0-agg-reference.png b/tests/visual_tests/images/lines-6-200-200-1.0-agg-reference.png deleted file mode 100644 index 129ca1573..000000000 Binary files a/tests/visual_tests/images/lines-6-200-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-200-200-1.0-cairo-reference.png b/tests/visual_tests/images/lines-6-200-200-1.0-cairo-reference.png deleted file mode 100644 index 28fdbe211..000000000 Binary files a/tests/visual_tests/images/lines-6-200-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-200-200-2.0-agg-reference.png b/tests/visual_tests/images/lines-6-200-200-2.0-agg-reference.png deleted file mode 100644 index 9bbc189e6..000000000 Binary files a/tests/visual_tests/images/lines-6-200-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-200-200-2.0-cairo-reference.png b/tests/visual_tests/images/lines-6-200-200-2.0-cairo-reference.png deleted file mode 100644 index c2afe30d0..000000000 Binary files a/tests/visual_tests/images/lines-6-200-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-400-400-1.0-agg-reference.png b/tests/visual_tests/images/lines-6-400-400-1.0-agg-reference.png deleted file mode 100644 index acbf93262..000000000 Binary files a/tests/visual_tests/images/lines-6-400-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-400-400-1.0-cairo-reference.png b/tests/visual_tests/images/lines-6-400-400-1.0-cairo-reference.png deleted file mode 100644 index 4851c0e04..000000000 Binary files a/tests/visual_tests/images/lines-6-400-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-400-400-2.0-agg-reference.png b/tests/visual_tests/images/lines-6-400-400-2.0-agg-reference.png deleted file mode 100644 index d197ae230..000000000 Binary files a/tests/visual_tests/images/lines-6-400-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-400-400-2.0-cairo-reference.png b/tests/visual_tests/images/lines-6-400-400-2.0-cairo-reference.png deleted file mode 100644 index 33f80a8ed..000000000 Binary files a/tests/visual_tests/images/lines-6-400-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-600-600-1.0-agg-reference.png b/tests/visual_tests/images/lines-6-600-600-1.0-agg-reference.png deleted file mode 100644 index 3a1b412c3..000000000 Binary files a/tests/visual_tests/images/lines-6-600-600-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-600-600-1.0-cairo-reference.png b/tests/visual_tests/images/lines-6-600-600-1.0-cairo-reference.png deleted file mode 100644 index 9fc703c64..000000000 Binary files a/tests/visual_tests/images/lines-6-600-600-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-600-600-2.0-agg-reference.png b/tests/visual_tests/images/lines-6-600-600-2.0-agg-reference.png deleted file mode 100644 index b7760dc8d..000000000 Binary files a/tests/visual_tests/images/lines-6-600-600-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-600-600-2.0-cairo-reference.png b/tests/visual_tests/images/lines-6-600-600-2.0-cairo-reference.png deleted file mode 100644 index b5d89c925..000000000 Binary files a/tests/visual_tests/images/lines-6-600-600-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-800-800-1.0-agg-reference.png b/tests/visual_tests/images/lines-6-800-800-1.0-agg-reference.png deleted file mode 100644 index 8244cebe7..000000000 Binary files a/tests/visual_tests/images/lines-6-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/lines-6-800-800-1.0-cairo-reference.png deleted file mode 100644 index 01e2c600b..000000000 Binary files a/tests/visual_tests/images/lines-6-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-800-800-2.0-agg-reference.png b/tests/visual_tests/images/lines-6-800-800-2.0-agg-reference.png deleted file mode 100644 index eed17abf8..000000000 Binary files a/tests/visual_tests/images/lines-6-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-6-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/lines-6-800-800-2.0-cairo-reference.png deleted file mode 100644 index ea7672443..000000000 Binary files a/tests/visual_tests/images/lines-6-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-200-200-1.0-agg-reference.png b/tests/visual_tests/images/lines-7-200-200-1.0-agg-reference.png deleted file mode 100644 index c2a34ada6..000000000 Binary files a/tests/visual_tests/images/lines-7-200-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-200-200-1.0-cairo-reference.png b/tests/visual_tests/images/lines-7-200-200-1.0-cairo-reference.png deleted file mode 100644 index 446088fa1..000000000 Binary files a/tests/visual_tests/images/lines-7-200-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-200-200-2.0-agg-reference.png b/tests/visual_tests/images/lines-7-200-200-2.0-agg-reference.png deleted file mode 100644 index 1e3200fe0..000000000 Binary files a/tests/visual_tests/images/lines-7-200-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-200-200-2.0-cairo-reference.png b/tests/visual_tests/images/lines-7-200-200-2.0-cairo-reference.png deleted file mode 100644 index edfc3f61e..000000000 Binary files a/tests/visual_tests/images/lines-7-200-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-400-400-1.0-agg-reference.png b/tests/visual_tests/images/lines-7-400-400-1.0-agg-reference.png deleted file mode 100644 index 97f006456..000000000 Binary files a/tests/visual_tests/images/lines-7-400-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-400-400-1.0-cairo-reference.png b/tests/visual_tests/images/lines-7-400-400-1.0-cairo-reference.png deleted file mode 100644 index a9c152ee9..000000000 Binary files a/tests/visual_tests/images/lines-7-400-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-400-400-2.0-agg-reference.png b/tests/visual_tests/images/lines-7-400-400-2.0-agg-reference.png deleted file mode 100644 index dfd94ede9..000000000 Binary files a/tests/visual_tests/images/lines-7-400-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-400-400-2.0-cairo-reference.png b/tests/visual_tests/images/lines-7-400-400-2.0-cairo-reference.png deleted file mode 100644 index 017421349..000000000 Binary files a/tests/visual_tests/images/lines-7-400-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-600-600-1.0-agg-reference.png b/tests/visual_tests/images/lines-7-600-600-1.0-agg-reference.png deleted file mode 100644 index 234f8d67b..000000000 Binary files a/tests/visual_tests/images/lines-7-600-600-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-600-600-1.0-cairo-reference.png b/tests/visual_tests/images/lines-7-600-600-1.0-cairo-reference.png deleted file mode 100644 index d51d200c4..000000000 Binary files a/tests/visual_tests/images/lines-7-600-600-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-600-600-2.0-agg-reference.png b/tests/visual_tests/images/lines-7-600-600-2.0-agg-reference.png deleted file mode 100644 index 69df036b0..000000000 Binary files a/tests/visual_tests/images/lines-7-600-600-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-600-600-2.0-cairo-reference.png b/tests/visual_tests/images/lines-7-600-600-2.0-cairo-reference.png deleted file mode 100644 index a2f8f2440..000000000 Binary files a/tests/visual_tests/images/lines-7-600-600-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-800-800-1.0-agg-reference.png b/tests/visual_tests/images/lines-7-800-800-1.0-agg-reference.png deleted file mode 100644 index db362a813..000000000 Binary files a/tests/visual_tests/images/lines-7-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/lines-7-800-800-1.0-cairo-reference.png deleted file mode 100644 index 0befa8523..000000000 Binary files a/tests/visual_tests/images/lines-7-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-800-800-2.0-agg-reference.png b/tests/visual_tests/images/lines-7-800-800-2.0-agg-reference.png deleted file mode 100644 index 03a7e5939..000000000 Binary files a/tests/visual_tests/images/lines-7-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-7-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/lines-7-800-800-2.0-cairo-reference.png deleted file mode 100644 index 5585a65a6..000000000 Binary files a/tests/visual_tests/images/lines-7-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-multi-layout-1-800-800-1.0-agg-reference.png b/tests/visual_tests/images/lines-multi-layout-1-800-800-1.0-agg-reference.png deleted file mode 100644 index 29397fe87..000000000 Binary files a/tests/visual_tests/images/lines-multi-layout-1-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-multi-layout-1-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/lines-multi-layout-1-800-800-1.0-cairo-reference.png deleted file mode 100644 index 8b6188536..000000000 Binary files a/tests/visual_tests/images/lines-multi-layout-1-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-multi-layout-1-800-800-2.0-agg-reference.png b/tests/visual_tests/images/lines-multi-layout-1-800-800-2.0-agg-reference.png deleted file mode 100644 index 3ff1e3fb2..000000000 Binary files a/tests/visual_tests/images/lines-multi-layout-1-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-multi-layout-1-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/lines-multi-layout-1-800-800-2.0-cairo-reference.png deleted file mode 100644 index e51f5eedf..000000000 Binary files a/tests/visual_tests/images/lines-multi-layout-1-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-multi-layout-2-800-800-1.0-agg-reference.png b/tests/visual_tests/images/lines-multi-layout-2-800-800-1.0-agg-reference.png deleted file mode 100644 index 8ee78a87d..000000000 Binary files a/tests/visual_tests/images/lines-multi-layout-2-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-multi-layout-2-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/lines-multi-layout-2-800-800-1.0-cairo-reference.png deleted file mode 100644 index 29b59e816..000000000 Binary files a/tests/visual_tests/images/lines-multi-layout-2-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-multi-layout-2-800-800-2.0-agg-reference.png b/tests/visual_tests/images/lines-multi-layout-2-800-800-2.0-agg-reference.png deleted file mode 100644 index 618ea59ce..000000000 Binary files a/tests/visual_tests/images/lines-multi-layout-2-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-multi-layout-2-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/lines-multi-layout-2-800-800-2.0-cairo-reference.png deleted file mode 100644 index e449c912c..000000000 Binary files a/tests/visual_tests/images/lines-multi-layout-2-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-multi-layout-shield-800-800-1.0-agg-reference.png b/tests/visual_tests/images/lines-multi-layout-shield-800-800-1.0-agg-reference.png deleted file mode 100644 index 0f0aa637b..000000000 Binary files a/tests/visual_tests/images/lines-multi-layout-shield-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-multi-layout-shield-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/lines-multi-layout-shield-800-800-1.0-cairo-reference.png deleted file mode 100644 index b664fce63..000000000 Binary files a/tests/visual_tests/images/lines-multi-layout-shield-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-multi-layout-shield-800-800-2.0-agg-reference.png b/tests/visual_tests/images/lines-multi-layout-shield-800-800-2.0-agg-reference.png deleted file mode 100644 index 470e6a03c..000000000 Binary files a/tests/visual_tests/images/lines-multi-layout-shield-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-multi-layout-shield-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/lines-multi-layout-shield-800-800-2.0-cairo-reference.png deleted file mode 100644 index 0acebcc89..000000000 Binary files a/tests/visual_tests/images/lines-multi-layout-shield-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-200-200-1.0-agg-reference.png b/tests/visual_tests/images/lines-shield-200-200-1.0-agg-reference.png deleted file mode 100644 index b60e8c322..000000000 Binary files a/tests/visual_tests/images/lines-shield-200-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-200-200-1.0-cairo-reference.png b/tests/visual_tests/images/lines-shield-200-200-1.0-cairo-reference.png deleted file mode 100644 index 0decf91b3..000000000 Binary files a/tests/visual_tests/images/lines-shield-200-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-200-200-2.0-agg-reference.png b/tests/visual_tests/images/lines-shield-200-200-2.0-agg-reference.png deleted file mode 100644 index 998264903..000000000 Binary files a/tests/visual_tests/images/lines-shield-200-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-200-200-2.0-cairo-reference.png b/tests/visual_tests/images/lines-shield-200-200-2.0-cairo-reference.png deleted file mode 100644 index 877001bd2..000000000 Binary files a/tests/visual_tests/images/lines-shield-200-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-400-400-1.0-agg-reference.png b/tests/visual_tests/images/lines-shield-400-400-1.0-agg-reference.png deleted file mode 100644 index 17a3680e8..000000000 Binary files a/tests/visual_tests/images/lines-shield-400-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-400-400-1.0-cairo-reference.png b/tests/visual_tests/images/lines-shield-400-400-1.0-cairo-reference.png deleted file mode 100644 index 485b9740f..000000000 Binary files a/tests/visual_tests/images/lines-shield-400-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-400-400-2.0-agg-reference.png b/tests/visual_tests/images/lines-shield-400-400-2.0-agg-reference.png deleted file mode 100644 index 4b2a44f6c..000000000 Binary files a/tests/visual_tests/images/lines-shield-400-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-400-400-2.0-cairo-reference.png b/tests/visual_tests/images/lines-shield-400-400-2.0-cairo-reference.png deleted file mode 100644 index 740ef72c5..000000000 Binary files a/tests/visual_tests/images/lines-shield-400-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-600-600-1.0-agg-reference.png b/tests/visual_tests/images/lines-shield-600-600-1.0-agg-reference.png deleted file mode 100644 index bb4796188..000000000 Binary files a/tests/visual_tests/images/lines-shield-600-600-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-600-600-1.0-cairo-reference.png b/tests/visual_tests/images/lines-shield-600-600-1.0-cairo-reference.png deleted file mode 100644 index 59894ae29..000000000 Binary files a/tests/visual_tests/images/lines-shield-600-600-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-600-600-2.0-agg-reference.png b/tests/visual_tests/images/lines-shield-600-600-2.0-agg-reference.png deleted file mode 100644 index 5c9b8c2fa..000000000 Binary files a/tests/visual_tests/images/lines-shield-600-600-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-600-600-2.0-cairo-reference.png b/tests/visual_tests/images/lines-shield-600-600-2.0-cairo-reference.png deleted file mode 100644 index e3ccc4b8a..000000000 Binary files a/tests/visual_tests/images/lines-shield-600-600-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-800-800-1.0-agg-reference.png b/tests/visual_tests/images/lines-shield-800-800-1.0-agg-reference.png deleted file mode 100644 index 5ec187c2e..000000000 Binary files a/tests/visual_tests/images/lines-shield-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/lines-shield-800-800-1.0-cairo-reference.png deleted file mode 100644 index f1ac85344..000000000 Binary files a/tests/visual_tests/images/lines-shield-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-800-800-2.0-agg-reference.png b/tests/visual_tests/images/lines-shield-800-800-2.0-agg-reference.png deleted file mode 100644 index a0f0cf406..000000000 Binary files a/tests/visual_tests/images/lines-shield-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/lines-shield-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/lines-shield-800-800-2.0-cairo-reference.png deleted file mode 100644 index 17a9aef5e..000000000 Binary files a/tests/visual_tests/images/lines-shield-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-100-100-1.0-agg-reference.png b/tests/visual_tests/images/list-100-100-1.0-agg-reference.png deleted file mode 100644 index 68cf5e08a..000000000 Binary files a/tests/visual_tests/images/list-100-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-100-100-1.0-cairo-reference.png b/tests/visual_tests/images/list-100-100-1.0-cairo-reference.png deleted file mode 100644 index d0e750074..000000000 Binary files a/tests/visual_tests/images/list-100-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-100-100-2.0-agg-reference.png b/tests/visual_tests/images/list-100-100-2.0-agg-reference.png deleted file mode 100644 index a1fe25605..000000000 Binary files a/tests/visual_tests/images/list-100-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-100-100-2.0-cairo-reference.png b/tests/visual_tests/images/list-100-100-2.0-cairo-reference.png deleted file mode 100644 index 862acc1bf..000000000 Binary files a/tests/visual_tests/images/list-100-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-150-100-1.0-agg-reference.png b/tests/visual_tests/images/list-150-100-1.0-agg-reference.png deleted file mode 100644 index b0345c64f..000000000 Binary files a/tests/visual_tests/images/list-150-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-150-100-1.0-cairo-reference.png b/tests/visual_tests/images/list-150-100-1.0-cairo-reference.png deleted file mode 100644 index beab1bd13..000000000 Binary files a/tests/visual_tests/images/list-150-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-150-100-2.0-agg-reference.png b/tests/visual_tests/images/list-150-100-2.0-agg-reference.png deleted file mode 100644 index e78c813c9..000000000 Binary files a/tests/visual_tests/images/list-150-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-150-100-2.0-cairo-reference.png b/tests/visual_tests/images/list-150-100-2.0-cairo-reference.png deleted file mode 100644 index 0fe8475c3..000000000 Binary files a/tests/visual_tests/images/list-150-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-250-100-1.0-agg-reference.png b/tests/visual_tests/images/list-250-100-1.0-agg-reference.png deleted file mode 100644 index cf4b6836b..000000000 Binary files a/tests/visual_tests/images/list-250-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-250-100-1.0-cairo-reference.png b/tests/visual_tests/images/list-250-100-1.0-cairo-reference.png deleted file mode 100644 index 12a05ced7..000000000 Binary files a/tests/visual_tests/images/list-250-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-250-100-2.0-agg-reference.png b/tests/visual_tests/images/list-250-100-2.0-agg-reference.png deleted file mode 100644 index 738d0414c..000000000 Binary files a/tests/visual_tests/images/list-250-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-250-100-2.0-cairo-reference.png b/tests/visual_tests/images/list-250-100-2.0-cairo-reference.png deleted file mode 100644 index 1705df118..000000000 Binary files a/tests/visual_tests/images/list-250-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-300-100-1.0-agg-reference.png b/tests/visual_tests/images/list-300-100-1.0-agg-reference.png deleted file mode 100644 index 01e8a8ad6..000000000 Binary files a/tests/visual_tests/images/list-300-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-300-100-1.0-cairo-reference.png b/tests/visual_tests/images/list-300-100-1.0-cairo-reference.png deleted file mode 100644 index b5ece85c9..000000000 Binary files a/tests/visual_tests/images/list-300-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-300-100-2.0-agg-reference.png b/tests/visual_tests/images/list-300-100-2.0-agg-reference.png deleted file mode 100644 index 11575c2f8..000000000 Binary files a/tests/visual_tests/images/list-300-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-300-100-2.0-cairo-reference.png b/tests/visual_tests/images/list-300-100-2.0-cairo-reference.png deleted file mode 100644 index 4c9618aad..000000000 Binary files a/tests/visual_tests/images/list-300-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-400-100-1.0-agg-reference.png b/tests/visual_tests/images/list-400-100-1.0-agg-reference.png deleted file mode 100644 index 954810bda..000000000 Binary files a/tests/visual_tests/images/list-400-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-400-100-1.0-cairo-reference.png b/tests/visual_tests/images/list-400-100-1.0-cairo-reference.png deleted file mode 100644 index 083f94e7f..000000000 Binary files a/tests/visual_tests/images/list-400-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-400-100-2.0-agg-reference.png b/tests/visual_tests/images/list-400-100-2.0-agg-reference.png deleted file mode 100644 index e89de1fab..000000000 Binary files a/tests/visual_tests/images/list-400-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-400-100-2.0-cairo-reference.png b/tests/visual_tests/images/list-400-100-2.0-cairo-reference.png deleted file mode 100644 index 813fa53fb..000000000 Binary files a/tests/visual_tests/images/list-400-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-600-100-1.0-agg-reference.png b/tests/visual_tests/images/list-600-100-1.0-agg-reference.png deleted file mode 100644 index 1b978953d..000000000 Binary files a/tests/visual_tests/images/list-600-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-600-100-1.0-cairo-reference.png b/tests/visual_tests/images/list-600-100-1.0-cairo-reference.png deleted file mode 100644 index 586d921c4..000000000 Binary files a/tests/visual_tests/images/list-600-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-600-100-2.0-agg-reference.png b/tests/visual_tests/images/list-600-100-2.0-agg-reference.png deleted file mode 100644 index ee4be98dd..000000000 Binary files a/tests/visual_tests/images/list-600-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-600-100-2.0-cairo-reference.png b/tests/visual_tests/images/list-600-100-2.0-cairo-reference.png deleted file mode 100644 index 9bce8d5d4..000000000 Binary files a/tests/visual_tests/images/list-600-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-800-100-1.0-agg-reference.png b/tests/visual_tests/images/list-800-100-1.0-agg-reference.png deleted file mode 100644 index 67957f403..000000000 Binary files a/tests/visual_tests/images/list-800-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-800-100-1.0-cairo-reference.png b/tests/visual_tests/images/list-800-100-1.0-cairo-reference.png deleted file mode 100644 index 39cd6d79c..000000000 Binary files a/tests/visual_tests/images/list-800-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-800-100-2.0-agg-reference.png b/tests/visual_tests/images/list-800-100-2.0-agg-reference.png deleted file mode 100644 index 764fb6546..000000000 Binary files a/tests/visual_tests/images/list-800-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/list-800-100-2.0-cairo-reference.png b/tests/visual_tests/images/list-800-100-2.0-cairo-reference.png deleted file mode 100644 index 0b5d5b7a4..000000000 Binary files a/tests/visual_tests/images/list-800-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/map-background-image-compositing-512-512-1.0-agg-reference.png b/tests/visual_tests/images/map-background-image-compositing-512-512-1.0-agg-reference.png deleted file mode 100644 index 869b08b19..000000000 Binary files a/tests/visual_tests/images/map-background-image-compositing-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/map-background-image-compositing-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/map-background-image-compositing-512-512-1.0-cairo-reference.png deleted file mode 100644 index 860c14b4e..000000000 Binary files a/tests/visual_tests/images/map-background-image-compositing-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/map-background-image-compositing-512-512-2.0-agg-reference.png b/tests/visual_tests/images/map-background-image-compositing-512-512-2.0-agg-reference.png deleted file mode 100644 index 981f3a38c..000000000 Binary files a/tests/visual_tests/images/map-background-image-compositing-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/map-background-image-compositing-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/map-background-image-compositing-512-512-2.0-cairo-reference.png deleted file mode 100644 index e94a07f05..000000000 Binary files a/tests/visual_tests/images/map-background-image-compositing-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-collide-512-512-1.0-agg-reference.png b/tests/visual_tests/images/marker-collide-512-512-1.0-agg-reference.png deleted file mode 100644 index 6b901f466..000000000 Binary files a/tests/visual_tests/images/marker-collide-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-collide-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/marker-collide-512-512-1.0-cairo-reference.png deleted file mode 100644 index 37ef5a8ca..000000000 Binary files a/tests/visual_tests/images/marker-collide-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-collide-512-512-2.0-agg-reference.png b/tests/visual_tests/images/marker-collide-512-512-2.0-agg-reference.png deleted file mode 100644 index 362fab4e6..000000000 Binary files a/tests/visual_tests/images/marker-collide-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-collide-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/marker-collide-512-512-2.0-cairo-reference.png deleted file mode 100644 index 446b3992f..000000000 Binary files a/tests/visual_tests/images/marker-collide-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-direction-1152-384-1.0-agg-reference.png b/tests/visual_tests/images/marker-direction-1152-384-1.0-agg-reference.png deleted file mode 100644 index 7303e4c8a..000000000 Binary files a/tests/visual_tests/images/marker-direction-1152-384-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-direction-1152-384-1.0-cairo-reference.png b/tests/visual_tests/images/marker-direction-1152-384-1.0-cairo-reference.png deleted file mode 100644 index 72624d289..000000000 Binary files a/tests/visual_tests/images/marker-direction-1152-384-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-direction-1152-384-2.0-agg-reference.png b/tests/visual_tests/images/marker-direction-1152-384-2.0-agg-reference.png deleted file mode 100644 index dcd81dad3..000000000 Binary files a/tests/visual_tests/images/marker-direction-1152-384-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-direction-1152-384-2.0-cairo-reference.png b/tests/visual_tests/images/marker-direction-1152-384-2.0-cairo-reference.png deleted file mode 100644 index fc2f6cd90..000000000 Binary files a/tests/visual_tests/images/marker-direction-1152-384-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-interior-position-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-interior-position-600-400-1.0-agg-reference.png deleted file mode 100644 index 5c1ce2919..000000000 Binary files a/tests/visual_tests/images/marker-interior-position-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-interior-position-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-interior-position-600-400-1.0-cairo-reference.png deleted file mode 100644 index c86af3c71..000000000 Binary files a/tests/visual_tests/images/marker-interior-position-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-interior-position-600-400-2.0-agg-reference.png b/tests/visual_tests/images/marker-interior-position-600-400-2.0-agg-reference.png deleted file mode 100644 index 0d8d5cd94..000000000 Binary files a/tests/visual_tests/images/marker-interior-position-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-interior-position-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-interior-position-600-400-2.0-cairo-reference.png deleted file mode 100644 index 8b2fc180e..000000000 Binary files a/tests/visual_tests/images/marker-interior-position-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-line-placement-many-vertices-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-line-placement-many-vertices-600-400-1.0-agg-reference.png deleted file mode 100644 index 2b2ace4f7..000000000 Binary files a/tests/visual_tests/images/marker-line-placement-many-vertices-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-line-placement-many-vertices-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-line-placement-many-vertices-600-400-1.0-cairo-reference.png deleted file mode 100644 index 51cec6366..000000000 Binary files a/tests/visual_tests/images/marker-line-placement-many-vertices-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-line-placement-many-vertices-600-400-2.0-agg-reference.png b/tests/visual_tests/images/marker-line-placement-many-vertices-600-400-2.0-agg-reference.png deleted file mode 100644 index 1e6c3edc7..000000000 Binary files a/tests/visual_tests/images/marker-line-placement-many-vertices-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-line-placement-many-vertices-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-line-placement-many-vertices-600-400-2.0-cairo-reference.png deleted file mode 100644 index fb5194625..000000000 Binary files a/tests/visual_tests/images/marker-line-placement-many-vertices-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-multi-policy-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-multi-policy-600-400-1.0-agg-reference.png deleted file mode 100644 index 05fb847e6..000000000 Binary files a/tests/visual_tests/images/marker-multi-policy-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-multi-policy-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-multi-policy-600-400-1.0-cairo-reference.png deleted file mode 100644 index cc3a047b3..000000000 Binary files a/tests/visual_tests/images/marker-multi-policy-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-multi-policy-600-400-2.0-agg-reference.png b/tests/visual_tests/images/marker-multi-policy-600-400-2.0-agg-reference.png deleted file mode 100644 index 74b7b058f..000000000 Binary files a/tests/visual_tests/images/marker-multi-policy-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-multi-policy-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-multi-policy-600-400-2.0-cairo-reference.png deleted file mode 100644 index b968e6038..000000000 Binary files a/tests/visual_tests/images/marker-multi-policy-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-hex-grid-257-256-1.0-agg-reference.png b/tests/visual_tests/images/marker-on-hex-grid-257-256-1.0-agg-reference.png deleted file mode 100644 index abd711e62..000000000 Binary files a/tests/visual_tests/images/marker-on-hex-grid-257-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-hex-grid-257-256-1.0-cairo-reference.png b/tests/visual_tests/images/marker-on-hex-grid-257-256-1.0-cairo-reference.png deleted file mode 100644 index 5bba76147..000000000 Binary files a/tests/visual_tests/images/marker-on-hex-grid-257-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-hex-grid-257-256-2.0-agg-reference.png b/tests/visual_tests/images/marker-on-hex-grid-257-256-2.0-agg-reference.png deleted file mode 100644 index 7589ff54e..000000000 Binary files a/tests/visual_tests/images/marker-on-hex-grid-257-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-hex-grid-257-256-2.0-cairo-reference.png b/tests/visual_tests/images/marker-on-hex-grid-257-256-2.0-cairo-reference.png deleted file mode 100644 index 8c96fdabf..000000000 Binary files a/tests/visual_tests/images/marker-on-hex-grid-257-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-hex-grid-400-600-1.0-agg-reference.png b/tests/visual_tests/images/marker-on-hex-grid-400-600-1.0-agg-reference.png deleted file mode 100644 index 18cd5662a..000000000 Binary files a/tests/visual_tests/images/marker-on-hex-grid-400-600-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-hex-grid-400-600-1.0-cairo-reference.png b/tests/visual_tests/images/marker-on-hex-grid-400-600-1.0-cairo-reference.png deleted file mode 100644 index 81cddf093..000000000 Binary files a/tests/visual_tests/images/marker-on-hex-grid-400-600-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-hex-grid-400-600-2.0-agg-reference.png b/tests/visual_tests/images/marker-on-hex-grid-400-600-2.0-agg-reference.png deleted file mode 100644 index 23e9a886d..000000000 Binary files a/tests/visual_tests/images/marker-on-hex-grid-400-600-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-hex-grid-400-600-2.0-cairo-reference.png b/tests/visual_tests/images/marker-on-hex-grid-400-600-2.0-cairo-reference.png deleted file mode 100644 index 5e3ce422b..000000000 Binary files a/tests/visual_tests/images/marker-on-hex-grid-400-600-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-hex-grid-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-on-hex-grid-600-400-1.0-agg-reference.png deleted file mode 100644 index 687c7e7e3..000000000 Binary files a/tests/visual_tests/images/marker-on-hex-grid-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-hex-grid-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-on-hex-grid-600-400-1.0-cairo-reference.png deleted file mode 100644 index baee5240f..000000000 Binary files a/tests/visual_tests/images/marker-on-hex-grid-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-hex-grid-600-400-2.0-agg-reference.png b/tests/visual_tests/images/marker-on-hex-grid-600-400-2.0-agg-reference.png deleted file mode 100644 index 055fb6f84..000000000 Binary files a/tests/visual_tests/images/marker-on-hex-grid-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-hex-grid-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-on-hex-grid-600-400-2.0-cairo-reference.png deleted file mode 100644 index c7eefe5dd..000000000 Binary files a/tests/visual_tests/images/marker-on-hex-grid-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-600-400-1.0-agg-reference.png deleted file mode 100644 index 62749d4b3..000000000 Binary files a/tests/visual_tests/images/marker-on-line-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-600-400-1.0-cairo-reference.png deleted file mode 100644 index 8107a34b7..000000000 Binary files a/tests/visual_tests/images/marker-on-line-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-600-400-2.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-600-400-2.0-agg-reference.png deleted file mode 100644 index 2def55e04..000000000 Binary files a/tests/visual_tests/images/marker-on-line-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-600-400-2.0-cairo-reference.png deleted file mode 100644 index 1f431c90d..000000000 Binary files a/tests/visual_tests/images/marker-on-line-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-avoid-edges-512-512-1.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-and-avoid-edges-512-512-1.0-agg-reference.png deleted file mode 100644 index e93a253c7..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-avoid-edges-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-avoid-edges-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-and-avoid-edges-512-512-1.0-cairo-reference.png deleted file mode 100644 index 76888a567..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-avoid-edges-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-avoid-edges-512-512-2.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-and-avoid-edges-512-512-2.0-agg-reference.png deleted file mode 100644 index b20e8ddbd..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-avoid-edges-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-avoid-edges-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-and-avoid-edges-512-512-2.0-cairo-reference.png deleted file mode 100644 index 1406071eb..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-avoid-edges-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-line-placement-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-and-line-placement-600-400-1.0-agg-reference.png deleted file mode 100644 index 83210e8eb..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-line-placement-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-line-placement-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-and-line-placement-600-400-1.0-cairo-reference.png deleted file mode 100644 index ac06c35f5..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-line-placement-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-line-placement-600-400-2.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-and-line-placement-600-400-2.0-agg-reference.png deleted file mode 100644 index 8edfd0bbb..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-line-placement-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-line-placement-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-and-line-placement-600-400-2.0-cairo-reference.png deleted file mode 100644 index d7da391e9..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-line-placement-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-vertex-first-placement-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-and-vertex-first-placement-600-400-1.0-agg-reference.png deleted file mode 100644 index 9e3f82a4d..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-vertex-first-placement-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-vertex-first-placement-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-and-vertex-first-placement-600-400-1.0-cairo-reference.png deleted file mode 100644 index b66983134..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-vertex-first-placement-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-vertex-first-placement-600-400-2.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-and-vertex-first-placement-600-400-2.0-agg-reference.png deleted file mode 100644 index 13d4ad314..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-vertex-first-placement-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-vertex-first-placement-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-and-vertex-first-placement-600-400-2.0-cairo-reference.png deleted file mode 100644 index 0faaa7baf..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-vertex-first-placement-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-vertex-last-placement-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-and-vertex-last-placement-600-400-1.0-agg-reference.png deleted file mode 100644 index 153720f90..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-vertex-last-placement-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-vertex-last-placement-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-and-vertex-last-placement-600-400-1.0-cairo-reference.png deleted file mode 100644 index 411431dee..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-vertex-last-placement-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-vertex-last-placement-600-400-2.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-and-vertex-last-placement-600-400-2.0-agg-reference.png deleted file mode 100644 index 7b7d93ebf..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-vertex-last-placement-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-and-vertex-last-placement-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-and-vertex-last-placement-600-400-2.0-cairo-reference.png deleted file mode 100644 index d478e13d9..000000000 Binary files a/tests/visual_tests/images/marker-on-line-and-vertex-last-placement-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-spacing-eq-width-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-spacing-eq-width-600-400-1.0-agg-reference.png deleted file mode 100644 index 2f3579636..000000000 Binary files a/tests/visual_tests/images/marker-on-line-spacing-eq-width-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-spacing-eq-width-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-spacing-eq-width-600-400-1.0-cairo-reference.png deleted file mode 100644 index 98486161f..000000000 Binary files a/tests/visual_tests/images/marker-on-line-spacing-eq-width-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-spacing-eq-width-600-400-2.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-spacing-eq-width-600-400-2.0-agg-reference.png deleted file mode 100644 index 88fc51517..000000000 Binary files a/tests/visual_tests/images/marker-on-line-spacing-eq-width-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-spacing-eq-width-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-spacing-eq-width-600-400-2.0-cairo-reference.png deleted file mode 100644 index 001eed1f0..000000000 Binary files a/tests/visual_tests/images/marker-on-line-spacing-eq-width-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-spacing-eq-width-overlap-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-spacing-eq-width-overlap-600-400-1.0-agg-reference.png deleted file mode 100644 index 5396dac43..000000000 Binary files a/tests/visual_tests/images/marker-on-line-spacing-eq-width-overlap-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-spacing-eq-width-overlap-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-spacing-eq-width-overlap-600-400-1.0-cairo-reference.png deleted file mode 100644 index 0a19cabcf..000000000 Binary files a/tests/visual_tests/images/marker-on-line-spacing-eq-width-overlap-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-spacing-eq-width-overlap-600-400-2.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-spacing-eq-width-overlap-600-400-2.0-agg-reference.png deleted file mode 100644 index 8abddc98a..000000000 Binary files a/tests/visual_tests/images/marker-on-line-spacing-eq-width-overlap-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-spacing-eq-width-overlap-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-spacing-eq-width-overlap-600-400-2.0-cairo-reference.png deleted file mode 100644 index 7a7382581..000000000 Binary files a/tests/visual_tests/images/marker-on-line-spacing-eq-width-overlap-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-svg-no-box-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-svg-no-box-600-400-1.0-agg-reference.png deleted file mode 100644 index 7440348e0..000000000 Binary files a/tests/visual_tests/images/marker-on-line-svg-no-box-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-svg-no-box-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-svg-no-box-600-400-1.0-cairo-reference.png deleted file mode 100644 index c3b5c3b75..000000000 Binary files a/tests/visual_tests/images/marker-on-line-svg-no-box-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-svg-no-box-600-400-2.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-svg-no-box-600-400-2.0-agg-reference.png deleted file mode 100644 index e43ecac82..000000000 Binary files a/tests/visual_tests/images/marker-on-line-svg-no-box-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-svg-no-box-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-svg-no-box-600-400-2.0-cairo-reference.png deleted file mode 100644 index b3de11c19..000000000 Binary files a/tests/visual_tests/images/marker-on-line-svg-no-box-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-1.0-agg-reference.png deleted file mode 100644 index de22a5c3a..000000000 Binary files a/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-1.0-cairo-reference.png deleted file mode 100644 index 3a7351af3..000000000 Binary files a/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-2.0-agg-reference.png b/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-2.0-agg-reference.png deleted file mode 100644 index 48af255fa..000000000 Binary files a/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-2.0-cairo-reference.png deleted file mode 100644 index afbdd7413..000000000 Binary files a/tests/visual_tests/images/marker-on-line-svg-with-box-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-path-expression-500-100-1.0-agg-reference.png b/tests/visual_tests/images/marker-path-expression-500-100-1.0-agg-reference.png deleted file mode 100644 index 27595bf86..000000000 Binary files a/tests/visual_tests/images/marker-path-expression-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-path-expression-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/marker-path-expression-500-100-1.0-cairo-reference.png deleted file mode 100644 index ba70ac95d..000000000 Binary files a/tests/visual_tests/images/marker-path-expression-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-path-expression-500-100-2.0-agg-reference.png b/tests/visual_tests/images/marker-path-expression-500-100-2.0-agg-reference.png deleted file mode 100644 index ef92f7909..000000000 Binary files a/tests/visual_tests/images/marker-path-expression-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-path-expression-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/marker-path-expression-500-100-2.0-cairo-reference.png deleted file mode 100644 index 278fbb79e..000000000 Binary files a/tests/visual_tests/images/marker-path-expression-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-recenter-collide-256-128-1.0-agg-reference.png b/tests/visual_tests/images/marker-recenter-collide-256-128-1.0-agg-reference.png deleted file mode 100644 index bacd035b9..000000000 Binary files a/tests/visual_tests/images/marker-recenter-collide-256-128-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-recenter-collide-256-128-1.0-cairo-reference.png b/tests/visual_tests/images/marker-recenter-collide-256-128-1.0-cairo-reference.png deleted file mode 100644 index cea3366ae..000000000 Binary files a/tests/visual_tests/images/marker-recenter-collide-256-128-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-recenter-collide-256-128-2.0-agg-reference.png b/tests/visual_tests/images/marker-recenter-collide-256-128-2.0-agg-reference.png deleted file mode 100644 index 904dc76ec..000000000 Binary files a/tests/visual_tests/images/marker-recenter-collide-256-128-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-recenter-collide-256-128-2.0-cairo-reference.png b/tests/visual_tests/images/marker-recenter-collide-256-128-2.0-cairo-reference.png deleted file mode 100644 index b1e9a7964..000000000 Binary files a/tests/visual_tests/images/marker-recenter-collide-256-128-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-500-100-1.0-agg-reference.png b/tests/visual_tests/images/marker-svg-500-100-1.0-agg-reference.png deleted file mode 100644 index 99881f230..000000000 Binary files a/tests/visual_tests/images/marker-svg-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/marker-svg-500-100-1.0-cairo-reference.png deleted file mode 100644 index b182681ed..000000000 Binary files a/tests/visual_tests/images/marker-svg-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-500-100-2.0-agg-reference.png b/tests/visual_tests/images/marker-svg-500-100-2.0-agg-reference.png deleted file mode 100644 index 93084a3b4..000000000 Binary files a/tests/visual_tests/images/marker-svg-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/marker-svg-500-100-2.0-cairo-reference.png deleted file mode 100644 index 1a6f86f32..000000000 Binary files a/tests/visual_tests/images/marker-svg-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-empty-g-element-500-100-1.0-agg-reference.png b/tests/visual_tests/images/marker-svg-empty-g-element-500-100-1.0-agg-reference.png deleted file mode 100644 index 2f684d916..000000000 Binary files a/tests/visual_tests/images/marker-svg-empty-g-element-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-empty-g-element-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/marker-svg-empty-g-element-500-100-1.0-cairo-reference.png deleted file mode 100644 index 5cc30991a..000000000 Binary files a/tests/visual_tests/images/marker-svg-empty-g-element-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-empty-g-element-500-100-2.0-agg-reference.png b/tests/visual_tests/images/marker-svg-empty-g-element-500-100-2.0-agg-reference.png deleted file mode 100644 index 79d32f44f..000000000 Binary files a/tests/visual_tests/images/marker-svg-empty-g-element-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-empty-g-element-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/marker-svg-empty-g-element-500-100-2.0-cairo-reference.png deleted file mode 100644 index ba73f1f1b..000000000 Binary files a/tests/visual_tests/images/marker-svg-empty-g-element-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-opacity-500-100-1.0-agg-reference.png b/tests/visual_tests/images/marker-svg-opacity-500-100-1.0-agg-reference.png deleted file mode 100644 index fe9571114..000000000 Binary files a/tests/visual_tests/images/marker-svg-opacity-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-opacity-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/marker-svg-opacity-500-100-1.0-cairo-reference.png deleted file mode 100644 index fe9571114..000000000 Binary files a/tests/visual_tests/images/marker-svg-opacity-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-opacity-500-100-2.0-agg-reference.png b/tests/visual_tests/images/marker-svg-opacity-500-100-2.0-agg-reference.png deleted file mode 100644 index 88f7e6064..000000000 Binary files a/tests/visual_tests/images/marker-svg-opacity-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-opacity-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/marker-svg-opacity-500-100-2.0-cairo-reference.png deleted file mode 100644 index c428279c7..000000000 Binary files a/tests/visual_tests/images/marker-svg-opacity-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-opacity2-500-100-1.0-agg-reference.png b/tests/visual_tests/images/marker-svg-opacity2-500-100-1.0-agg-reference.png deleted file mode 100644 index 995ef9614..000000000 Binary files a/tests/visual_tests/images/marker-svg-opacity2-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-opacity2-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/marker-svg-opacity2-500-100-1.0-cairo-reference.png deleted file mode 100644 index 995ef9614..000000000 Binary files a/tests/visual_tests/images/marker-svg-opacity2-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-opacity2-500-100-2.0-agg-reference.png b/tests/visual_tests/images/marker-svg-opacity2-500-100-2.0-agg-reference.png deleted file mode 100644 index 12ae43054..000000000 Binary files a/tests/visual_tests/images/marker-svg-opacity2-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-svg-opacity2-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/marker-svg-opacity2-500-100-2.0-cairo-reference.png deleted file mode 100644 index 12ae43054..000000000 Binary files a/tests/visual_tests/images/marker-svg-opacity2-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-symbolizer-expressions-all-256-256-1.0-agg-reference.png b/tests/visual_tests/images/marker-symbolizer-expressions-all-256-256-1.0-agg-reference.png deleted file mode 100644 index 242b653a8..000000000 Binary files a/tests/visual_tests/images/marker-symbolizer-expressions-all-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-symbolizer-expressions-all-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/marker-symbolizer-expressions-all-256-256-1.0-cairo-reference.png deleted file mode 100644 index 72f53047f..000000000 Binary files a/tests/visual_tests/images/marker-symbolizer-expressions-all-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-symbolizer-expressions-all-256-256-2.0-agg-reference.png b/tests/visual_tests/images/marker-symbolizer-expressions-all-256-256-2.0-agg-reference.png deleted file mode 100644 index df0b04dad..000000000 Binary files a/tests/visual_tests/images/marker-symbolizer-expressions-all-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-symbolizer-expressions-all-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/marker-symbolizer-expressions-all-256-256-2.0-cairo-reference.png deleted file mode 100644 index 601f92ef0..000000000 Binary files a/tests/visual_tests/images/marker-symbolizer-expressions-all-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-vs-point-512-512-1.0-agg-reference.png b/tests/visual_tests/images/marker-vs-point-512-512-1.0-agg-reference.png deleted file mode 100644 index 35f4b5c52..000000000 Binary files a/tests/visual_tests/images/marker-vs-point-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-vs-point-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/marker-vs-point-512-512-1.0-cairo-reference.png deleted file mode 100644 index ef3e21e70..000000000 Binary files a/tests/visual_tests/images/marker-vs-point-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-vs-point-512-512-2.0-agg-reference.png b/tests/visual_tests/images/marker-vs-point-512-512-2.0-agg-reference.png deleted file mode 100644 index 4b3a2f95d..000000000 Binary files a/tests/visual_tests/images/marker-vs-point-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-vs-point-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/marker-vs-point-512-512-2.0-cairo-reference.png deleted file mode 100644 index eb0e817a7..000000000 Binary files a/tests/visual_tests/images/marker-vs-point-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-whole-multi-polygon-512-512-1.0-agg-reference.png b/tests/visual_tests/images/marker-whole-multi-polygon-512-512-1.0-agg-reference.png deleted file mode 100644 index 776c8d1e6..000000000 Binary files a/tests/visual_tests/images/marker-whole-multi-polygon-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-whole-multi-polygon-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/marker-whole-multi-polygon-512-512-1.0-cairo-reference.png deleted file mode 100644 index 5c06e8c42..000000000 Binary files a/tests/visual_tests/images/marker-whole-multi-polygon-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-whole-multi-polygon-512-512-2.0-agg-reference.png b/tests/visual_tests/images/marker-whole-multi-polygon-512-512-2.0-agg-reference.png deleted file mode 100644 index b40f70188..000000000 Binary files a/tests/visual_tests/images/marker-whole-multi-polygon-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-whole-multi-polygon-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/marker-whole-multi-polygon-512-512-2.0-cairo-reference.png deleted file mode 100644 index f3d29c99b..000000000 Binary files a/tests/visual_tests/images/marker-whole-multi-polygon-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-257-256-1.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-257-256-1.0-agg-reference.png deleted file mode 100644 index 2f84f5dd0..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-257-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-257-256-1.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-257-256-1.0-cairo-reference.png deleted file mode 100644 index 08836e9e9..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-257-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-257-256-2.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-257-256-2.0-agg-reference.png deleted file mode 100644 index cda415be2..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-257-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-257-256-2.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-257-256-2.0-cairo-reference.png deleted file mode 100644 index 2348274d2..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-257-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-400-600-1.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-400-600-1.0-agg-reference.png deleted file mode 100644 index b40eb4460..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-400-600-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-400-600-1.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-400-600-1.0-cairo-reference.png deleted file mode 100644 index 30456c63e..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-400-600-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-400-600-2.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-400-600-2.0-agg-reference.png deleted file mode 100644 index 2391bcae7..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-400-600-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-400-600-2.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-400-600-2.0-cairo-reference.png deleted file mode 100644 index 79f229a2a..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-400-600-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-600-400-1.0-agg-reference.png deleted file mode 100644 index 4975a7716..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-600-400-1.0-cairo-reference.png deleted file mode 100644 index 2c15bd061..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-600-400-2.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-600-400-2.0-agg-reference.png deleted file mode 100644 index b3c260988..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-600-400-2.0-cairo-reference.png deleted file mode 100644 index 420389f09..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-1.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-1.0-agg-reference.png deleted file mode 100644 index 05e8df84c..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-1.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-1.0-cairo-reference.png deleted file mode 100644 index 08836e9e9..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-2.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-2.0-agg-reference.png deleted file mode 100644 index 086511cd7..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-2.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-2.0-cairo-reference.png deleted file mode 100644 index 2348274d2..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-257-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-1.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-1.0-agg-reference.png deleted file mode 100644 index e7afffb7f..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-1.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-1.0-cairo-reference.png deleted file mode 100644 index 30456c63e..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-2.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-2.0-agg-reference.png deleted file mode 100644 index c729a0e17..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-2.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-2.0-cairo-reference.png deleted file mode 100644 index 79f229a2a..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-400-600-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-1.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-1.0-agg-reference.png deleted file mode 100644 index 61e7e0b2c..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-1.0-cairo-reference.png deleted file mode 100644 index 2c15bd061..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-2.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-2.0-agg-reference.png deleted file mode 100644 index da676df5e..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-2.0-cairo-reference.png deleted file mode 100644 index 420389f09..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-and-hsla-transform-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-linear-comp-op-500-100-1.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-linear-comp-op-500-100-1.0-agg-reference.png deleted file mode 100644 index 62e95c64a..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-linear-comp-op-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-linear-comp-op-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-linear-comp-op-500-100-1.0-cairo-reference.png deleted file mode 100644 index 768f582e5..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-linear-comp-op-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-linear-comp-op-500-100-2.0-agg-reference.png b/tests/visual_tests/images/marker-with-background-image-linear-comp-op-500-100-2.0-agg-reference.png deleted file mode 100644 index 64524a9e8..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-linear-comp-op-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker-with-background-image-linear-comp-op-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/marker-with-background-image-linear-comp-op-500-100-2.0-cairo-reference.png deleted file mode 100644 index 141a2671c..000000000 Binary files a/tests/visual_tests/images/marker-with-background-image-linear-comp-op-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker_line_placement_on_points-500-100-1.0-agg-reference.png b/tests/visual_tests/images/marker_line_placement_on_points-500-100-1.0-agg-reference.png deleted file mode 100644 index fecda368f..000000000 Binary files a/tests/visual_tests/images/marker_line_placement_on_points-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker_line_placement_on_points-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/marker_line_placement_on_points-500-100-1.0-cairo-reference.png deleted file mode 100644 index ebb076c2b..000000000 Binary files a/tests/visual_tests/images/marker_line_placement_on_points-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker_line_placement_on_points-500-100-2.0-agg-reference.png b/tests/visual_tests/images/marker_line_placement_on_points-500-100-2.0-agg-reference.png deleted file mode 100644 index d71141b03..000000000 Binary files a/tests/visual_tests/images/marker_line_placement_on_points-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/marker_line_placement_on_points-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/marker_line_placement_on_points-500-100-2.0-cairo-reference.png deleted file mode 100644 index 1961133d4..000000000 Binary files a/tests/visual_tests/images/marker_line_placement_on_points-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-centroid-postgis-512-512-1.0-agg-reference.png b/tests/visual_tests/images/multipolygon-centroid-postgis-512-512-1.0-agg-reference.png deleted file mode 100644 index 83f5a020d..000000000 Binary files a/tests/visual_tests/images/multipolygon-centroid-postgis-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-centroid-postgis-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/multipolygon-centroid-postgis-512-512-1.0-cairo-reference.png deleted file mode 100644 index 4d7ec9ba9..000000000 Binary files a/tests/visual_tests/images/multipolygon-centroid-postgis-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-centroid-postgis-512-512-2.0-agg-reference.png b/tests/visual_tests/images/multipolygon-centroid-postgis-512-512-2.0-agg-reference.png deleted file mode 100644 index 686b60642..000000000 Binary files a/tests/visual_tests/images/multipolygon-centroid-postgis-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-centroid-postgis-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/multipolygon-centroid-postgis-512-512-2.0-cairo-reference.png deleted file mode 100644 index 28b7650ab..000000000 Binary files a/tests/visual_tests/images/multipolygon-centroid-postgis-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-centroid-wkt-512-512-1.0-agg-reference.png b/tests/visual_tests/images/multipolygon-centroid-wkt-512-512-1.0-agg-reference.png deleted file mode 100644 index 5920dcbf7..000000000 Binary files a/tests/visual_tests/images/multipolygon-centroid-wkt-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-centroid-wkt-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/multipolygon-centroid-wkt-512-512-1.0-cairo-reference.png deleted file mode 100644 index f6121eb49..000000000 Binary files a/tests/visual_tests/images/multipolygon-centroid-wkt-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-centroid-wkt-512-512-2.0-agg-reference.png b/tests/visual_tests/images/multipolygon-centroid-wkt-512-512-2.0-agg-reference.png deleted file mode 100644 index 823e0c58e..000000000 Binary files a/tests/visual_tests/images/multipolygon-centroid-wkt-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-centroid-wkt-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/multipolygon-centroid-wkt-512-512-2.0-cairo-reference.png deleted file mode 100644 index b5c8cecab..000000000 Binary files a/tests/visual_tests/images/multipolygon-centroid-wkt-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-two-holes-geojson-300-300-1.0-agg-reference.png b/tests/visual_tests/images/multipolygon-two-holes-geojson-300-300-1.0-agg-reference.png deleted file mode 100644 index 3b03d7882..000000000 Binary files a/tests/visual_tests/images/multipolygon-two-holes-geojson-300-300-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-two-holes-geojson-300-300-1.0-cairo-reference.png b/tests/visual_tests/images/multipolygon-two-holes-geojson-300-300-1.0-cairo-reference.png deleted file mode 100644 index da538b6a6..000000000 Binary files a/tests/visual_tests/images/multipolygon-two-holes-geojson-300-300-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-two-holes-geojson-300-300-2.0-agg-reference.png b/tests/visual_tests/images/multipolygon-two-holes-geojson-300-300-2.0-agg-reference.png deleted file mode 100644 index 22396c804..000000000 Binary files a/tests/visual_tests/images/multipolygon-two-holes-geojson-300-300-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-two-holes-geojson-300-300-2.0-cairo-reference.png b/tests/visual_tests/images/multipolygon-two-holes-geojson-300-300-2.0-cairo-reference.png deleted file mode 100644 index ea145b71f..000000000 Binary files a/tests/visual_tests/images/multipolygon-two-holes-geojson-300-300-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-two-holes-ogr-300-300-1.0-agg-reference.png b/tests/visual_tests/images/multipolygon-two-holes-ogr-300-300-1.0-agg-reference.png deleted file mode 100644 index 94f579234..000000000 Binary files a/tests/visual_tests/images/multipolygon-two-holes-ogr-300-300-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-two-holes-ogr-300-300-1.0-cairo-reference.png b/tests/visual_tests/images/multipolygon-two-holes-ogr-300-300-1.0-cairo-reference.png deleted file mode 100644 index 997549ade..000000000 Binary files a/tests/visual_tests/images/multipolygon-two-holes-ogr-300-300-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-two-holes-ogr-300-300-2.0-agg-reference.png b/tests/visual_tests/images/multipolygon-two-holes-ogr-300-300-2.0-agg-reference.png deleted file mode 100644 index 641ec03c1..000000000 Binary files a/tests/visual_tests/images/multipolygon-two-holes-ogr-300-300-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-two-holes-ogr-300-300-2.0-cairo-reference.png b/tests/visual_tests/images/multipolygon-two-holes-ogr-300-300-2.0-cairo-reference.png deleted file mode 100644 index 508e703bf..000000000 Binary files a/tests/visual_tests/images/multipolygon-two-holes-ogr-300-300-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-two-holes-shape-300-300-1.0-agg-reference.png b/tests/visual_tests/images/multipolygon-two-holes-shape-300-300-1.0-agg-reference.png deleted file mode 100644 index 94f579234..000000000 Binary files a/tests/visual_tests/images/multipolygon-two-holes-shape-300-300-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-two-holes-shape-300-300-1.0-cairo-reference.png b/tests/visual_tests/images/multipolygon-two-holes-shape-300-300-1.0-cairo-reference.png deleted file mode 100644 index 997549ade..000000000 Binary files a/tests/visual_tests/images/multipolygon-two-holes-shape-300-300-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-two-holes-shape-300-300-2.0-agg-reference.png b/tests/visual_tests/images/multipolygon-two-holes-shape-300-300-2.0-agg-reference.png deleted file mode 100644 index 641ec03c1..000000000 Binary files a/tests/visual_tests/images/multipolygon-two-holes-shape-300-300-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/multipolygon-two-holes-shape-300-300-2.0-cairo-reference.png b/tests/visual_tests/images/multipolygon-two-holes-shape-300-300-2.0-cairo-reference.png deleted file mode 100644 index 508e703bf..000000000 Binary files a/tests/visual_tests/images/multipolygon-two-holes-shape-300-300-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/orientation-800-200-1.0-agg-reference.png b/tests/visual_tests/images/orientation-800-200-1.0-agg-reference.png deleted file mode 100644 index 5eaa3c15f..000000000 Binary files a/tests/visual_tests/images/orientation-800-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/orientation-800-200-1.0-cairo-reference.png b/tests/visual_tests/images/orientation-800-200-1.0-cairo-reference.png deleted file mode 100644 index b6723dd5b..000000000 Binary files a/tests/visual_tests/images/orientation-800-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/orientation-800-200-2.0-agg-reference.png b/tests/visual_tests/images/orientation-800-200-2.0-agg-reference.png deleted file mode 100644 index 1a9555e90..000000000 Binary files a/tests/visual_tests/images/orientation-800-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/orientation-800-200-2.0-cairo-reference.png b/tests/visual_tests/images/orientation-800-200-2.0-cairo-reference.png deleted file mode 100644 index 817f99dea..000000000 Binary files a/tests/visual_tests/images/orientation-800-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/point-symbolizer-expressions-256-256-1.0-agg-reference.png b/tests/visual_tests/images/point-symbolizer-expressions-256-256-1.0-agg-reference.png deleted file mode 100644 index eaac22271..000000000 Binary files a/tests/visual_tests/images/point-symbolizer-expressions-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/point-symbolizer-expressions-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/point-symbolizer-expressions-256-256-1.0-cairo-reference.png deleted file mode 100644 index 0cb383bb7..000000000 Binary files a/tests/visual_tests/images/point-symbolizer-expressions-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/point-symbolizer-expressions-256-256-2.0-agg-reference.png b/tests/visual_tests/images/point-symbolizer-expressions-256-256-2.0-agg-reference.png deleted file mode 100644 index 6cd7c31a5..000000000 Binary files a/tests/visual_tests/images/point-symbolizer-expressions-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/point-symbolizer-expressions-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/point-symbolizer-expressions-256-256-2.0-cairo-reference.png deleted file mode 100644 index f06181253..000000000 Binary files a/tests/visual_tests/images/point-symbolizer-expressions-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/point-symbolizer-expressions-all-256-256-1.0-agg-reference.png b/tests/visual_tests/images/point-symbolizer-expressions-all-256-256-1.0-agg-reference.png deleted file mode 100644 index 6c6fb5b67..000000000 Binary files a/tests/visual_tests/images/point-symbolizer-expressions-all-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/point-symbolizer-expressions-all-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/point-symbolizer-expressions-all-256-256-1.0-cairo-reference.png deleted file mode 100644 index ed86b4759..000000000 Binary files a/tests/visual_tests/images/point-symbolizer-expressions-all-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/point-symbolizer-expressions-all-256-256-2.0-agg-reference.png b/tests/visual_tests/images/point-symbolizer-expressions-all-256-256-2.0-agg-reference.png deleted file mode 100644 index 4660546cd..000000000 Binary files a/tests/visual_tests/images/point-symbolizer-expressions-all-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/point-symbolizer-expressions-all-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/point-symbolizer-expressions-all-256-256-2.0-cairo-reference.png deleted file mode 100644 index 8cf801c67..000000000 Binary files a/tests/visual_tests/images/point-symbolizer-expressions-all-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-1.0-agg-reference.png b/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-1.0-agg-reference.png deleted file mode 100644 index ff046ca79..000000000 Binary files a/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-1.0-cairo-reference.png b/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-1.0-cairo-reference.png deleted file mode 100644 index 124833e46..000000000 Binary files a/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-2.0-agg-reference.png b/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-2.0-agg-reference.png deleted file mode 100644 index ad8ebe815..000000000 Binary files a/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-2.0-cairo-reference.png b/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-2.0-cairo-reference.png deleted file mode 100644 index 682833330..000000000 Binary files a/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-interior-1-800-800-1.0-agg-reference.png b/tests/visual_tests/images/polygon-interior-1-800-800-1.0-agg-reference.png deleted file mode 100644 index 5394355c8..000000000 Binary files a/tests/visual_tests/images/polygon-interior-1-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-interior-1-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/polygon-interior-1-800-800-1.0-cairo-reference.png deleted file mode 100644 index d99b1a0cc..000000000 Binary files a/tests/visual_tests/images/polygon-interior-1-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-interior-1-800-800-2.0-agg-reference.png b/tests/visual_tests/images/polygon-interior-1-800-800-2.0-agg-reference.png deleted file mode 100644 index 993ae0086..000000000 Binary files a/tests/visual_tests/images/polygon-interior-1-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-interior-1-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/polygon-interior-1-800-800-2.0-cairo-reference.png deleted file mode 100644 index fdc723745..000000000 Binary files a/tests/visual_tests/images/polygon-interior-1-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-interior-2-800-800-1.0-agg-reference.png b/tests/visual_tests/images/polygon-interior-2-800-800-1.0-agg-reference.png deleted file mode 100644 index f0053ec4e..000000000 Binary files a/tests/visual_tests/images/polygon-interior-2-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-interior-2-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/polygon-interior-2-800-800-1.0-cairo-reference.png deleted file mode 100644 index 10d282ed2..000000000 Binary files a/tests/visual_tests/images/polygon-interior-2-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-interior-2-800-800-2.0-agg-reference.png b/tests/visual_tests/images/polygon-interior-2-800-800-2.0-agg-reference.png deleted file mode 100644 index ca122c981..000000000 Binary files a/tests/visual_tests/images/polygon-interior-2-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-interior-2-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/polygon-interior-2-800-800-2.0-cairo-reference.png deleted file mode 100644 index 9c8b49e78..000000000 Binary files a/tests/visual_tests/images/polygon-interior-2-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-interior-3-800-800-1.0-agg-reference.png b/tests/visual_tests/images/polygon-interior-3-800-800-1.0-agg-reference.png deleted file mode 100644 index 097fe7aa4..000000000 Binary files a/tests/visual_tests/images/polygon-interior-3-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-interior-3-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/polygon-interior-3-800-800-1.0-cairo-reference.png deleted file mode 100644 index 743239f12..000000000 Binary files a/tests/visual_tests/images/polygon-interior-3-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-interior-3-800-800-2.0-agg-reference.png b/tests/visual_tests/images/polygon-interior-3-800-800-2.0-agg-reference.png deleted file mode 100644 index c0041ba36..000000000 Binary files a/tests/visual_tests/images/polygon-interior-3-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-interior-3-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/polygon-interior-3-800-800-2.0-cairo-reference.png deleted file mode 100644 index 83564657c..000000000 Binary files a/tests/visual_tests/images/polygon-interior-3-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-symbolizer-expressions-256-256-1.0-agg-reference.png b/tests/visual_tests/images/polygon-symbolizer-expressions-256-256-1.0-agg-reference.png deleted file mode 100644 index 6bb2b2860..000000000 Binary files a/tests/visual_tests/images/polygon-symbolizer-expressions-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-symbolizer-expressions-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/polygon-symbolizer-expressions-256-256-1.0-cairo-reference.png deleted file mode 100644 index 605cde4ee..000000000 Binary files a/tests/visual_tests/images/polygon-symbolizer-expressions-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-symbolizer-expressions-256-256-2.0-agg-reference.png b/tests/visual_tests/images/polygon-symbolizer-expressions-256-256-2.0-agg-reference.png deleted file mode 100644 index 1c7f891ef..000000000 Binary files a/tests/visual_tests/images/polygon-symbolizer-expressions-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-symbolizer-expressions-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/polygon-symbolizer-expressions-256-256-2.0-cairo-reference.png deleted file mode 100644 index 8ddaa551a..000000000 Binary files a/tests/visual_tests/images/polygon-symbolizer-expressions-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-symbolizer-expressions-all-256-256-1.0-agg-reference.png b/tests/visual_tests/images/polygon-symbolizer-expressions-all-256-256-1.0-agg-reference.png deleted file mode 100644 index 929f4c6a9..000000000 Binary files a/tests/visual_tests/images/polygon-symbolizer-expressions-all-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-symbolizer-expressions-all-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/polygon-symbolizer-expressions-all-256-256-1.0-cairo-reference.png deleted file mode 100644 index 85e4e917f..000000000 Binary files a/tests/visual_tests/images/polygon-symbolizer-expressions-all-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-symbolizer-expressions-all-256-256-2.0-agg-reference.png b/tests/visual_tests/images/polygon-symbolizer-expressions-all-256-256-2.0-agg-reference.png deleted file mode 100644 index 138169585..000000000 Binary files a/tests/visual_tests/images/polygon-symbolizer-expressions-all-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-symbolizer-expressions-all-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/polygon-symbolizer-expressions-all-256-256-2.0-cairo-reference.png deleted file mode 100644 index cc66e4e81..000000000 Binary files a/tests/visual_tests/images/polygon-symbolizer-expressions-all-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-winding-order-300-300-1.0-agg-reference.png b/tests/visual_tests/images/polygon-winding-order-300-300-1.0-agg-reference.png deleted file mode 100644 index 5c7433846..000000000 Binary files a/tests/visual_tests/images/polygon-winding-order-300-300-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-winding-order-300-300-1.0-cairo-reference.png b/tests/visual_tests/images/polygon-winding-order-300-300-1.0-cairo-reference.png deleted file mode 100644 index dcc8fe9c7..000000000 Binary files a/tests/visual_tests/images/polygon-winding-order-300-300-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-winding-order-300-300-2.0-agg-reference.png b/tests/visual_tests/images/polygon-winding-order-300-300-2.0-agg-reference.png deleted file mode 100644 index d8b127eae..000000000 Binary files a/tests/visual_tests/images/polygon-winding-order-300-300-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-winding-order-300-300-2.0-cairo-reference.png b/tests/visual_tests/images/polygon-winding-order-300-300-2.0-cairo-reference.png deleted file mode 100644 index a2b7297d2..000000000 Binary files a/tests/visual_tests/images/polygon-winding-order-300-300-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-winding-shape-debug-512-512-1.0-agg-reference.png b/tests/visual_tests/images/polygon-winding-shape-debug-512-512-1.0-agg-reference.png deleted file mode 100644 index eb2b39c8c..000000000 Binary files a/tests/visual_tests/images/polygon-winding-shape-debug-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-winding-shape-debug-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/polygon-winding-shape-debug-512-512-1.0-cairo-reference.png deleted file mode 100644 index 64fa8ff65..000000000 Binary files a/tests/visual_tests/images/polygon-winding-shape-debug-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-winding-shape-debug-512-512-2.0-agg-reference.png b/tests/visual_tests/images/polygon-winding-shape-debug-512-512-2.0-agg-reference.png deleted file mode 100644 index eb2b39c8c..000000000 Binary files a/tests/visual_tests/images/polygon-winding-shape-debug-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/polygon-winding-shape-debug-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/polygon-winding-shape-debug-512-512-2.0-cairo-reference.png deleted file mode 100644 index 64fa8ff65..000000000 Binary files a/tests/visual_tests/images/polygon-winding-shape-debug-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/postgis-inline-512-512-1.0-agg-reference.png b/tests/visual_tests/images/postgis-inline-512-512-1.0-agg-reference.png deleted file mode 100644 index 5f4ad0f38..000000000 Binary files a/tests/visual_tests/images/postgis-inline-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/postgis-inline-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/postgis-inline-512-512-1.0-cairo-reference.png deleted file mode 100644 index a2658d1c5..000000000 Binary files a/tests/visual_tests/images/postgis-inline-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/postgis-inline-512-512-2.0-agg-reference.png b/tests/visual_tests/images/postgis-inline-512-512-2.0-agg-reference.png deleted file mode 100644 index bf57f9610..000000000 Binary files a/tests/visual_tests/images/postgis-inline-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/postgis-inline-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/postgis-inline-512-512-2.0-cairo-reference.png deleted file mode 100644 index 92fa3c1bc..000000000 Binary files a/tests/visual_tests/images/postgis-inline-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/python-Format-reference.png b/tests/visual_tests/images/python-Format-reference.png deleted file mode 100644 index 95a0eea9f..000000000 Binary files a/tests/visual_tests/images/python-Format-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/python-IfElse-reference.png b/tests/visual_tests/images/python-IfElse-reference.png deleted file mode 100644 index d71da4f85..000000000 Binary files a/tests/visual_tests/images/python-IfElse-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/python-List-reference.png b/tests/visual_tests/images/python-List-reference.png deleted file mode 100644 index 2be43fc4f..000000000 Binary files a/tests/visual_tests/images/python-List-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/python-MyText-reference.png b/tests/visual_tests/images/python-MyText-reference.png deleted file mode 100644 index 775f4bce9..000000000 Binary files a/tests/visual_tests/images/python-MyText-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/python-TextNode-reference.png b/tests/visual_tests/images/python-TextNode-reference.png deleted file mode 100644 index db6bfa228..000000000 Binary files a/tests/visual_tests/images/python-TextNode-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha1-512-512-1.0-agg-reference.png b/tests/visual_tests/images/raster-color-to-alpha1-512-512-1.0-agg-reference.png deleted file mode 100644 index 8a5af3942..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha1-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha1-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/raster-color-to-alpha1-512-512-1.0-cairo-reference.png deleted file mode 100644 index b5a420b82..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha1-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha1-512-512-2.0-agg-reference.png b/tests/visual_tests/images/raster-color-to-alpha1-512-512-2.0-agg-reference.png deleted file mode 100644 index 8a5af3942..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha1-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha1-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/raster-color-to-alpha1-512-512-2.0-cairo-reference.png deleted file mode 100644 index b5a420b82..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha1-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha2-512-512-1.0-agg-reference.png b/tests/visual_tests/images/raster-color-to-alpha2-512-512-1.0-agg-reference.png deleted file mode 100644 index 316d8bd54..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha2-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha2-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/raster-color-to-alpha2-512-512-1.0-cairo-reference.png deleted file mode 100644 index 055892e15..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha2-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha2-512-512-2.0-agg-reference.png b/tests/visual_tests/images/raster-color-to-alpha2-512-512-2.0-agg-reference.png deleted file mode 100644 index 316d8bd54..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha2-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha2-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/raster-color-to-alpha2-512-512-2.0-cairo-reference.png deleted file mode 100644 index 055892e15..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha2-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha3-512-512-1.0-agg-reference.png b/tests/visual_tests/images/raster-color-to-alpha3-512-512-1.0-agg-reference.png deleted file mode 100644 index dd575b564..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha3-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha3-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/raster-color-to-alpha3-512-512-1.0-cairo-reference.png deleted file mode 100644 index 1dc7f8ae5..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha3-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha3-512-512-2.0-agg-reference.png b/tests/visual_tests/images/raster-color-to-alpha3-512-512-2.0-agg-reference.png deleted file mode 100644 index dd575b564..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha3-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha3-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/raster-color-to-alpha3-512-512-2.0-cairo-reference.png deleted file mode 100644 index 1dc7f8ae5..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha3-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha4-512-512-1.0-agg-reference.png b/tests/visual_tests/images/raster-color-to-alpha4-512-512-1.0-agg-reference.png deleted file mode 100644 index 1ec158dbc..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha4-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha4-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/raster-color-to-alpha4-512-512-1.0-cairo-reference.png deleted file mode 100644 index dec77cf5d..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha4-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha4-512-512-2.0-agg-reference.png b/tests/visual_tests/images/raster-color-to-alpha4-512-512-2.0-agg-reference.png deleted file mode 100644 index 1ec158dbc..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha4-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha4-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/raster-color-to-alpha4-512-512-2.0-cairo-reference.png deleted file mode 100644 index dec77cf5d..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha4-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha4b-512-512-1.0-agg-reference.png b/tests/visual_tests/images/raster-color-to-alpha4b-512-512-1.0-agg-reference.png deleted file mode 100644 index 0d27d72f1..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha4b-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha4b-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/raster-color-to-alpha4b-512-512-1.0-cairo-reference.png deleted file mode 100644 index fed820399..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha4b-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha4b-512-512-2.0-agg-reference.png b/tests/visual_tests/images/raster-color-to-alpha4b-512-512-2.0-agg-reference.png deleted file mode 100644 index 0d27d72f1..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha4b-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha4b-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/raster-color-to-alpha4b-512-512-2.0-cairo-reference.png deleted file mode 100644 index fed820399..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha4b-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha5-512-512-1.0-agg-reference.png b/tests/visual_tests/images/raster-color-to-alpha5-512-512-1.0-agg-reference.png deleted file mode 100644 index b75988967..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha5-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha5-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/raster-color-to-alpha5-512-512-1.0-cairo-reference.png deleted file mode 100644 index dec77cf5d..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha5-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha5-512-512-2.0-agg-reference.png b/tests/visual_tests/images/raster-color-to-alpha5-512-512-2.0-agg-reference.png deleted file mode 100644 index b75988967..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha5-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha5-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/raster-color-to-alpha5-512-512-2.0-cairo-reference.png deleted file mode 100644 index dec77cf5d..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha5-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha5b-512-512-1.0-agg-reference.png b/tests/visual_tests/images/raster-color-to-alpha5b-512-512-1.0-agg-reference.png deleted file mode 100644 index 78a99ee54..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha5b-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha5b-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/raster-color-to-alpha5b-512-512-1.0-cairo-reference.png deleted file mode 100644 index fed820399..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha5b-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha5b-512-512-2.0-agg-reference.png b/tests/visual_tests/images/raster-color-to-alpha5b-512-512-2.0-agg-reference.png deleted file mode 100644 index 78a99ee54..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha5b-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster-color-to-alpha5b-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/raster-color-to-alpha5b-512-512-2.0-cairo-reference.png deleted file mode 100644 index fed820399..000000000 Binary files a/tests/visual_tests/images/raster-color-to-alpha5b-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster_colorizer-512-512-1.0-agg-reference.png b/tests/visual_tests/images/raster_colorizer-512-512-1.0-agg-reference.png deleted file mode 100644 index dec77cf5d..000000000 Binary files a/tests/visual_tests/images/raster_colorizer-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster_colorizer-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/raster_colorizer-512-512-1.0-cairo-reference.png deleted file mode 100644 index dec77cf5d..000000000 Binary files a/tests/visual_tests/images/raster_colorizer-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster_colorizer-512-512-2.0-agg-reference.png b/tests/visual_tests/images/raster_colorizer-512-512-2.0-agg-reference.png deleted file mode 100644 index dec77cf5d..000000000 Binary files a/tests/visual_tests/images/raster_colorizer-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster_colorizer-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/raster_colorizer-512-512-2.0-cairo-reference.png deleted file mode 100644 index dec77cf5d..000000000 Binary files a/tests/visual_tests/images/raster_colorizer-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster_symbolizer-512-512-1.0-agg-reference.png b/tests/visual_tests/images/raster_symbolizer-512-512-1.0-agg-reference.png deleted file mode 100644 index 442400b9e..000000000 Binary files a/tests/visual_tests/images/raster_symbolizer-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster_symbolizer-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/raster_symbolizer-512-512-1.0-cairo-reference.png deleted file mode 100644 index 442400b9e..000000000 Binary files a/tests/visual_tests/images/raster_symbolizer-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster_symbolizer-512-512-2.0-agg-reference.png b/tests/visual_tests/images/raster_symbolizer-512-512-2.0-agg-reference.png deleted file mode 100644 index 442400b9e..000000000 Binary files a/tests/visual_tests/images/raster_symbolizer-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/raster_symbolizer-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/raster_symbolizer-512-512-2.0-cairo-reference.png deleted file mode 100644 index 442400b9e..000000000 Binary files a/tests/visual_tests/images/raster_symbolizer-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/rasterlite-globe-256-256-1.0-agg-reference.png b/tests/visual_tests/images/rasterlite-globe-256-256-1.0-agg-reference.png deleted file mode 100644 index 7c6a1a0ab..000000000 Binary files a/tests/visual_tests/images/rasterlite-globe-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/rasterlite-globe-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/rasterlite-globe-256-256-1.0-cairo-reference.png deleted file mode 100644 index bf227400e..000000000 Binary files a/tests/visual_tests/images/rasterlite-globe-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/rasterlite-globe-256-256-2.0-agg-reference.png b/tests/visual_tests/images/rasterlite-globe-256-256-2.0-agg-reference.png deleted file mode 100644 index 7c6a1a0ab..000000000 Binary files a/tests/visual_tests/images/rasterlite-globe-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/rasterlite-globe-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/rasterlite-globe-256-256-2.0-cairo-reference.png deleted file mode 100644 index bf227400e..000000000 Binary files a/tests/visual_tests/images/rasterlite-globe-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-1-750-250-1.0-agg-reference.png b/tests/visual_tests/images/repeat-labels-1-750-250-1.0-agg-reference.png deleted file mode 100644 index 7e6fbce59..000000000 Binary files a/tests/visual_tests/images/repeat-labels-1-750-250-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-1-750-250-1.0-cairo-reference.png b/tests/visual_tests/images/repeat-labels-1-750-250-1.0-cairo-reference.png deleted file mode 100644 index 1cdc0b8b3..000000000 Binary files a/tests/visual_tests/images/repeat-labels-1-750-250-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-1-750-250-2.0-agg-reference.png b/tests/visual_tests/images/repeat-labels-1-750-250-2.0-agg-reference.png deleted file mode 100644 index 9ee34cff9..000000000 Binary files a/tests/visual_tests/images/repeat-labels-1-750-250-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-1-750-250-2.0-cairo-reference.png b/tests/visual_tests/images/repeat-labels-1-750-250-2.0-cairo-reference.png deleted file mode 100644 index 3634ee8b5..000000000 Binary files a/tests/visual_tests/images/repeat-labels-1-750-250-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-2-750-250-1.0-agg-reference.png b/tests/visual_tests/images/repeat-labels-2-750-250-1.0-agg-reference.png deleted file mode 100644 index e6cb76f45..000000000 Binary files a/tests/visual_tests/images/repeat-labels-2-750-250-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-2-750-250-1.0-cairo-reference.png b/tests/visual_tests/images/repeat-labels-2-750-250-1.0-cairo-reference.png deleted file mode 100644 index e5adf19ef..000000000 Binary files a/tests/visual_tests/images/repeat-labels-2-750-250-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-2-750-250-2.0-agg-reference.png b/tests/visual_tests/images/repeat-labels-2-750-250-2.0-agg-reference.png deleted file mode 100644 index 31031ff89..000000000 Binary files a/tests/visual_tests/images/repeat-labels-2-750-250-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-2-750-250-2.0-cairo-reference.png b/tests/visual_tests/images/repeat-labels-2-750-250-2.0-cairo-reference.png deleted file mode 100644 index 2db09aeef..000000000 Binary files a/tests/visual_tests/images/repeat-labels-2-750-250-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-3-750-250-1.0-agg-reference.png b/tests/visual_tests/images/repeat-labels-3-750-250-1.0-agg-reference.png deleted file mode 100644 index 21265faea..000000000 Binary files a/tests/visual_tests/images/repeat-labels-3-750-250-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-3-750-250-1.0-cairo-reference.png b/tests/visual_tests/images/repeat-labels-3-750-250-1.0-cairo-reference.png deleted file mode 100644 index abe02a032..000000000 Binary files a/tests/visual_tests/images/repeat-labels-3-750-250-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-3-750-250-2.0-agg-reference.png b/tests/visual_tests/images/repeat-labels-3-750-250-2.0-agg-reference.png deleted file mode 100644 index 23bedec7b..000000000 Binary files a/tests/visual_tests/images/repeat-labels-3-750-250-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-3-750-250-2.0-cairo-reference.png b/tests/visual_tests/images/repeat-labels-3-750-250-2.0-cairo-reference.png deleted file mode 100644 index bbaf30fe7..000000000 Binary files a/tests/visual_tests/images/repeat-labels-3-750-250-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-4-750-250-1.0-agg-reference.png b/tests/visual_tests/images/repeat-labels-4-750-250-1.0-agg-reference.png deleted file mode 100644 index 4d491fe36..000000000 Binary files a/tests/visual_tests/images/repeat-labels-4-750-250-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-4-750-250-1.0-cairo-reference.png b/tests/visual_tests/images/repeat-labels-4-750-250-1.0-cairo-reference.png deleted file mode 100644 index 850c8a56c..000000000 Binary files a/tests/visual_tests/images/repeat-labels-4-750-250-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-4-750-250-2.0-agg-reference.png b/tests/visual_tests/images/repeat-labels-4-750-250-2.0-agg-reference.png deleted file mode 100644 index 1352e50a9..000000000 Binary files a/tests/visual_tests/images/repeat-labels-4-750-250-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/repeat-labels-4-750-250-2.0-cairo-reference.png b/tests/visual_tests/images/repeat-labels-4-750-250-2.0-cairo-reference.png deleted file mode 100644 index b89f835d9..000000000 Binary files a/tests/visual_tests/images/repeat-labels-4-750-250-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/road-casings-grouped-rendering-600-600-1.0-agg-reference.png b/tests/visual_tests/images/road-casings-grouped-rendering-600-600-1.0-agg-reference.png deleted file mode 100644 index 4822333f6..000000000 Binary files a/tests/visual_tests/images/road-casings-grouped-rendering-600-600-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/road-casings-grouped-rendering-600-600-1.0-cairo-reference.png b/tests/visual_tests/images/road-casings-grouped-rendering-600-600-1.0-cairo-reference.png deleted file mode 100644 index 62c147f99..000000000 Binary files a/tests/visual_tests/images/road-casings-grouped-rendering-600-600-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/road-casings-grouped-rendering-600-600-2.0-agg-reference.png b/tests/visual_tests/images/road-casings-grouped-rendering-600-600-2.0-agg-reference.png deleted file mode 100644 index b66af9b36..000000000 Binary files a/tests/visual_tests/images/road-casings-grouped-rendering-600-600-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/road-casings-grouped-rendering-600-600-2.0-cairo-reference.png b/tests/visual_tests/images/road-casings-grouped-rendering-600-600-2.0-cairo-reference.png deleted file mode 100644 index c4d299c78..000000000 Binary files a/tests/visual_tests/images/road-casings-grouped-rendering-600-600-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-1.0-agg-reference.png b/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-1.0-agg-reference.png deleted file mode 100644 index c0b33befa..000000000 Binary files a/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-1.0-cairo-reference.png b/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-1.0-cairo-reference.png deleted file mode 100644 index a5c0ea68c..000000000 Binary files a/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-2.0-agg-reference.png b/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-2.0-agg-reference.png deleted file mode 100644 index 50ac3237a..000000000 Binary files a/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-2.0-cairo-reference.png b/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-2.0-cairo-reference.png deleted file mode 100644 index 24175a6a9..000000000 Binary files a/tests/visual_tests/images/road-casings-non-grouped-rendering-600-600-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/rtl-point-200-200-1.0-agg-reference.png b/tests/visual_tests/images/rtl-point-200-200-1.0-agg-reference.png deleted file mode 100644 index 9a538eb6d..000000000 Binary files a/tests/visual_tests/images/rtl-point-200-200-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/rtl-point-200-200-1.0-cairo-reference.png b/tests/visual_tests/images/rtl-point-200-200-1.0-cairo-reference.png deleted file mode 100644 index 927e14f7d..000000000 Binary files a/tests/visual_tests/images/rtl-point-200-200-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/rtl-point-200-200-2.0-agg-reference.png b/tests/visual_tests/images/rtl-point-200-200-2.0-agg-reference.png deleted file mode 100644 index e3f9b2f19..000000000 Binary files a/tests/visual_tests/images/rtl-point-200-200-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/rtl-point-200-200-2.0-cairo-reference.png b/tests/visual_tests/images/rtl-point-200-200-2.0-cairo-reference.png deleted file mode 100644 index bf030b8ed..000000000 Binary files a/tests/visual_tests/images/rtl-point-200-200-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shield-on-line-and-avoid-edges-512-512-1.0-agg-reference.png b/tests/visual_tests/images/shield-on-line-and-avoid-edges-512-512-1.0-agg-reference.png deleted file mode 100644 index 28824f417..000000000 Binary files a/tests/visual_tests/images/shield-on-line-and-avoid-edges-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shield-on-line-and-avoid-edges-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/shield-on-line-and-avoid-edges-512-512-1.0-cairo-reference.png deleted file mode 100644 index 435a92c33..000000000 Binary files a/tests/visual_tests/images/shield-on-line-and-avoid-edges-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shield-on-line-and-avoid-edges-512-512-2.0-agg-reference.png b/tests/visual_tests/images/shield-on-line-and-avoid-edges-512-512-2.0-agg-reference.png deleted file mode 100644 index c6942273b..000000000 Binary files a/tests/visual_tests/images/shield-on-line-and-avoid-edges-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shield-on-line-and-avoid-edges-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/shield-on-line-and-avoid-edges-512-512-2.0-cairo-reference.png deleted file mode 100644 index 3a74eb1ec..000000000 Binary files a/tests/visual_tests/images/shield-on-line-and-avoid-edges-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-1.0-agg-reference.png b/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-1.0-agg-reference.png deleted file mode 100644 index 196850a28..000000000 Binary files a/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-1.0-cairo-reference.png deleted file mode 100644 index 991566b4b..000000000 Binary files a/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-2.0-agg-reference.png b/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-2.0-agg-reference.png deleted file mode 100644 index 6ff0bf180..000000000 Binary files a/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-2.0-cairo-reference.png deleted file mode 100644 index d3d3b4387..000000000 Binary files a/tests/visual_tests/images/shield-on-line-spacing-eq-width-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shield-on-polygon-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/shield-on-polygon-500-100-1.0-cairo-reference.png deleted file mode 100644 index bcb680333..000000000 Binary files a/tests/visual_tests/images/shield-on-polygon-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shield-on-polygon-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/shield-on-polygon-500-100-2.0-cairo-reference.png deleted file mode 100644 index 8ebad2380..000000000 Binary files a/tests/visual_tests/images/shield-on-polygon-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shield-on-polygon-600-400-1.0-agg-reference.png b/tests/visual_tests/images/shield-on-polygon-600-400-1.0-agg-reference.png deleted file mode 100644 index 501c6d2cb..000000000 Binary files a/tests/visual_tests/images/shield-on-polygon-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shield-on-polygon-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/shield-on-polygon-600-400-1.0-cairo-reference.png deleted file mode 100644 index 4f6721bfb..000000000 Binary files a/tests/visual_tests/images/shield-on-polygon-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shield-on-polygon-600-400-2.0-agg-reference.png b/tests/visual_tests/images/shield-on-polygon-600-400-2.0-agg-reference.png deleted file mode 100644 index 3fe3f6278..000000000 Binary files a/tests/visual_tests/images/shield-on-polygon-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shield-on-polygon-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/shield-on-polygon-600-400-2.0-cairo-reference.png deleted file mode 100644 index cac53afa0..000000000 Binary files a/tests/visual_tests/images/shield-on-polygon-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-490-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-490-100-1.0-agg-reference.png deleted file mode 100644 index c63e8495a..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-490-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-490-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-490-100-1.0-cairo-reference.png deleted file mode 100644 index 8540f1cd7..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-490-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-490-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-490-100-2.0-agg-reference.png deleted file mode 100644 index 3fe4b0784..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-490-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-490-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-490-100-2.0-cairo-reference.png deleted file mode 100644 index 5f0363d78..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-490-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-495-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-495-100-1.0-agg-reference.png deleted file mode 100644 index eb93db1ba..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-495-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-495-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-495-100-1.0-cairo-reference.png deleted file mode 100644 index 5ac06962c..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-495-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-495-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-495-100-2.0-agg-reference.png deleted file mode 100644 index a156dbfb5..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-495-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-495-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-495-100-2.0-cairo-reference.png deleted file mode 100644 index eafecfa7f..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-495-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-497-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-497-100-1.0-agg-reference.png deleted file mode 100644 index e1ac93e13..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-497-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-497-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-497-100-1.0-cairo-reference.png deleted file mode 100644 index d0e1d06e4..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-497-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-497-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-497-100-2.0-agg-reference.png deleted file mode 100644 index 81fb56be9..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-497-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-497-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-497-100-2.0-cairo-reference.png deleted file mode 100644 index 814610b95..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-497-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-498-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-498-100-1.0-agg-reference.png deleted file mode 100644 index eb15fb59d..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-498-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-498-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-498-100-1.0-cairo-reference.png deleted file mode 100644 index b01ef6b5b..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-498-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-498-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-498-100-2.0-agg-reference.png deleted file mode 100644 index 4882b14be..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-498-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-498-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-498-100-2.0-cairo-reference.png deleted file mode 100644 index 79452098d..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-498-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-499-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-499-100-1.0-agg-reference.png deleted file mode 100644 index b9dc7bf14..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-499-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-499-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-499-100-1.0-cairo-reference.png deleted file mode 100644 index fd97178f6..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-499-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-499-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-499-100-2.0-agg-reference.png deleted file mode 100644 index 5ef96f080..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-499-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-499-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-499-100-2.0-cairo-reference.png deleted file mode 100644 index 4c6e7db4b..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-499-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-500-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-500-100-1.0-agg-reference.png deleted file mode 100644 index a4af5d6cf..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-500-100-1.0-cairo-reference.png deleted file mode 100644 index f7d43b080..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-500-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-500-100-2.0-agg-reference.png deleted file mode 100644 index de5a2a8bb..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-500-100-2.0-cairo-reference.png deleted file mode 100644 index b7e3124e1..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-501-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-501-100-1.0-agg-reference.png deleted file mode 100644 index 9bb1f77b6..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-501-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-501-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-501-100-1.0-cairo-reference.png deleted file mode 100644 index 2f40e34e0..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-501-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-501-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-501-100-2.0-agg-reference.png deleted file mode 100644 index d9c5c900a..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-501-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-501-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-501-100-2.0-cairo-reference.png deleted file mode 100644 index aaf457fbe..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-501-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-502-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-502-100-1.0-agg-reference.png deleted file mode 100644 index 891ee2916..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-502-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-502-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-502-100-1.0-cairo-reference.png deleted file mode 100644 index 04e0240c1..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-502-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-502-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-502-100-2.0-agg-reference.png deleted file mode 100644 index 0f7ae8ac9..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-502-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-502-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-502-100-2.0-cairo-reference.png deleted file mode 100644 index f25d876ab..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-502-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-505-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-505-100-1.0-agg-reference.png deleted file mode 100644 index 7f6b18855..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-505-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-505-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-505-100-1.0-cairo-reference.png deleted file mode 100644 index 750c6f5a5..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-505-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-505-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-505-100-2.0-agg-reference.png deleted file mode 100644 index 28bdff665..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-505-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-505-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-505-100-2.0-cairo-reference.png deleted file mode 100644 index 20f1fb430..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-505-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-510-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-510-100-1.0-agg-reference.png deleted file mode 100644 index 31240cd5e..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-510-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-510-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-510-100-1.0-cairo-reference.png deleted file mode 100644 index 9f1964a39..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-510-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-510-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-510-100-2.0-agg-reference.png deleted file mode 100644 index 2ec21cd30..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-510-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-1-510-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-1-510-100-2.0-cairo-reference.png deleted file mode 100644 index 66b66db0b..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-1-510-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-490-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-490-100-1.0-agg-reference.png deleted file mode 100644 index 04cb194c9..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-490-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-490-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-490-100-1.0-cairo-reference.png deleted file mode 100644 index d9d90f3df..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-490-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-490-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-490-100-2.0-agg-reference.png deleted file mode 100644 index b6ef565ff..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-490-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-490-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-490-100-2.0-cairo-reference.png deleted file mode 100644 index 0357ebe4e..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-490-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-495-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-495-100-1.0-agg-reference.png deleted file mode 100644 index ce25ce484..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-495-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-495-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-495-100-1.0-cairo-reference.png deleted file mode 100644 index e8222902e..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-495-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-495-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-495-100-2.0-agg-reference.png deleted file mode 100644 index 089d007a7..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-495-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-495-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-495-100-2.0-cairo-reference.png deleted file mode 100644 index 13837ce54..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-495-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-497-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-497-100-1.0-agg-reference.png deleted file mode 100644 index 6a38361cb..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-497-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-497-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-497-100-1.0-cairo-reference.png deleted file mode 100644 index 1432156b4..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-497-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-497-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-497-100-2.0-agg-reference.png deleted file mode 100644 index 8b1627d8f..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-497-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-497-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-497-100-2.0-cairo-reference.png deleted file mode 100644 index 18ef859cf..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-497-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-498-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-498-100-1.0-agg-reference.png deleted file mode 100644 index fc1aa23a2..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-498-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-498-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-498-100-1.0-cairo-reference.png deleted file mode 100644 index 011a3fcd7..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-498-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-498-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-498-100-2.0-agg-reference.png deleted file mode 100644 index e5e943611..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-498-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-498-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-498-100-2.0-cairo-reference.png deleted file mode 100644 index 3f85ea20f..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-498-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-499-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-499-100-1.0-agg-reference.png deleted file mode 100644 index 0a940c304..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-499-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-499-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-499-100-1.0-cairo-reference.png deleted file mode 100644 index 35ae4cc59..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-499-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-499-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-499-100-2.0-agg-reference.png deleted file mode 100644 index 796204cfb..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-499-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-499-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-499-100-2.0-cairo-reference.png deleted file mode 100644 index 68dbbe803..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-499-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-500-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-500-100-1.0-agg-reference.png deleted file mode 100644 index 21dcc56a9..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-500-100-1.0-cairo-reference.png deleted file mode 100644 index 332129218..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-500-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-500-100-2.0-agg-reference.png deleted file mode 100644 index b5c0de689..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-500-100-2.0-cairo-reference.png deleted file mode 100644 index 61e6294a1..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-501-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-501-100-1.0-agg-reference.png deleted file mode 100644 index adaadfc6b..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-501-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-501-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-501-100-1.0-cairo-reference.png deleted file mode 100644 index c04014ac7..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-501-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-501-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-501-100-2.0-agg-reference.png deleted file mode 100644 index 9e8cfe50f..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-501-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-501-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-501-100-2.0-cairo-reference.png deleted file mode 100644 index 82d20e051..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-501-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-502-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-502-100-1.0-agg-reference.png deleted file mode 100644 index 9776bdec1..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-502-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-502-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-502-100-1.0-cairo-reference.png deleted file mode 100644 index ed2913e1b..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-502-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-502-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-502-100-2.0-agg-reference.png deleted file mode 100644 index 343a4efb2..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-502-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-502-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-502-100-2.0-cairo-reference.png deleted file mode 100644 index 2f1e1decf..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-502-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-505-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-505-100-1.0-agg-reference.png deleted file mode 100644 index db5bbede3..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-505-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-505-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-505-100-1.0-cairo-reference.png deleted file mode 100644 index c6cb2877b..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-505-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-505-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-505-100-2.0-agg-reference.png deleted file mode 100644 index 399a28040..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-505-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-505-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-505-100-2.0-cairo-reference.png deleted file mode 100644 index e61f42b12..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-505-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-510-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-510-100-1.0-agg-reference.png deleted file mode 100644 index f6bb67da7..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-510-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-510-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-510-100-1.0-cairo-reference.png deleted file mode 100644 index 38e26d408..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-510-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-510-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-510-100-2.0-agg-reference.png deleted file mode 100644 index 37fa15bdf..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-510-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-2-510-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-2-510-100-2.0-cairo-reference.png deleted file mode 100644 index 71054f96e..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-2-510-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-490-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-490-100-1.0-agg-reference.png deleted file mode 100644 index 67b06ff85..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-490-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-490-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-490-100-1.0-cairo-reference.png deleted file mode 100644 index bbf5ed19f..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-490-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-490-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-490-100-2.0-agg-reference.png deleted file mode 100644 index 2960be8b4..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-490-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-490-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-490-100-2.0-cairo-reference.png deleted file mode 100644 index 37e1a33bb..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-490-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-495-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-495-100-1.0-agg-reference.png deleted file mode 100644 index f551db23c..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-495-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-495-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-495-100-1.0-cairo-reference.png deleted file mode 100644 index 67425b1b3..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-495-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-495-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-495-100-2.0-agg-reference.png deleted file mode 100644 index 8784ba2eb..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-495-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-495-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-495-100-2.0-cairo-reference.png deleted file mode 100644 index d5e1dc6e7..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-495-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-497-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-497-100-1.0-agg-reference.png deleted file mode 100644 index ddf5797c2..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-497-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-497-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-497-100-1.0-cairo-reference.png deleted file mode 100644 index 1f1b317e1..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-497-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-497-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-497-100-2.0-agg-reference.png deleted file mode 100644 index f9512e3c1..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-497-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-497-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-497-100-2.0-cairo-reference.png deleted file mode 100644 index cf540bbb5..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-497-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-498-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-498-100-1.0-agg-reference.png deleted file mode 100644 index 48077e574..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-498-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-498-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-498-100-1.0-cairo-reference.png deleted file mode 100644 index c6efc8bae..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-498-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-498-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-498-100-2.0-agg-reference.png deleted file mode 100644 index 156262c48..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-498-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-498-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-498-100-2.0-cairo-reference.png deleted file mode 100644 index 861af43a7..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-498-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-499-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-499-100-1.0-agg-reference.png deleted file mode 100644 index 2c50e3787..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-499-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-499-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-499-100-1.0-cairo-reference.png deleted file mode 100644 index 782d0c4d3..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-499-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-499-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-499-100-2.0-agg-reference.png deleted file mode 100644 index 9b533f1d7..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-499-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-499-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-499-100-2.0-cairo-reference.png deleted file mode 100644 index d104545ae..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-499-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-500-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-500-100-1.0-agg-reference.png deleted file mode 100644 index e5f75aa5d..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-500-100-1.0-cairo-reference.png deleted file mode 100644 index c801fdb06..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-500-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-500-100-2.0-agg-reference.png deleted file mode 100644 index b207454fc..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-500-100-2.0-cairo-reference.png deleted file mode 100644 index 232c7b983..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-501-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-501-100-1.0-agg-reference.png deleted file mode 100644 index 0685c3930..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-501-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-501-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-501-100-1.0-cairo-reference.png deleted file mode 100644 index 17db7bc0e..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-501-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-501-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-501-100-2.0-agg-reference.png deleted file mode 100644 index bb1ca2e7b..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-501-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-501-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-501-100-2.0-cairo-reference.png deleted file mode 100644 index d7db90d91..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-501-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-502-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-502-100-1.0-agg-reference.png deleted file mode 100644 index 396d415e8..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-502-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-502-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-502-100-1.0-cairo-reference.png deleted file mode 100644 index 7863f4ffb..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-502-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-502-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-502-100-2.0-agg-reference.png deleted file mode 100644 index 04b8c2e28..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-502-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-502-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-502-100-2.0-cairo-reference.png deleted file mode 100644 index a45da3a23..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-502-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-505-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-505-100-1.0-agg-reference.png deleted file mode 100644 index 43bdb6d45..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-505-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-505-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-505-100-1.0-cairo-reference.png deleted file mode 100644 index 6a6836f42..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-505-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-505-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-505-100-2.0-agg-reference.png deleted file mode 100644 index 7ab74e5c7..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-505-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-505-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-505-100-2.0-cairo-reference.png deleted file mode 100644 index 3ba010aae..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-505-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-510-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-510-100-1.0-agg-reference.png deleted file mode 100644 index f8e2438fb..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-510-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-510-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-510-100-1.0-cairo-reference.png deleted file mode 100644 index 2c36f36c6..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-510-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-510-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-510-100-2.0-agg-reference.png deleted file mode 100644 index 1e82301d9..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-510-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-3-510-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-3-510-100-2.0-cairo-reference.png deleted file mode 100644 index ec8a7b376..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-3-510-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-490-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-490-100-1.0-agg-reference.png deleted file mode 100644 index 980b19fd3..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-490-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-490-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-490-100-1.0-cairo-reference.png deleted file mode 100644 index 3066c10c9..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-490-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-490-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-490-100-2.0-agg-reference.png deleted file mode 100644 index 30b375d48..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-490-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-490-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-490-100-2.0-cairo-reference.png deleted file mode 100644 index fd4b64002..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-490-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-495-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-495-100-1.0-agg-reference.png deleted file mode 100644 index d2b820bc2..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-495-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-495-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-495-100-1.0-cairo-reference.png deleted file mode 100644 index 1f85ab75d..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-495-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-495-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-495-100-2.0-agg-reference.png deleted file mode 100644 index ff1d972d3..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-495-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-495-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-495-100-2.0-cairo-reference.png deleted file mode 100644 index e08f58531..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-495-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-497-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-497-100-1.0-agg-reference.png deleted file mode 100644 index 17e7606e5..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-497-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-497-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-497-100-1.0-cairo-reference.png deleted file mode 100644 index fc2753884..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-497-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-497-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-497-100-2.0-agg-reference.png deleted file mode 100644 index f8fb4cb8f..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-497-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-497-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-497-100-2.0-cairo-reference.png deleted file mode 100644 index cd74c2884..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-497-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-498-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-498-100-1.0-agg-reference.png deleted file mode 100644 index 19655b7c7..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-498-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-498-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-498-100-1.0-cairo-reference.png deleted file mode 100644 index 9732411b6..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-498-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-498-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-498-100-2.0-agg-reference.png deleted file mode 100644 index d18e52b1b..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-498-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-498-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-498-100-2.0-cairo-reference.png deleted file mode 100644 index 00aa4a4e2..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-498-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-499-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-499-100-1.0-agg-reference.png deleted file mode 100644 index 2b76ef7af..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-499-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-499-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-499-100-1.0-cairo-reference.png deleted file mode 100644 index 4dcda5c43..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-499-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-499-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-499-100-2.0-agg-reference.png deleted file mode 100644 index 9971e2e2c..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-499-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-499-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-499-100-2.0-cairo-reference.png deleted file mode 100644 index 383e4dad5..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-499-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-500-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-500-100-1.0-agg-reference.png deleted file mode 100644 index a5e96f141..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-500-100-1.0-cairo-reference.png deleted file mode 100644 index 74f2603bc..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-500-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-500-100-2.0-agg-reference.png deleted file mode 100644 index 7d3eecb6c..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-500-100-2.0-cairo-reference.png deleted file mode 100644 index 39f6a7ddc..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-501-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-501-100-1.0-agg-reference.png deleted file mode 100644 index e6cc3b253..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-501-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-501-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-501-100-1.0-cairo-reference.png deleted file mode 100644 index c09dc5e8b..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-501-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-501-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-501-100-2.0-agg-reference.png deleted file mode 100644 index a8849dd73..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-501-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-501-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-501-100-2.0-cairo-reference.png deleted file mode 100644 index 88573a711..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-501-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-502-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-502-100-1.0-agg-reference.png deleted file mode 100644 index c02d387e6..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-502-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-502-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-502-100-1.0-cairo-reference.png deleted file mode 100644 index f0f82bd08..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-502-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-502-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-502-100-2.0-agg-reference.png deleted file mode 100644 index d1ba30700..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-502-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-502-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-502-100-2.0-cairo-reference.png deleted file mode 100644 index f77a2ed22..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-502-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-505-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-505-100-1.0-agg-reference.png deleted file mode 100644 index a10d7981b..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-505-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-505-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-505-100-1.0-cairo-reference.png deleted file mode 100644 index fbc316d91..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-505-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-505-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-505-100-2.0-agg-reference.png deleted file mode 100644 index 521fd72b0..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-505-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-505-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-505-100-2.0-cairo-reference.png deleted file mode 100644 index 815c43628..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-505-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-510-100-1.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-510-100-1.0-agg-reference.png deleted file mode 100644 index ba0312fda..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-510-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-510-100-1.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-510-100-1.0-cairo-reference.png deleted file mode 100644 index 097951c65..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-510-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-510-100-2.0-agg-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-510-100-2.0-agg-reference.png deleted file mode 100644 index 8cbe39aa1..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-510-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/shieldsymbolizer-4-510-100-2.0-cairo-reference.png b/tests/visual_tests/images/shieldsymbolizer-4-510-100-2.0-cairo-reference.png deleted file mode 100644 index f5418fcf2..000000000 Binary files a/tests/visual_tests/images/shieldsymbolizer-4-510-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-100-100-1.0-agg-reference.png b/tests/visual_tests/images/simple-100-100-1.0-agg-reference.png deleted file mode 100644 index 1c8424bf2..000000000 Binary files a/tests/visual_tests/images/simple-100-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-100-100-1.0-cairo-reference.png b/tests/visual_tests/images/simple-100-100-1.0-cairo-reference.png deleted file mode 100644 index 2490ad33c..000000000 Binary files a/tests/visual_tests/images/simple-100-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-100-100-2.0-agg-reference.png b/tests/visual_tests/images/simple-100-100-2.0-agg-reference.png deleted file mode 100644 index b3d13d9ce..000000000 Binary files a/tests/visual_tests/images/simple-100-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-100-100-2.0-cairo-reference.png b/tests/visual_tests/images/simple-100-100-2.0-cairo-reference.png deleted file mode 100644 index 58089e4a0..000000000 Binary files a/tests/visual_tests/images/simple-100-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-150-100-1.0-agg-reference.png b/tests/visual_tests/images/simple-150-100-1.0-agg-reference.png deleted file mode 100644 index 7cbce972e..000000000 Binary files a/tests/visual_tests/images/simple-150-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-150-100-1.0-cairo-reference.png b/tests/visual_tests/images/simple-150-100-1.0-cairo-reference.png deleted file mode 100644 index cd4ab503a..000000000 Binary files a/tests/visual_tests/images/simple-150-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-150-100-2.0-agg-reference.png b/tests/visual_tests/images/simple-150-100-2.0-agg-reference.png deleted file mode 100644 index 31e4d13a5..000000000 Binary files a/tests/visual_tests/images/simple-150-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-150-100-2.0-cairo-reference.png b/tests/visual_tests/images/simple-150-100-2.0-cairo-reference.png deleted file mode 100644 index 48caeb441..000000000 Binary files a/tests/visual_tests/images/simple-150-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-250-100-1.0-agg-reference.png b/tests/visual_tests/images/simple-250-100-1.0-agg-reference.png deleted file mode 100644 index fdb63c831..000000000 Binary files a/tests/visual_tests/images/simple-250-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-250-100-1.0-cairo-reference.png b/tests/visual_tests/images/simple-250-100-1.0-cairo-reference.png deleted file mode 100644 index e7c7a5de9..000000000 Binary files a/tests/visual_tests/images/simple-250-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-250-100-2.0-agg-reference.png b/tests/visual_tests/images/simple-250-100-2.0-agg-reference.png deleted file mode 100644 index f29a48d69..000000000 Binary files a/tests/visual_tests/images/simple-250-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-250-100-2.0-cairo-reference.png b/tests/visual_tests/images/simple-250-100-2.0-cairo-reference.png deleted file mode 100644 index 14ecb6719..000000000 Binary files a/tests/visual_tests/images/simple-250-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-300-100-1.0-agg-reference.png b/tests/visual_tests/images/simple-300-100-1.0-agg-reference.png deleted file mode 100644 index 6d15aab8e..000000000 Binary files a/tests/visual_tests/images/simple-300-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-300-100-1.0-cairo-reference.png b/tests/visual_tests/images/simple-300-100-1.0-cairo-reference.png deleted file mode 100644 index 9debca1a6..000000000 Binary files a/tests/visual_tests/images/simple-300-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-300-100-2.0-agg-reference.png b/tests/visual_tests/images/simple-300-100-2.0-agg-reference.png deleted file mode 100644 index d54df749b..000000000 Binary files a/tests/visual_tests/images/simple-300-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-300-100-2.0-cairo-reference.png b/tests/visual_tests/images/simple-300-100-2.0-cairo-reference.png deleted file mode 100644 index 2d811afd9..000000000 Binary files a/tests/visual_tests/images/simple-300-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-400-100-1.0-agg-reference.png b/tests/visual_tests/images/simple-400-100-1.0-agg-reference.png deleted file mode 100644 index 3a2fda103..000000000 Binary files a/tests/visual_tests/images/simple-400-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-400-100-1.0-cairo-reference.png b/tests/visual_tests/images/simple-400-100-1.0-cairo-reference.png deleted file mode 100644 index a8047e0b3..000000000 Binary files a/tests/visual_tests/images/simple-400-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-400-100-2.0-agg-reference.png b/tests/visual_tests/images/simple-400-100-2.0-agg-reference.png deleted file mode 100644 index 060d334b9..000000000 Binary files a/tests/visual_tests/images/simple-400-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-400-100-2.0-cairo-reference.png b/tests/visual_tests/images/simple-400-100-2.0-cairo-reference.png deleted file mode 100644 index a777040e0..000000000 Binary files a/tests/visual_tests/images/simple-400-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-600-100-1.0-agg-reference.png b/tests/visual_tests/images/simple-600-100-1.0-agg-reference.png deleted file mode 100644 index 362340428..000000000 Binary files a/tests/visual_tests/images/simple-600-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-600-100-1.0-cairo-reference.png b/tests/visual_tests/images/simple-600-100-1.0-cairo-reference.png deleted file mode 100644 index f58181bae..000000000 Binary files a/tests/visual_tests/images/simple-600-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-600-100-2.0-agg-reference.png b/tests/visual_tests/images/simple-600-100-2.0-agg-reference.png deleted file mode 100644 index 5bfde2542..000000000 Binary files a/tests/visual_tests/images/simple-600-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-600-100-2.0-cairo-reference.png b/tests/visual_tests/images/simple-600-100-2.0-cairo-reference.png deleted file mode 100644 index 0de2346cc..000000000 Binary files a/tests/visual_tests/images/simple-600-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-800-100-1.0-agg-reference.png b/tests/visual_tests/images/simple-800-100-1.0-agg-reference.png deleted file mode 100644 index 748d99713..000000000 Binary files a/tests/visual_tests/images/simple-800-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-800-100-1.0-cairo-reference.png b/tests/visual_tests/images/simple-800-100-1.0-cairo-reference.png deleted file mode 100644 index 273b9144f..000000000 Binary files a/tests/visual_tests/images/simple-800-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-800-100-2.0-agg-reference.png b/tests/visual_tests/images/simple-800-100-2.0-agg-reference.png deleted file mode 100644 index aea49db6e..000000000 Binary files a/tests/visual_tests/images/simple-800-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-800-100-2.0-cairo-reference.png b/tests/visual_tests/images/simple-800-100-2.0-cairo-reference.png deleted file mode 100644 index 18b58de4e..000000000 Binary files a/tests/visual_tests/images/simple-800-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-E-500-100-1.0-agg-reference.png b/tests/visual_tests/images/simple-E-500-100-1.0-agg-reference.png deleted file mode 100644 index a603ac506..000000000 Binary files a/tests/visual_tests/images/simple-E-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-E-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/simple-E-500-100-1.0-cairo-reference.png deleted file mode 100644 index 87b75714d..000000000 Binary files a/tests/visual_tests/images/simple-E-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-E-500-100-2.0-agg-reference.png b/tests/visual_tests/images/simple-E-500-100-2.0-agg-reference.png deleted file mode 100644 index 3dbbe28e4..000000000 Binary files a/tests/visual_tests/images/simple-E-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-E-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/simple-E-500-100-2.0-cairo-reference.png deleted file mode 100644 index 72d479f80..000000000 Binary files a/tests/visual_tests/images/simple-E-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-N-500-100-1.0-agg-reference.png b/tests/visual_tests/images/simple-N-500-100-1.0-agg-reference.png deleted file mode 100644 index 4873589aa..000000000 Binary files a/tests/visual_tests/images/simple-N-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-N-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/simple-N-500-100-1.0-cairo-reference.png deleted file mode 100644 index 835301421..000000000 Binary files a/tests/visual_tests/images/simple-N-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-N-500-100-2.0-agg-reference.png b/tests/visual_tests/images/simple-N-500-100-2.0-agg-reference.png deleted file mode 100644 index 12fdd9509..000000000 Binary files a/tests/visual_tests/images/simple-N-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-N-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/simple-N-500-100-2.0-cairo-reference.png deleted file mode 100644 index 111057388..000000000 Binary files a/tests/visual_tests/images/simple-N-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-NE-500-100-1.0-agg-reference.png b/tests/visual_tests/images/simple-NE-500-100-1.0-agg-reference.png deleted file mode 100644 index 396b33b99..000000000 Binary files a/tests/visual_tests/images/simple-NE-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-NE-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/simple-NE-500-100-1.0-cairo-reference.png deleted file mode 100644 index 62586d5a5..000000000 Binary files a/tests/visual_tests/images/simple-NE-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-NE-500-100-2.0-agg-reference.png b/tests/visual_tests/images/simple-NE-500-100-2.0-agg-reference.png deleted file mode 100644 index 433e4d341..000000000 Binary files a/tests/visual_tests/images/simple-NE-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-NE-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/simple-NE-500-100-2.0-cairo-reference.png deleted file mode 100644 index 9cf8c8f30..000000000 Binary files a/tests/visual_tests/images/simple-NE-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-NW-500-100-1.0-agg-reference.png b/tests/visual_tests/images/simple-NW-500-100-1.0-agg-reference.png deleted file mode 100644 index 74694ac04..000000000 Binary files a/tests/visual_tests/images/simple-NW-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-NW-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/simple-NW-500-100-1.0-cairo-reference.png deleted file mode 100644 index f00df9582..000000000 Binary files a/tests/visual_tests/images/simple-NW-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-NW-500-100-2.0-agg-reference.png b/tests/visual_tests/images/simple-NW-500-100-2.0-agg-reference.png deleted file mode 100644 index 7a01f658a..000000000 Binary files a/tests/visual_tests/images/simple-NW-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-NW-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/simple-NW-500-100-2.0-cairo-reference.png deleted file mode 100644 index 9e44d12ac..000000000 Binary files a/tests/visual_tests/images/simple-NW-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-S-500-100-1.0-agg-reference.png b/tests/visual_tests/images/simple-S-500-100-1.0-agg-reference.png deleted file mode 100644 index 197d82286..000000000 Binary files a/tests/visual_tests/images/simple-S-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-S-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/simple-S-500-100-1.0-cairo-reference.png deleted file mode 100644 index 0d7edfd86..000000000 Binary files a/tests/visual_tests/images/simple-S-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-S-500-100-2.0-agg-reference.png b/tests/visual_tests/images/simple-S-500-100-2.0-agg-reference.png deleted file mode 100644 index 92ad721cc..000000000 Binary files a/tests/visual_tests/images/simple-S-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-S-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/simple-S-500-100-2.0-cairo-reference.png deleted file mode 100644 index c328512d6..000000000 Binary files a/tests/visual_tests/images/simple-S-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-SE-500-100-1.0-agg-reference.png b/tests/visual_tests/images/simple-SE-500-100-1.0-agg-reference.png deleted file mode 100644 index dbbef4b9d..000000000 Binary files a/tests/visual_tests/images/simple-SE-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-SE-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/simple-SE-500-100-1.0-cairo-reference.png deleted file mode 100644 index 5569a50ec..000000000 Binary files a/tests/visual_tests/images/simple-SE-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-SE-500-100-2.0-agg-reference.png b/tests/visual_tests/images/simple-SE-500-100-2.0-agg-reference.png deleted file mode 100644 index d0e28aa90..000000000 Binary files a/tests/visual_tests/images/simple-SE-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-SE-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/simple-SE-500-100-2.0-cairo-reference.png deleted file mode 100644 index 51a203d14..000000000 Binary files a/tests/visual_tests/images/simple-SE-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-SW-500-100-1.0-agg-reference.png b/tests/visual_tests/images/simple-SW-500-100-1.0-agg-reference.png deleted file mode 100644 index b2775823a..000000000 Binary files a/tests/visual_tests/images/simple-SW-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-SW-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/simple-SW-500-100-1.0-cairo-reference.png deleted file mode 100644 index 1d3a25489..000000000 Binary files a/tests/visual_tests/images/simple-SW-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-SW-500-100-2.0-agg-reference.png b/tests/visual_tests/images/simple-SW-500-100-2.0-agg-reference.png deleted file mode 100644 index eeaca9941..000000000 Binary files a/tests/visual_tests/images/simple-SW-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-SW-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/simple-SW-500-100-2.0-cairo-reference.png deleted file mode 100644 index 05f5e418b..000000000 Binary files a/tests/visual_tests/images/simple-SW-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-W-500-100-1.0-agg-reference.png b/tests/visual_tests/images/simple-W-500-100-1.0-agg-reference.png deleted file mode 100644 index af9bf7b8b..000000000 Binary files a/tests/visual_tests/images/simple-W-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-W-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/simple-W-500-100-1.0-cairo-reference.png deleted file mode 100644 index 31b1a34d5..000000000 Binary files a/tests/visual_tests/images/simple-W-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-W-500-100-2.0-agg-reference.png b/tests/visual_tests/images/simple-W-500-100-2.0-agg-reference.png deleted file mode 100644 index ed412e59a..000000000 Binary files a/tests/visual_tests/images/simple-W-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-W-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/simple-W-500-100-2.0-cairo-reference.png deleted file mode 100644 index a567df210..000000000 Binary files a/tests/visual_tests/images/simple-W-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-shield-600-400-1.0-agg-reference.png b/tests/visual_tests/images/simple-shield-600-400-1.0-agg-reference.png deleted file mode 100644 index 9c9e806d6..000000000 Binary files a/tests/visual_tests/images/simple-shield-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-shield-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/simple-shield-600-400-1.0-cairo-reference.png deleted file mode 100644 index baa7e2f0f..000000000 Binary files a/tests/visual_tests/images/simple-shield-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-shield-600-400-2.0-agg-reference.png b/tests/visual_tests/images/simple-shield-600-400-2.0-agg-reference.png deleted file mode 100644 index 7db8997b4..000000000 Binary files a/tests/visual_tests/images/simple-shield-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simple-shield-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/simple-shield-600-400-2.0-cairo-reference.png deleted file mode 100644 index baa7e2f0f..000000000 Binary files a/tests/visual_tests/images/simple-shield-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-douglas-peucker-500-1000-1.0-agg-reference.png b/tests/visual_tests/images/simplify-douglas-peucker-500-1000-1.0-agg-reference.png deleted file mode 100644 index d05f9d101..000000000 Binary files a/tests/visual_tests/images/simplify-douglas-peucker-500-1000-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-douglas-peucker-500-1000-1.0-cairo-reference.png b/tests/visual_tests/images/simplify-douglas-peucker-500-1000-1.0-cairo-reference.png deleted file mode 100644 index 09930ba57..000000000 Binary files a/tests/visual_tests/images/simplify-douglas-peucker-500-1000-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-douglas-peucker-500-1000-2.0-agg-reference.png b/tests/visual_tests/images/simplify-douglas-peucker-500-1000-2.0-agg-reference.png deleted file mode 100644 index ec92b0c57..000000000 Binary files a/tests/visual_tests/images/simplify-douglas-peucker-500-1000-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-douglas-peucker-500-1000-2.0-cairo-reference.png b/tests/visual_tests/images/simplify-douglas-peucker-500-1000-2.0-cairo-reference.png deleted file mode 100644 index d36c8b10a..000000000 Binary files a/tests/visual_tests/images/simplify-douglas-peucker-500-1000-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-radial-distance-500-1000-1.0-agg-reference.png b/tests/visual_tests/images/simplify-radial-distance-500-1000-1.0-agg-reference.png deleted file mode 100644 index 2826debd0..000000000 Binary files a/tests/visual_tests/images/simplify-radial-distance-500-1000-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-radial-distance-500-1000-1.0-cairo-reference.png b/tests/visual_tests/images/simplify-radial-distance-500-1000-1.0-cairo-reference.png deleted file mode 100644 index 2318a1961..000000000 Binary files a/tests/visual_tests/images/simplify-radial-distance-500-1000-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-radial-distance-500-1000-2.0-agg-reference.png b/tests/visual_tests/images/simplify-radial-distance-500-1000-2.0-agg-reference.png deleted file mode 100644 index 9659f8e62..000000000 Binary files a/tests/visual_tests/images/simplify-radial-distance-500-1000-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-radial-distance-500-1000-2.0-cairo-reference.png b/tests/visual_tests/images/simplify-radial-distance-500-1000-2.0-cairo-reference.png deleted file mode 100644 index 8d4861eae..000000000 Binary files a/tests/visual_tests/images/simplify-radial-distance-500-1000-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-visvalingam-whyatt-500-1000-1.0-agg-reference.png b/tests/visual_tests/images/simplify-visvalingam-whyatt-500-1000-1.0-agg-reference.png deleted file mode 100644 index f23ccb761..000000000 Binary files a/tests/visual_tests/images/simplify-visvalingam-whyatt-500-1000-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-visvalingam-whyatt-500-1000-1.0-cairo-reference.png b/tests/visual_tests/images/simplify-visvalingam-whyatt-500-1000-1.0-cairo-reference.png deleted file mode 100644 index 9cb466954..000000000 Binary files a/tests/visual_tests/images/simplify-visvalingam-whyatt-500-1000-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-visvalingam-whyatt-500-1000-2.0-agg-reference.png b/tests/visual_tests/images/simplify-visvalingam-whyatt-500-1000-2.0-agg-reference.png deleted file mode 100644 index 225eea978..000000000 Binary files a/tests/visual_tests/images/simplify-visvalingam-whyatt-500-1000-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-visvalingam-whyatt-500-1000-2.0-cairo-reference.png b/tests/visual_tests/images/simplify-visvalingam-whyatt-500-1000-2.0-cairo-reference.png deleted file mode 100644 index aea8c2ec3..000000000 Binary files a/tests/visual_tests/images/simplify-visvalingam-whyatt-500-1000-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-zhao-saalfeld-500-1000-1.0-agg-reference.png b/tests/visual_tests/images/simplify-zhao-saalfeld-500-1000-1.0-agg-reference.png deleted file mode 100644 index f8e46dcf0..000000000 Binary files a/tests/visual_tests/images/simplify-zhao-saalfeld-500-1000-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-zhao-saalfeld-500-1000-1.0-cairo-reference.png b/tests/visual_tests/images/simplify-zhao-saalfeld-500-1000-1.0-cairo-reference.png deleted file mode 100644 index dbcc1e61f..000000000 Binary files a/tests/visual_tests/images/simplify-zhao-saalfeld-500-1000-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-zhao-saalfeld-500-1000-2.0-agg-reference.png b/tests/visual_tests/images/simplify-zhao-saalfeld-500-1000-2.0-agg-reference.png deleted file mode 100644 index fd1e4a943..000000000 Binary files a/tests/visual_tests/images/simplify-zhao-saalfeld-500-1000-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/simplify-zhao-saalfeld-500-1000-2.0-cairo-reference.png b/tests/visual_tests/images/simplify-zhao-saalfeld-500-1000-2.0-cairo-reference.png deleted file mode 100644 index 907c29afd..000000000 Binary files a/tests/visual_tests/images/simplify-zhao-saalfeld-500-1000-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-0,0-512-512-1.0-agg-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-0,0-512-512-1.0-agg-reference.png deleted file mode 100644 index 0a2adf78b..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-0,0-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-0,0-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-0,0-512-512-1.0-cairo-reference.png deleted file mode 100644 index 69a880e63..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-0,0-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-0,0-512-512-2.0-agg-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-0,0-512-512-2.0-agg-reference.png deleted file mode 100644 index 0a2adf78b..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-0,0-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-0,0-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-0,0-512-512-2.0-cairo-reference.png deleted file mode 100644 index 69a880e63..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-0,0-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-0,1-512-512-1.0-agg-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-0,1-512-512-1.0-agg-reference.png deleted file mode 100644 index c77aa91bd..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-0,1-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-0,1-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-0,1-512-512-1.0-cairo-reference.png deleted file mode 100644 index 7b1f0ac93..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-0,1-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-0,1-512-512-2.0-agg-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-0,1-512-512-2.0-agg-reference.png deleted file mode 100644 index c77aa91bd..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-0,1-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-0,1-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-0,1-512-512-2.0-cairo-reference.png deleted file mode 100644 index 7b1f0ac93..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-0,1-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-1,0-512-512-1.0-agg-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-1,0-512-512-1.0-agg-reference.png deleted file mode 100644 index 2067707cd..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-1,0-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-1,0-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-1,0-512-512-1.0-cairo-reference.png deleted file mode 100644 index d63f03d4f..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-1,0-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-1,0-512-512-2.0-agg-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-1,0-512-512-2.0-agg-reference.png deleted file mode 100644 index 2067707cd..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-1,0-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-1,0-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-1,0-512-512-2.0-cairo-reference.png deleted file mode 100644 index d63f03d4f..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-1,0-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-1,1-512-512-1.0-agg-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-1,1-512-512-1.0-agg-reference.png deleted file mode 100644 index 57571ab65..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-1,1-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-1,1-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-1,1-512-512-1.0-cairo-reference.png deleted file mode 100644 index 3c2bad37d..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-1,1-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-1,1-512-512-2.0-agg-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-1,1-512-512-2.0-agg-reference.png deleted file mode 100644 index 57571ab65..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-1,1-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/style-level-compositing-tiled-1,1-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/style-level-compositing-tiled-1,1-512-512-2.0-cairo-reference.png deleted file mode 100644 index 3c2bad37d..000000000 Binary files a/tests/visual_tests/images/style-level-compositing-tiled-1,1-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-allow-overlap-expr-500-500-1.0-agg-reference.png b/tests/visual_tests/images/text-allow-overlap-expr-500-500-1.0-agg-reference.png deleted file mode 100644 index f8ce913c9..000000000 Binary files a/tests/visual_tests/images/text-allow-overlap-expr-500-500-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-allow-overlap-expr-500-500-1.0-cairo-reference.png b/tests/visual_tests/images/text-allow-overlap-expr-500-500-1.0-cairo-reference.png deleted file mode 100644 index e04ebca91..000000000 Binary files a/tests/visual_tests/images/text-allow-overlap-expr-500-500-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-allow-overlap-expr-500-500-2.0-agg-reference.png b/tests/visual_tests/images/text-allow-overlap-expr-500-500-2.0-agg-reference.png deleted file mode 100644 index d37986a80..000000000 Binary files a/tests/visual_tests/images/text-allow-overlap-expr-500-500-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-allow-overlap-expr-500-500-2.0-cairo-reference.png b/tests/visual_tests/images/text-allow-overlap-expr-500-500-2.0-cairo-reference.png deleted file mode 100644 index 5b69fdfd2..000000000 Binary files a/tests/visual_tests/images/text-allow-overlap-expr-500-500-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bengali-800-100-1.0-agg-reference.png b/tests/visual_tests/images/text-bengali-800-100-1.0-agg-reference.png deleted file mode 100644 index e89f2426a..000000000 Binary files a/tests/visual_tests/images/text-bengali-800-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bengali-800-100-1.0-cairo-reference.png b/tests/visual_tests/images/text-bengali-800-100-1.0-cairo-reference.png deleted file mode 100644 index 01645c026..000000000 Binary files a/tests/visual_tests/images/text-bengali-800-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bengali-800-100-2.0-agg-reference.png b/tests/visual_tests/images/text-bengali-800-100-2.0-agg-reference.png deleted file mode 100644 index 605330fb6..000000000 Binary files a/tests/visual_tests/images/text-bengali-800-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bengali-800-100-2.0-cairo-reference.png b/tests/visual_tests/images/text-bengali-800-100-2.0-cairo-reference.png deleted file mode 100644 index 678a28bd2..000000000 Binary files a/tests/visual_tests/images/text-bengali-800-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1532-600-165-1.0-agg-reference.png b/tests/visual_tests/images/text-bug1532-600-165-1.0-agg-reference.png deleted file mode 100644 index 6bdaed7ca..000000000 Binary files a/tests/visual_tests/images/text-bug1532-600-165-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1532-600-165-1.0-cairo-reference.png b/tests/visual_tests/images/text-bug1532-600-165-1.0-cairo-reference.png deleted file mode 100644 index 7206b31ad..000000000 Binary files a/tests/visual_tests/images/text-bug1532-600-165-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1532-600-165-2.0-agg-reference.png b/tests/visual_tests/images/text-bug1532-600-165-2.0-agg-reference.png deleted file mode 100644 index fe208d4ba..000000000 Binary files a/tests/visual_tests/images/text-bug1532-600-165-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1532-600-165-2.0-cairo-reference.png b/tests/visual_tests/images/text-bug1532-600-165-2.0-cairo-reference.png deleted file mode 100644 index b312d2ace..000000000 Binary files a/tests/visual_tests/images/text-bug1532-600-165-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1533-600-600-1.0-agg-reference.png b/tests/visual_tests/images/text-bug1533-600-600-1.0-agg-reference.png deleted file mode 100644 index eadfb6316..000000000 Binary files a/tests/visual_tests/images/text-bug1533-600-600-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1533-600-600-1.0-cairo-reference.png b/tests/visual_tests/images/text-bug1533-600-600-1.0-cairo-reference.png deleted file mode 100644 index f356143e2..000000000 Binary files a/tests/visual_tests/images/text-bug1533-600-600-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1533-600-600-2.0-agg-reference.png b/tests/visual_tests/images/text-bug1533-600-600-2.0-agg-reference.png deleted file mode 100644 index ee5efc280..000000000 Binary files a/tests/visual_tests/images/text-bug1533-600-600-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1533-600-600-2.0-cairo-reference.png b/tests/visual_tests/images/text-bug1533-600-600-2.0-cairo-reference.png deleted file mode 100644 index a737786b7..000000000 Binary files a/tests/visual_tests/images/text-bug1533-600-600-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1820+0-600-300-1.0-agg-reference.png b/tests/visual_tests/images/text-bug1820+0-600-300-1.0-agg-reference.png deleted file mode 100644 index 13532ac5b..000000000 Binary files a/tests/visual_tests/images/text-bug1820+0-600-300-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1820+0-600-300-1.0-cairo-reference.png b/tests/visual_tests/images/text-bug1820+0-600-300-1.0-cairo-reference.png deleted file mode 100644 index 21e99ccff..000000000 Binary files a/tests/visual_tests/images/text-bug1820+0-600-300-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1820+0-600-300-2.0-agg-reference.png b/tests/visual_tests/images/text-bug1820+0-600-300-2.0-agg-reference.png deleted file mode 100644 index 565f39fdf..000000000 Binary files a/tests/visual_tests/images/text-bug1820+0-600-300-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1820+0-600-300-2.0-cairo-reference.png b/tests/visual_tests/images/text-bug1820+0-600-300-2.0-cairo-reference.png deleted file mode 100644 index c71c6410a..000000000 Binary files a/tests/visual_tests/images/text-bug1820+0-600-300-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1820+1-600-300-1.0-agg-reference.png b/tests/visual_tests/images/text-bug1820+1-600-300-1.0-agg-reference.png deleted file mode 100644 index 9f6185004..000000000 Binary files a/tests/visual_tests/images/text-bug1820+1-600-300-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1820+1-600-300-1.0-cairo-reference.png b/tests/visual_tests/images/text-bug1820+1-600-300-1.0-cairo-reference.png deleted file mode 100644 index 67fb09dd5..000000000 Binary files a/tests/visual_tests/images/text-bug1820+1-600-300-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1820+1-600-300-2.0-agg-reference.png b/tests/visual_tests/images/text-bug1820+1-600-300-2.0-agg-reference.png deleted file mode 100644 index a8ef1e940..000000000 Binary files a/tests/visual_tests/images/text-bug1820+1-600-300-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1820+1-600-300-2.0-cairo-reference.png b/tests/visual_tests/images/text-bug1820+1-600-300-2.0-cairo-reference.png deleted file mode 100644 index 6640fca0f..000000000 Binary files a/tests/visual_tests/images/text-bug1820+1-600-300-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1820-1-600-300-1.0-agg-reference.png b/tests/visual_tests/images/text-bug1820-1-600-300-1.0-agg-reference.png deleted file mode 100644 index 4dbae339b..000000000 Binary files a/tests/visual_tests/images/text-bug1820-1-600-300-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1820-1-600-300-1.0-cairo-reference.png b/tests/visual_tests/images/text-bug1820-1-600-300-1.0-cairo-reference.png deleted file mode 100644 index 11793b637..000000000 Binary files a/tests/visual_tests/images/text-bug1820-1-600-300-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1820-1-600-300-2.0-agg-reference.png b/tests/visual_tests/images/text-bug1820-1-600-300-2.0-agg-reference.png deleted file mode 100644 index 5ad7b5104..000000000 Binary files a/tests/visual_tests/images/text-bug1820-1-600-300-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug1820-1-600-300-2.0-cairo-reference.png b/tests/visual_tests/images/text-bug1820-1-600-300-2.0-cairo-reference.png deleted file mode 100644 index 224363dfd..000000000 Binary files a/tests/visual_tests/images/text-bug1820-1-600-300-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug2037-800-300-1.0-agg-reference.png b/tests/visual_tests/images/text-bug2037-800-300-1.0-agg-reference.png deleted file mode 100644 index 3503fa6ea..000000000 Binary files a/tests/visual_tests/images/text-bug2037-800-300-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug2037-800-300-1.0-cairo-reference.png b/tests/visual_tests/images/text-bug2037-800-300-1.0-cairo-reference.png deleted file mode 100644 index 702a4bd6e..000000000 Binary files a/tests/visual_tests/images/text-bug2037-800-300-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug2037-800-300-2.0-agg-reference.png b/tests/visual_tests/images/text-bug2037-800-300-2.0-agg-reference.png deleted file mode 100644 index c6cb44bab..000000000 Binary files a/tests/visual_tests/images/text-bug2037-800-300-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-bug2037-800-300-2.0-cairo-reference.png b/tests/visual_tests/images/text-bug2037-800-300-2.0-cairo-reference.png deleted file mode 100644 index 76a1a1545..000000000 Binary files a/tests/visual_tests/images/text-bug2037-800-300-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-charplacement-512-512-1.0-agg-reference.png b/tests/visual_tests/images/text-charplacement-512-512-1.0-agg-reference.png deleted file mode 100644 index 0ebb5254c..000000000 Binary files a/tests/visual_tests/images/text-charplacement-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-charplacement-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/text-charplacement-512-512-1.0-cairo-reference.png deleted file mode 100644 index b940f7b01..000000000 Binary files a/tests/visual_tests/images/text-charplacement-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-charplacement-512-512-2.0-agg-reference.png b/tests/visual_tests/images/text-charplacement-512-512-2.0-agg-reference.png deleted file mode 100644 index 5c62d1303..000000000 Binary files a/tests/visual_tests/images/text-charplacement-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-charplacement-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/text-charplacement-512-512-2.0-cairo-reference.png deleted file mode 100644 index ff270f009..000000000 Binary files a/tests/visual_tests/images/text-charplacement-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-data-binding-500-500-1.0-agg-reference.png b/tests/visual_tests/images/text-data-binding-500-500-1.0-agg-reference.png deleted file mode 100644 index 385f1d038..000000000 Binary files a/tests/visual_tests/images/text-data-binding-500-500-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-data-binding-500-500-1.0-cairo-reference.png b/tests/visual_tests/images/text-data-binding-500-500-1.0-cairo-reference.png deleted file mode 100644 index 01c14cc34..000000000 Binary files a/tests/visual_tests/images/text-data-binding-500-500-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-data-binding-500-500-2.0-agg-reference.png b/tests/visual_tests/images/text-data-binding-500-500-2.0-agg-reference.png deleted file mode 100644 index 6e0f4d3a3..000000000 Binary files a/tests/visual_tests/images/text-data-binding-500-500-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-data-binding-500-500-2.0-cairo-reference.png b/tests/visual_tests/images/text-data-binding-500-500-2.0-cairo-reference.png deleted file mode 100644 index 42b780d33..000000000 Binary files a/tests/visual_tests/images/text-data-binding-500-500-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-displacement-512-512-1.0-agg-reference.png b/tests/visual_tests/images/text-displacement-512-512-1.0-agg-reference.png deleted file mode 100644 index 0de9cb8b1..000000000 Binary files a/tests/visual_tests/images/text-displacement-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-displacement-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/text-displacement-512-512-1.0-cairo-reference.png deleted file mode 100644 index 29ee85a9b..000000000 Binary files a/tests/visual_tests/images/text-displacement-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-displacement-512-512-2.0-agg-reference.png b/tests/visual_tests/images/text-displacement-512-512-2.0-agg-reference.png deleted file mode 100644 index 217513708..000000000 Binary files a/tests/visual_tests/images/text-displacement-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-displacement-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/text-displacement-512-512-2.0-cairo-reference.png deleted file mode 100644 index 40f3faaf4..000000000 Binary files a/tests/visual_tests/images/text-displacement-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-expressionformat-color-800-100-1.0-agg-reference.png b/tests/visual_tests/images/text-expressionformat-color-800-100-1.0-agg-reference.png deleted file mode 100644 index 8ff7a7767..000000000 Binary files a/tests/visual_tests/images/text-expressionformat-color-800-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-expressionformat-color-800-100-1.0-cairo-reference.png b/tests/visual_tests/images/text-expressionformat-color-800-100-1.0-cairo-reference.png deleted file mode 100644 index c490ec3ad..000000000 Binary files a/tests/visual_tests/images/text-expressionformat-color-800-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-expressionformat-color-800-100-2.0-agg-reference.png b/tests/visual_tests/images/text-expressionformat-color-800-100-2.0-agg-reference.png deleted file mode 100644 index 9298e559d..000000000 Binary files a/tests/visual_tests/images/text-expressionformat-color-800-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-expressionformat-color-800-100-2.0-cairo-reference.png b/tests/visual_tests/images/text-expressionformat-color-800-100-2.0-cairo-reference.png deleted file mode 100644 index 58e388832..000000000 Binary files a/tests/visual_tests/images/text-expressionformat-color-800-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-font-features-1100-1100-1.0-agg-reference.png b/tests/visual_tests/images/text-font-features-1100-1100-1.0-agg-reference.png deleted file mode 100644 index 8f7383e66..000000000 Binary files a/tests/visual_tests/images/text-font-features-1100-1100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-font-features-1100-1100-1.0-cairo-reference.png b/tests/visual_tests/images/text-font-features-1100-1100-1.0-cairo-reference.png deleted file mode 100644 index d2126c324..000000000 Binary files a/tests/visual_tests/images/text-font-features-1100-1100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-font-features-1100-1100-2.0-agg-reference.png b/tests/visual_tests/images/text-font-features-1100-1100-2.0-agg-reference.png deleted file mode 100644 index dd957784b..000000000 Binary files a/tests/visual_tests/images/text-font-features-1100-1100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-font-features-1100-1100-2.0-cairo-reference.png b/tests/visual_tests/images/text-font-features-1100-1100-2.0-cairo-reference.png deleted file mode 100644 index c061af081..000000000 Binary files a/tests/visual_tests/images/text-font-features-1100-1100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halign-800-800-1.0-agg-reference.png b/tests/visual_tests/images/text-halign-800-800-1.0-agg-reference.png deleted file mode 100644 index 5abeaa344..000000000 Binary files a/tests/visual_tests/images/text-halign-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halign-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/text-halign-800-800-1.0-cairo-reference.png deleted file mode 100644 index 6d4831bfa..000000000 Binary files a/tests/visual_tests/images/text-halign-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halign-800-800-2.0-agg-reference.png b/tests/visual_tests/images/text-halign-800-800-2.0-agg-reference.png deleted file mode 100644 index 552c6f014..000000000 Binary files a/tests/visual_tests/images/text-halign-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halign-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/text-halign-800-800-2.0-cairo-reference.png deleted file mode 100644 index 09e2dff7b..000000000 Binary files a/tests/visual_tests/images/text-halign-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halign-adjust-800-800-1.0-agg-reference.png b/tests/visual_tests/images/text-halign-adjust-800-800-1.0-agg-reference.png deleted file mode 100644 index f029f88b8..000000000 Binary files a/tests/visual_tests/images/text-halign-adjust-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halign-adjust-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/text-halign-adjust-800-800-1.0-cairo-reference.png deleted file mode 100644 index 57ad2d43a..000000000 Binary files a/tests/visual_tests/images/text-halign-adjust-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halign-adjust-800-800-2.0-agg-reference.png b/tests/visual_tests/images/text-halign-adjust-800-800-2.0-agg-reference.png deleted file mode 100644 index e66754790..000000000 Binary files a/tests/visual_tests/images/text-halign-adjust-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halign-adjust-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/text-halign-adjust-800-800-2.0-cairo-reference.png deleted file mode 100644 index f3275dba1..000000000 Binary files a/tests/visual_tests/images/text-halign-adjust-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halign-adjust-multiline-800-800-1.0-agg-reference.png b/tests/visual_tests/images/text-halign-adjust-multiline-800-800-1.0-agg-reference.png deleted file mode 100644 index 2a8e1d4a9..000000000 Binary files a/tests/visual_tests/images/text-halign-adjust-multiline-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halign-adjust-multiline-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/text-halign-adjust-multiline-800-800-1.0-cairo-reference.png deleted file mode 100644 index 0d6121590..000000000 Binary files a/tests/visual_tests/images/text-halign-adjust-multiline-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halign-adjust-multiline-800-800-2.0-agg-reference.png b/tests/visual_tests/images/text-halign-adjust-multiline-800-800-2.0-agg-reference.png deleted file mode 100644 index 6a1d578fb..000000000 Binary files a/tests/visual_tests/images/text-halign-adjust-multiline-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halign-adjust-multiline-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/text-halign-adjust-multiline-800-800-2.0-cairo-reference.png deleted file mode 100644 index 27bf6a6bb..000000000 Binary files a/tests/visual_tests/images/text-halign-adjust-multiline-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halo-opacity-512-512-1.0-agg-reference.png b/tests/visual_tests/images/text-halo-opacity-512-512-1.0-agg-reference.png deleted file mode 100644 index b22ea4934..000000000 Binary files a/tests/visual_tests/images/text-halo-opacity-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halo-opacity-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/text-halo-opacity-512-512-1.0-cairo-reference.png deleted file mode 100644 index ada46a584..000000000 Binary files a/tests/visual_tests/images/text-halo-opacity-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halo-opacity-512-512-2.0-agg-reference.png b/tests/visual_tests/images/text-halo-opacity-512-512-2.0-agg-reference.png deleted file mode 100644 index be3b53dec..000000000 Binary files a/tests/visual_tests/images/text-halo-opacity-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halo-opacity-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/text-halo-opacity-512-512-2.0-cairo-reference.png deleted file mode 100644 index f958a83cc..000000000 Binary files a/tests/visual_tests/images/text-halo-opacity-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halo-rasterizer-600-400-1.0-agg-reference.png b/tests/visual_tests/images/text-halo-rasterizer-600-400-1.0-agg-reference.png deleted file mode 100644 index bc7ae75a0..000000000 Binary files a/tests/visual_tests/images/text-halo-rasterizer-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halo-rasterizer-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/text-halo-rasterizer-600-400-1.0-cairo-reference.png deleted file mode 100644 index e0456154d..000000000 Binary files a/tests/visual_tests/images/text-halo-rasterizer-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halo-rasterizer-600-400-2.0-agg-reference.png b/tests/visual_tests/images/text-halo-rasterizer-600-400-2.0-agg-reference.png deleted file mode 100644 index 16fa5b531..000000000 Binary files a/tests/visual_tests/images/text-halo-rasterizer-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halo-rasterizer-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/text-halo-rasterizer-600-400-2.0-cairo-reference.png deleted file mode 100644 index 9858aaaa6..000000000 Binary files a/tests/visual_tests/images/text-halo-rasterizer-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halo-transform-600-400-1.0-agg-reference.png b/tests/visual_tests/images/text-halo-transform-600-400-1.0-agg-reference.png deleted file mode 100644 index fb0852f6e..000000000 Binary files a/tests/visual_tests/images/text-halo-transform-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halo-transform-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/text-halo-transform-600-400-1.0-cairo-reference.png deleted file mode 100644 index e0456154d..000000000 Binary files a/tests/visual_tests/images/text-halo-transform-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halo-transform-600-400-2.0-agg-reference.png b/tests/visual_tests/images/text-halo-transform-600-400-2.0-agg-reference.png deleted file mode 100644 index c2dc225d2..000000000 Binary files a/tests/visual_tests/images/text-halo-transform-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-halo-transform-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/text-halo-transform-600-400-2.0-cairo-reference.png deleted file mode 100644 index 9858aaaa6..000000000 Binary files a/tests/visual_tests/images/text-halo-transform-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-iconic-font-1000-1000-1.0-agg-reference.png b/tests/visual_tests/images/text-iconic-font-1000-1000-1.0-agg-reference.png deleted file mode 100644 index 02ad3f1da..000000000 Binary files a/tests/visual_tests/images/text-iconic-font-1000-1000-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-iconic-font-1000-1000-1.0-cairo-reference.png b/tests/visual_tests/images/text-iconic-font-1000-1000-1.0-cairo-reference.png deleted file mode 100644 index d6d8308ce..000000000 Binary files a/tests/visual_tests/images/text-iconic-font-1000-1000-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-iconic-font-1000-1000-2.0-agg-reference.png b/tests/visual_tests/images/text-iconic-font-1000-1000-2.0-agg-reference.png deleted file mode 100644 index a846e12f9..000000000 Binary files a/tests/visual_tests/images/text-iconic-font-1000-1000-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-iconic-font-1000-1000-2.0-cairo-reference.png b/tests/visual_tests/images/text-iconic-font-1000-1000-2.0-cairo-reference.png deleted file mode 100644 index 32e2bb80c..000000000 Binary files a/tests/visual_tests/images/text-iconic-font-1000-1000-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-line-wrap-512-512-1.0-agg-reference.png b/tests/visual_tests/images/text-line-wrap-512-512-1.0-agg-reference.png deleted file mode 100644 index 4b79aeaa0..000000000 Binary files a/tests/visual_tests/images/text-line-wrap-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-line-wrap-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/text-line-wrap-512-512-1.0-cairo-reference.png deleted file mode 100644 index 17b7ff39d..000000000 Binary files a/tests/visual_tests/images/text-line-wrap-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-line-wrap-512-512-2.0-agg-reference.png b/tests/visual_tests/images/text-line-wrap-512-512-2.0-agg-reference.png deleted file mode 100644 index f8147d93e..000000000 Binary files a/tests/visual_tests/images/text-line-wrap-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-line-wrap-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/text-line-wrap-512-512-2.0-cairo-reference.png deleted file mode 100644 index fd03f9a97..000000000 Binary files a/tests/visual_tests/images/text-line-wrap-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-malayalam-800-100-1.0-agg-reference.png b/tests/visual_tests/images/text-malayalam-800-100-1.0-agg-reference.png deleted file mode 100644 index 95e9ad9b8..000000000 Binary files a/tests/visual_tests/images/text-malayalam-800-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-malayalam-800-100-1.0-cairo-reference.png b/tests/visual_tests/images/text-malayalam-800-100-1.0-cairo-reference.png deleted file mode 100644 index d5054a059..000000000 Binary files a/tests/visual_tests/images/text-malayalam-800-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-malayalam-800-100-2.0-agg-reference.png b/tests/visual_tests/images/text-malayalam-800-100-2.0-agg-reference.png deleted file mode 100644 index 32101e2c2..000000000 Binary files a/tests/visual_tests/images/text-malayalam-800-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-malayalam-800-100-2.0-cairo-reference.png b/tests/visual_tests/images/text-malayalam-800-100-2.0-cairo-reference.png deleted file mode 100644 index d52c49e6b..000000000 Binary files a/tests/visual_tests/images/text-malayalam-800-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-multi-layout-1-512-512-1.0-agg-reference.png b/tests/visual_tests/images/text-multi-layout-1-512-512-1.0-agg-reference.png deleted file mode 100644 index 1919fe4e5..000000000 Binary files a/tests/visual_tests/images/text-multi-layout-1-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-multi-layout-1-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/text-multi-layout-1-512-512-1.0-cairo-reference.png deleted file mode 100644 index 890b8ec5d..000000000 Binary files a/tests/visual_tests/images/text-multi-layout-1-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-multi-layout-1-512-512-2.0-agg-reference.png b/tests/visual_tests/images/text-multi-layout-1-512-512-2.0-agg-reference.png deleted file mode 100644 index d11b8e111..000000000 Binary files a/tests/visual_tests/images/text-multi-layout-1-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-multi-layout-1-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/text-multi-layout-1-512-512-2.0-cairo-reference.png deleted file mode 100644 index 2a2dae068..000000000 Binary files a/tests/visual_tests/images/text-multi-layout-1-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-multi-layout-2-512-512-1.0-agg-reference.png b/tests/visual_tests/images/text-multi-layout-2-512-512-1.0-agg-reference.png deleted file mode 100644 index b6fe6e75c..000000000 Binary files a/tests/visual_tests/images/text-multi-layout-2-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-multi-layout-2-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/text-multi-layout-2-512-512-1.0-cairo-reference.png deleted file mode 100644 index f9c31169a..000000000 Binary files a/tests/visual_tests/images/text-multi-layout-2-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-multi-layout-2-512-512-2.0-agg-reference.png b/tests/visual_tests/images/text-multi-layout-2-512-512-2.0-agg-reference.png deleted file mode 100644 index 7c1ad5aae..000000000 Binary files a/tests/visual_tests/images/text-multi-layout-2-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-multi-layout-2-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/text-multi-layout-2-512-512-2.0-cairo-reference.png deleted file mode 100644 index 2d2c2a66a..000000000 Binary files a/tests/visual_tests/images/text-multi-layout-2-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-overlap-512-512-1.0-agg-reference.png b/tests/visual_tests/images/text-overlap-512-512-1.0-agg-reference.png deleted file mode 100644 index 0e08b3912..000000000 Binary files a/tests/visual_tests/images/text-overlap-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-overlap-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/text-overlap-512-512-1.0-cairo-reference.png deleted file mode 100644 index a4859cefe..000000000 Binary files a/tests/visual_tests/images/text-overlap-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-overlap-512-512-2.0-agg-reference.png b/tests/visual_tests/images/text-overlap-512-512-2.0-agg-reference.png deleted file mode 100644 index 9cd91860d..000000000 Binary files a/tests/visual_tests/images/text-overlap-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-overlap-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/text-overlap-512-512-2.0-cairo-reference.png deleted file mode 100644 index 941944cfc..000000000 Binary files a/tests/visual_tests/images/text-overlap-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-spacing-512-512-1.0-agg-reference.png b/tests/visual_tests/images/text-spacing-512-512-1.0-agg-reference.png deleted file mode 100644 index fe886ed1e..000000000 Binary files a/tests/visual_tests/images/text-spacing-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-spacing-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/text-spacing-512-512-1.0-cairo-reference.png deleted file mode 100644 index af682e7bf..000000000 Binary files a/tests/visual_tests/images/text-spacing-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-spacing-512-512-2.0-agg-reference.png b/tests/visual_tests/images/text-spacing-512-512-2.0-agg-reference.png deleted file mode 100644 index 1e51dbff3..000000000 Binary files a/tests/visual_tests/images/text-spacing-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-spacing-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/text-spacing-512-512-2.0-cairo-reference.png deleted file mode 100644 index deb316980..000000000 Binary files a/tests/visual_tests/images/text-spacing-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-ttc-font-600-400-1.0-agg-reference.png b/tests/visual_tests/images/text-ttc-font-600-400-1.0-agg-reference.png deleted file mode 100644 index a36e04f58..000000000 Binary files a/tests/visual_tests/images/text-ttc-font-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-ttc-font-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/text-ttc-font-600-400-1.0-cairo-reference.png deleted file mode 100644 index c24309c2c..000000000 Binary files a/tests/visual_tests/images/text-ttc-font-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-ttc-font-600-400-2.0-agg-reference.png b/tests/visual_tests/images/text-ttc-font-600-400-2.0-agg-reference.png deleted file mode 100644 index 85f9cb441..000000000 Binary files a/tests/visual_tests/images/text-ttc-font-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-ttc-font-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/text-ttc-font-600-400-2.0-cairo-reference.png deleted file mode 100644 index c7d0f593e..000000000 Binary files a/tests/visual_tests/images/text-ttc-font-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-typographic-512-512-1.0-agg-reference.png b/tests/visual_tests/images/text-typographic-512-512-1.0-agg-reference.png deleted file mode 100644 index 491c6eb9e..000000000 Binary files a/tests/visual_tests/images/text-typographic-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-typographic-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/text-typographic-512-512-1.0-cairo-reference.png deleted file mode 100644 index f4de0c6c4..000000000 Binary files a/tests/visual_tests/images/text-typographic-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-typographic-512-512-2.0-agg-reference.png b/tests/visual_tests/images/text-typographic-512-512-2.0-agg-reference.png deleted file mode 100644 index aca6fd231..000000000 Binary files a/tests/visual_tests/images/text-typographic-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-typographic-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/text-typographic-512-512-2.0-cairo-reference.png deleted file mode 100644 index 5275784f2..000000000 Binary files a/tests/visual_tests/images/text-typographic-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-upright-800-800-1.0-agg-reference.png b/tests/visual_tests/images/text-upright-800-800-1.0-agg-reference.png deleted file mode 100644 index 18fcfed9b..000000000 Binary files a/tests/visual_tests/images/text-upright-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-upright-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/text-upright-800-800-1.0-cairo-reference.png deleted file mode 100644 index 50ef611c2..000000000 Binary files a/tests/visual_tests/images/text-upright-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-upright-800-800-2.0-agg-reference.png b/tests/visual_tests/images/text-upright-800-800-2.0-agg-reference.png deleted file mode 100644 index 94443eb4b..000000000 Binary files a/tests/visual_tests/images/text-upright-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-upright-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/text-upright-800-800-2.0-cairo-reference.png deleted file mode 100644 index 7fb4e465d..000000000 Binary files a/tests/visual_tests/images/text-upright-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-vertical-alignment-800-800-1.0-agg-reference.png b/tests/visual_tests/images/text-vertical-alignment-800-800-1.0-agg-reference.png deleted file mode 100644 index bc2d024ae..000000000 Binary files a/tests/visual_tests/images/text-vertical-alignment-800-800-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-vertical-alignment-800-800-1.0-cairo-reference.png b/tests/visual_tests/images/text-vertical-alignment-800-800-1.0-cairo-reference.png deleted file mode 100644 index be7bbbce5..000000000 Binary files a/tests/visual_tests/images/text-vertical-alignment-800-800-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-vertical-alignment-800-800-2.0-agg-reference.png b/tests/visual_tests/images/text-vertical-alignment-800-800-2.0-agg-reference.png deleted file mode 100644 index e8756f84f..000000000 Binary files a/tests/visual_tests/images/text-vertical-alignment-800-800-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-vertical-alignment-800-800-2.0-cairo-reference.png b/tests/visual_tests/images/text-vertical-alignment-800-800-2.0-cairo-reference.png deleted file mode 100644 index 8722ec33b..000000000 Binary files a/tests/visual_tests/images/text-vertical-alignment-800-800-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-wrap-512-512-1.0-agg-reference.png b/tests/visual_tests/images/text-wrap-512-512-1.0-agg-reference.png deleted file mode 100644 index 5921aaa1d..000000000 Binary files a/tests/visual_tests/images/text-wrap-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-wrap-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/text-wrap-512-512-1.0-cairo-reference.png deleted file mode 100644 index cf2f69429..000000000 Binary files a/tests/visual_tests/images/text-wrap-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-wrap-512-512-2.0-agg-reference.png b/tests/visual_tests/images/text-wrap-512-512-2.0-agg-reference.png deleted file mode 100644 index 8bb802703..000000000 Binary files a/tests/visual_tests/images/text-wrap-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/text-wrap-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/text-wrap-512-512-2.0-cairo-reference.png deleted file mode 100644 index d20074885..000000000 Binary files a/tests/visual_tests/images/text-wrap-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-alpha-broken-assoc-alpha-gdal-600-400-1.0-agg-reference.png b/tests/visual_tests/images/tiff-alpha-broken-assoc-alpha-gdal-600-400-1.0-agg-reference.png deleted file mode 100644 index df3725329..000000000 Binary files a/tests/visual_tests/images/tiff-alpha-broken-assoc-alpha-gdal-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-alpha-broken-assoc-alpha-gdal-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-alpha-broken-assoc-alpha-gdal-600-400-1.0-cairo-reference.png deleted file mode 100644 index df3725329..000000000 Binary files a/tests/visual_tests/images/tiff-alpha-broken-assoc-alpha-gdal-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-alpha-broken-assoc-alpha-gdal-600-400-2.0-agg-reference.png b/tests/visual_tests/images/tiff-alpha-broken-assoc-alpha-gdal-600-400-2.0-agg-reference.png deleted file mode 100644 index df3725329..000000000 Binary files a/tests/visual_tests/images/tiff-alpha-broken-assoc-alpha-gdal-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-alpha-broken-assoc-alpha-gdal-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-alpha-broken-assoc-alpha-gdal-600-400-2.0-cairo-reference.png deleted file mode 100644 index df3725329..000000000 Binary files a/tests/visual_tests/images/tiff-alpha-broken-assoc-alpha-gdal-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-alpha-gdal-600-400-1.0-agg-reference.png b/tests/visual_tests/images/tiff-alpha-gdal-600-400-1.0-agg-reference.png deleted file mode 100644 index eb2a80da5..000000000 Binary files a/tests/visual_tests/images/tiff-alpha-gdal-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-alpha-gdal-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-alpha-gdal-600-400-1.0-cairo-reference.png deleted file mode 100644 index eb2a80da5..000000000 Binary files a/tests/visual_tests/images/tiff-alpha-gdal-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-alpha-gdal-600-400-2.0-agg-reference.png b/tests/visual_tests/images/tiff-alpha-gdal-600-400-2.0-agg-reference.png deleted file mode 100644 index eb2a80da5..000000000 Binary files a/tests/visual_tests/images/tiff-alpha-gdal-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-alpha-gdal-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-alpha-gdal-600-400-2.0-cairo-reference.png deleted file mode 100644 index eb2a80da5..000000000 Binary files a/tests/visual_tests/images/tiff-alpha-gdal-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-alpha-gradient-gdal-600-400-1.0-agg-reference.png b/tests/visual_tests/images/tiff-alpha-gradient-gdal-600-400-1.0-agg-reference.png deleted file mode 100644 index 2359d402c..000000000 Binary files a/tests/visual_tests/images/tiff-alpha-gradient-gdal-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-alpha-gradient-gdal-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-alpha-gradient-gdal-600-400-1.0-cairo-reference.png deleted file mode 100644 index 2359d402c..000000000 Binary files a/tests/visual_tests/images/tiff-alpha-gradient-gdal-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-alpha-gradient-gdal-600-400-2.0-agg-reference.png b/tests/visual_tests/images/tiff-alpha-gradient-gdal-600-400-2.0-agg-reference.png deleted file mode 100644 index 2359d402c..000000000 Binary files a/tests/visual_tests/images/tiff-alpha-gradient-gdal-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-alpha-gradient-gdal-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-alpha-gradient-gdal-600-400-2.0-cairo-reference.png deleted file mode 100644 index 2359d402c..000000000 Binary files a/tests/visual_tests/images/tiff-alpha-gradient-gdal-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal1-255-257-1.0-agg-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal1-255-257-1.0-agg-reference.png deleted file mode 100644 index a41d358f2..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal1-255-257-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal1-255-257-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal1-255-257-1.0-cairo-reference.png deleted file mode 100644 index a41d358f2..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal1-255-257-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal1-255-257-2.0-agg-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal1-255-257-2.0-agg-reference.png deleted file mode 100644 index a41d358f2..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal1-255-257-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal1-255-257-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal1-255-257-2.0-cairo-reference.png deleted file mode 100644 index a41d358f2..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal1-255-257-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal1-256-256-1.0-agg-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal1-256-256-1.0-agg-reference.png deleted file mode 100644 index ca88aa1c6..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal1-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal1-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal1-256-256-1.0-cairo-reference.png deleted file mode 100644 index ca88aa1c6..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal1-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal1-256-256-2.0-agg-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal1-256-256-2.0-agg-reference.png deleted file mode 100644 index ca88aa1c6..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal1-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal1-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal1-256-256-2.0-cairo-reference.png deleted file mode 100644 index ca88aa1c6..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal1-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal2-255-257-1.0-agg-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal2-255-257-1.0-agg-reference.png deleted file mode 100644 index aaf37ce1b..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal2-255-257-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal2-255-257-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal2-255-257-1.0-cairo-reference.png deleted file mode 100644 index aaf37ce1b..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal2-255-257-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal2-255-257-2.0-agg-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal2-255-257-2.0-agg-reference.png deleted file mode 100644 index aaf37ce1b..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal2-255-257-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal2-255-257-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal2-255-257-2.0-cairo-reference.png deleted file mode 100644 index aaf37ce1b..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal2-255-257-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal2-256-256-1.0-agg-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal2-256-256-1.0-agg-reference.png deleted file mode 100644 index 22fe4b8ee..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal2-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal2-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal2-256-256-1.0-cairo-reference.png deleted file mode 100644 index 22fe4b8ee..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal2-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal2-256-256-2.0-agg-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal2-256-256-2.0-agg-reference.png deleted file mode 100644 index 22fe4b8ee..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal2-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-edge-alignment-gdal2-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-edge-alignment-gdal2-256-256-2.0-cairo-reference.png deleted file mode 100644 index 22fe4b8ee..000000000 Binary files a/tests/visual_tests/images/tiff-edge-alignment-gdal2-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-gdal-600-400-1.0-agg-reference.png b/tests/visual_tests/images/tiff-nodata-edge-gdal-600-400-1.0-agg-reference.png deleted file mode 100644 index 1f25c9d26..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-gdal-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-gdal-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-nodata-edge-gdal-600-400-1.0-cairo-reference.png deleted file mode 100644 index 1f25c9d26..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-gdal-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-gdal-600-400-2.0-agg-reference.png b/tests/visual_tests/images/tiff-nodata-edge-gdal-600-400-2.0-agg-reference.png deleted file mode 100644 index 1f25c9d26..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-gdal-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-gdal-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-nodata-edge-gdal-600-400-2.0-cairo-reference.png deleted file mode 100644 index 1f25c9d26..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-gdal-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-gdal-969-793-1.0-agg-reference.png b/tests/visual_tests/images/tiff-nodata-edge-gdal-969-793-1.0-agg-reference.png deleted file mode 100644 index 16a62306c..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-gdal-969-793-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-gdal-969-793-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-nodata-edge-gdal-969-793-1.0-cairo-reference.png deleted file mode 100644 index 16a62306c..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-gdal-969-793-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-gdal-969-793-2.0-agg-reference.png b/tests/visual_tests/images/tiff-nodata-edge-gdal-969-793-2.0-agg-reference.png deleted file mode 100644 index 16a62306c..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-gdal-969-793-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-gdal-969-793-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-nodata-edge-gdal-969-793-2.0-cairo-reference.png deleted file mode 100644 index 16a62306c..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-gdal-969-793-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-rgba-500-100-1.0-agg-reference.png b/tests/visual_tests/images/tiff-nodata-edge-rgba-500-100-1.0-agg-reference.png deleted file mode 100644 index c9c2fbeab..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-rgba-500-100-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-rgba-500-100-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-nodata-edge-rgba-500-100-1.0-cairo-reference.png deleted file mode 100644 index eec8d04e1..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-rgba-500-100-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-rgba-500-100-2.0-agg-reference.png b/tests/visual_tests/images/tiff-nodata-edge-rgba-500-100-2.0-agg-reference.png deleted file mode 100644 index c9c2fbeab..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-rgba-500-100-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-rgba-500-100-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-nodata-edge-rgba-500-100-2.0-cairo-reference.png deleted file mode 100644 index eec8d04e1..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-rgba-500-100-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-rgba-512-512-1.0-agg-reference.png b/tests/visual_tests/images/tiff-nodata-edge-rgba-512-512-1.0-agg-reference.png deleted file mode 100644 index 811d36044..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-rgba-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-rgba-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-nodata-edge-rgba-512-512-1.0-cairo-reference.png deleted file mode 100644 index 5eb2c6cf2..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-rgba-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-rgba-512-512-2.0-agg-reference.png b/tests/visual_tests/images/tiff-nodata-edge-rgba-512-512-2.0-agg-reference.png deleted file mode 100644 index 811d36044..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-rgba-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-edge-rgba-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-nodata-edge-rgba-512-512-2.0-cairo-reference.png deleted file mode 100644 index 5eb2c6cf2..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-edge-rgba-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-rgb-512-512-1.0-agg-reference.png b/tests/visual_tests/images/tiff-nodata-rgb-512-512-1.0-agg-reference.png deleted file mode 100644 index d30d5a609..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-rgb-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-rgb-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-nodata-rgb-512-512-1.0-cairo-reference.png deleted file mode 100644 index 459783826..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-rgb-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-rgb-512-512-2.0-agg-reference.png b/tests/visual_tests/images/tiff-nodata-rgb-512-512-2.0-agg-reference.png deleted file mode 100644 index d30d5a609..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-rgb-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-rgb-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-nodata-rgb-512-512-2.0-cairo-reference.png deleted file mode 100644 index 459783826..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-rgb-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-rgba-512-512-1.0-agg-reference.png b/tests/visual_tests/images/tiff-nodata-rgba-512-512-1.0-agg-reference.png deleted file mode 100644 index 2a650f252..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-rgba-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-rgba-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-nodata-rgba-512-512-1.0-cairo-reference.png deleted file mode 100644 index f46fbc42e..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-rgba-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-rgba-512-512-2.0-agg-reference.png b/tests/visual_tests/images/tiff-nodata-rgba-512-512-2.0-agg-reference.png deleted file mode 100644 index 2a650f252..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-rgba-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-rgba-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-nodata-rgba-512-512-2.0-cairo-reference.png deleted file mode 100644 index f46fbc42e..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-rgba-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-tolerance-512-512-1.0-agg-reference.png b/tests/visual_tests/images/tiff-nodata-tolerance-512-512-1.0-agg-reference.png deleted file mode 100644 index 2910d7b34..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-tolerance-512-512-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-tolerance-512-512-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-nodata-tolerance-512-512-1.0-cairo-reference.png deleted file mode 100644 index 2910d7b34..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-tolerance-512-512-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-tolerance-512-512-2.0-agg-reference.png b/tests/visual_tests/images/tiff-nodata-tolerance-512-512-2.0-agg-reference.png deleted file mode 100644 index 2910d7b34..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-tolerance-512-512-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-nodata-tolerance-512-512-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-nodata-tolerance-512-512-2.0-cairo-reference.png deleted file mode 100644 index 2910d7b34..000000000 Binary files a/tests/visual_tests/images/tiff-nodata-tolerance-512-512-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal-256-256-1.0-agg-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal-256-256-1.0-agg-reference.png deleted file mode 100644 index b2214b3b2..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal-256-256-1.0-cairo-reference.png deleted file mode 100644 index b2214b3b2..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal-256-256-2.0-agg-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal-256-256-2.0-agg-reference.png deleted file mode 100644 index b2214b3b2..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal-256-256-2.0-cairo-reference.png deleted file mode 100644 index b2214b3b2..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal-969-793-1.0-agg-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal-969-793-1.0-agg-reference.png deleted file mode 100644 index b23e716ab..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal-969-793-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal-969-793-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal-969-793-1.0-cairo-reference.png deleted file mode 100644 index b23e716ab..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal-969-793-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal-969-793-2.0-agg-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal-969-793-2.0-agg-reference.png deleted file mode 100644 index b23e716ab..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal-969-793-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal-969-793-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal-969-793-2.0-cairo-reference.png deleted file mode 100644 index b23e716ab..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal-969-793-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal2-600-400-1.0-agg-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal2-600-400-1.0-agg-reference.png deleted file mode 100644 index faebe7ecd..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal2-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal2-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal2-600-400-1.0-cairo-reference.png deleted file mode 100644 index faebe7ecd..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal2-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal2-600-400-2.0-agg-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal2-600-400-2.0-agg-reference.png deleted file mode 100644 index faebe7ecd..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal2-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal2-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal2-600-400-2.0-cairo-reference.png deleted file mode 100644 index faebe7ecd..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal2-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal2-969-793-1.0-agg-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal2-969-793-1.0-agg-reference.png deleted file mode 100644 index b23e716ab..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal2-969-793-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal2-969-793-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal2-969-793-1.0-cairo-reference.png deleted file mode 100644 index b23e716ab..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal2-969-793-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal2-969-793-2.0-agg-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal2-969-793-2.0-agg-reference.png deleted file mode 100644 index b23e716ab..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal2-969-793-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-gdal2-969-793-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-opaque-edge-gdal2-969-793-2.0-cairo-reference.png deleted file mode 100644 index b23e716ab..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-gdal2-969-793-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-1.0-agg-reference.png b/tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-1.0-agg-reference.png deleted file mode 100644 index 54cc50b79..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-1.0-cairo-reference.png deleted file mode 100644 index 8aadeb581..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-2.0-agg-reference.png b/tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-2.0-agg-reference.png deleted file mode 100644 index 54cc50b79..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-2.0-cairo-reference.png deleted file mode 100644 index 8aadeb581..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-raster2-969-793-1.0-agg-reference.png b/tests/visual_tests/images/tiff-opaque-edge-raster2-969-793-1.0-agg-reference.png deleted file mode 100644 index 828cdce7c..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-raster2-969-793-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-raster2-969-793-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-opaque-edge-raster2-969-793-1.0-cairo-reference.png deleted file mode 100644 index 828cdce7c..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-raster2-969-793-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-raster2-969-793-2.0-agg-reference.png b/tests/visual_tests/images/tiff-opaque-edge-raster2-969-793-2.0-agg-reference.png deleted file mode 100644 index 828cdce7c..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-raster2-969-793-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-opaque-edge-raster2-969-793-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-opaque-edge-raster2-969-793-2.0-cairo-reference.png deleted file mode 100644 index 828cdce7c..000000000 Binary files a/tests/visual_tests/images/tiff-opaque-edge-raster2-969-793-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-reprojection-1-250-250-1.0-agg-reference.png b/tests/visual_tests/images/tiff-reprojection-1-250-250-1.0-agg-reference.png deleted file mode 100644 index 467284ea4..000000000 Binary files a/tests/visual_tests/images/tiff-reprojection-1-250-250-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-reprojection-1-250-250-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-reprojection-1-250-250-1.0-cairo-reference.png deleted file mode 100644 index ea9c53e9c..000000000 Binary files a/tests/visual_tests/images/tiff-reprojection-1-250-250-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-reprojection-1-250-250-2.0-agg-reference.png b/tests/visual_tests/images/tiff-reprojection-1-250-250-2.0-agg-reference.png deleted file mode 100644 index 467284ea4..000000000 Binary files a/tests/visual_tests/images/tiff-reprojection-1-250-250-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-reprojection-1-250-250-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-reprojection-1-250-250-2.0-cairo-reference.png deleted file mode 100644 index ea9c53e9c..000000000 Binary files a/tests/visual_tests/images/tiff-reprojection-1-250-250-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-reprojection-2-250-250-1.0-agg-reference.png b/tests/visual_tests/images/tiff-reprojection-2-250-250-1.0-agg-reference.png deleted file mode 100644 index 26438dcaa..000000000 Binary files a/tests/visual_tests/images/tiff-reprojection-2-250-250-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-reprojection-2-250-250-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-reprojection-2-250-250-1.0-cairo-reference.png deleted file mode 100644 index 26438dcaa..000000000 Binary files a/tests/visual_tests/images/tiff-reprojection-2-250-250-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-reprojection-2-250-250-2.0-agg-reference.png b/tests/visual_tests/images/tiff-reprojection-2-250-250-2.0-agg-reference.png deleted file mode 100644 index 26438dcaa..000000000 Binary files a/tests/visual_tests/images/tiff-reprojection-2-250-250-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-reprojection-2-250-250-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-reprojection-2-250-250-2.0-cairo-reference.png deleted file mode 100644 index 26438dcaa..000000000 Binary files a/tests/visual_tests/images/tiff-reprojection-2-250-250-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-resampling-600-400-1.0-agg-reference.png b/tests/visual_tests/images/tiff-resampling-600-400-1.0-agg-reference.png deleted file mode 100644 index cb6a7b939..000000000 Binary files a/tests/visual_tests/images/tiff-resampling-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-resampling-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/tiff-resampling-600-400-1.0-cairo-reference.png deleted file mode 100644 index 44906bee9..000000000 Binary files a/tests/visual_tests/images/tiff-resampling-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-resampling-600-400-2.0-agg-reference.png b/tests/visual_tests/images/tiff-resampling-600-400-2.0-agg-reference.png deleted file mode 100644 index cb6a7b939..000000000 Binary files a/tests/visual_tests/images/tiff-resampling-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff-resampling-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/tiff-resampling-600-400-2.0-cairo-reference.png deleted file mode 100644 index 44906bee9..000000000 Binary files a/tests/visual_tests/images/tiff-resampling-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff_colortable-256-256-1.0-agg-reference.png b/tests/visual_tests/images/tiff_colortable-256-256-1.0-agg-reference.png deleted file mode 100644 index b9ed3400d..000000000 Binary files a/tests/visual_tests/images/tiff_colortable-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff_colortable-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/tiff_colortable-256-256-1.0-cairo-reference.png deleted file mode 100644 index b9ed3400d..000000000 Binary files a/tests/visual_tests/images/tiff_colortable-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff_colortable-256-256-2.0-agg-reference.png b/tests/visual_tests/images/tiff_colortable-256-256-2.0-agg-reference.png deleted file mode 100644 index b9ed3400d..000000000 Binary files a/tests/visual_tests/images/tiff_colortable-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff_colortable-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/tiff_colortable-256-256-2.0-cairo-reference.png deleted file mode 100644 index b9ed3400d..000000000 Binary files a/tests/visual_tests/images/tiff_colortable-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff_colortable_custom_nodata-256-256-1.0-agg-reference.png b/tests/visual_tests/images/tiff_colortable_custom_nodata-256-256-1.0-agg-reference.png deleted file mode 100644 index 4d037012e..000000000 Binary files a/tests/visual_tests/images/tiff_colortable_custom_nodata-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff_colortable_custom_nodata-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/tiff_colortable_custom_nodata-256-256-1.0-cairo-reference.png deleted file mode 100644 index 4d037012e..000000000 Binary files a/tests/visual_tests/images/tiff_colortable_custom_nodata-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff_colortable_custom_nodata-256-256-2.0-agg-reference.png b/tests/visual_tests/images/tiff_colortable_custom_nodata-256-256-2.0-agg-reference.png deleted file mode 100644 index 4d037012e..000000000 Binary files a/tests/visual_tests/images/tiff_colortable_custom_nodata-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/tiff_colortable_custom_nodata-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/tiff_colortable_custom_nodata-256-256-2.0-cairo-reference.png deleted file mode 100644 index 4d037012e..000000000 Binary files a/tests/visual_tests/images/tiff_colortable_custom_nodata-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/vrt_colortable-256-256-1.0-agg-reference.png b/tests/visual_tests/images/vrt_colortable-256-256-1.0-agg-reference.png deleted file mode 100644 index 3fa463b51..000000000 Binary files a/tests/visual_tests/images/vrt_colortable-256-256-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/vrt_colortable-256-256-1.0-cairo-reference.png b/tests/visual_tests/images/vrt_colortable-256-256-1.0-cairo-reference.png deleted file mode 100644 index 3fa463b51..000000000 Binary files a/tests/visual_tests/images/vrt_colortable-256-256-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/vrt_colortable-256-256-2.0-agg-reference.png b/tests/visual_tests/images/vrt_colortable-256-256-2.0-agg-reference.png deleted file mode 100644 index 3fa463b51..000000000 Binary files a/tests/visual_tests/images/vrt_colortable-256-256-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/vrt_colortable-256-256-2.0-cairo-reference.png b/tests/visual_tests/images/vrt_colortable-256-256-2.0-cairo-reference.png deleted file mode 100644 index 3fa463b51..000000000 Binary files a/tests/visual_tests/images/vrt_colortable-256-256-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/whole-centroid-600-400-1.0-agg-reference.png b/tests/visual_tests/images/whole-centroid-600-400-1.0-agg-reference.png deleted file mode 100644 index dba67f61d..000000000 Binary files a/tests/visual_tests/images/whole-centroid-600-400-1.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/whole-centroid-600-400-1.0-cairo-reference.png b/tests/visual_tests/images/whole-centroid-600-400-1.0-cairo-reference.png deleted file mode 100644 index 661a5f39d..000000000 Binary files a/tests/visual_tests/images/whole-centroid-600-400-1.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/whole-centroid-600-400-2.0-agg-reference.png b/tests/visual_tests/images/whole-centroid-600-400-2.0-agg-reference.png deleted file mode 100644 index c21bae2c9..000000000 Binary files a/tests/visual_tests/images/whole-centroid-600-400-2.0-agg-reference.png and /dev/null differ diff --git a/tests/visual_tests/images/whole-centroid-600-400-2.0-cairo-reference.png b/tests/visual_tests/images/whole-centroid-600-400-2.0-cairo-reference.png deleted file mode 100644 index 9510d676a..000000000 Binary files a/tests/visual_tests/images/whole-centroid-600-400-2.0-cairo-reference.png and /dev/null differ diff --git a/tests/visual_tests/styles/antimeridian-bbox.xml b/tests/visual_tests/styles/antimeridian-bbox.xml deleted file mode 100644 index fc50619b0..000000000 --- a/tests/visual_tests/styles/antimeridian-bbox.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - 1000,1000 - 200000.0,1087000.0,7007000.0,7173000.0 - - - - - mystyle - - -180,-47.2754736667,180,-34.0036943 - csv - -WKT,id, -"POINT (-176.662157383264883 -43.096109795145765)", -"POINT (-176.854671182715663 -42.903595931039007)", -"POINT (-177.252533072573982 -42.646910782400411)", -"POINT (-177.611892228793693 -42.415894147047872)", -"POINT (-178.099593973519461 -42.159208996768882)", -"POINT (-178.56162722744844 -41.735678488584703)", -"POINT (-178.72847257314487 -41.555998877995457)", -"POINT (-178.985157723427307 -41.222308171291367)", -"POINT (-179.152003072780786 -40.965623011559309)", -"POINT (-179.511362290676971 -40.490755465927869)", -"POINT (-179.80655022231997 -40.054390693250525)", -"POINT (179.923930360184784 -39.784871275110177)", -"POINT (179.75708500598833 -39.643694437033751)", -"POINT (179.346388748199729 -39.772037019858125)", -"POINT (179.025532296262895 -39.861876827647727)", -"POINT (178.563499004992451 -40.067224958370574)", -"POINT (178.281145326853419 -40.208401797959127)", -"POINT (178.02446016489057 -40.054390701181269)", -"POINT (177.677935196187519 -39.900379604399049)", -"POINT (177.485421324683159 -39.669362958813636)", -"POINT (177.331410227479353 -39.425512055075657)", -"POINT (177.215901904577578 -39.181661151299444)", -"POINT (177.023388033074042 -38.86080469896423)", -"POINT (176.76670287107433 -38.604119537111721)", -"POINT (176.535686225282944 -38.565616762876971)", -"POINT (176.317503837598906 -38.783799150566402)", -"POINT (176.176326998513417 -38.989147280139598)", -"POINT (175.932476094645182 -39.425512055467188)", -"POINT (175.701459448881849 -39.759202766009246)", -"POINT (175.52177983551357 -40.080059218446856)", -"POINT (175.149586350685809 -40.37524715469236)", -"POINT (174.880066930641647 -40.298241606113201)", -"POINT (174.700387317279876 -40.131396250851466)", -"POINT (174.469370671529759 -39.861876830812001)", -"POINT (174.418033639140958 -39.707865733646173)", -"POINT (174.212685509585867 -39.374175023120273)", -"POINT (174.148514219099951 -39.143158377371385)", -"POINT (174.05867441241972 -38.937810247816806)", -"POINT (173.930331831447972 -38.719627860165083)", -"POINT (173.699315185698993 -38.527113988707669)", -"POINT (173.327121700881207 -38.552782504902005)", -"POINT (172.993430990354909 -38.655456569679323)", -"POINT (172.839419893188989 -38.732462118262291)", -"POINT (172.659740279828696 -38.899307473525418)", -"POINT (172.45439215027406 -39.027650054497059)", -"POINT (172.197706988330737 -39.284335216440311)", -"POINT (172.018027374970359 -39.669362959355176)", -"POINT (-170.809757996124091 -39.258667337666161)", -"POINT (-171.092108440755396 -39.489683796643384)", -"POINT (-171.374459297976472 -39.72070029102813)", -"POINT (-171.669644665725599 -39.95171681078768)", -"POINT (-171.964830399850541 -40.195567616117053)", -"POINT (-172.208679740446428 -40.426584197598665)", -"POINT (-172.542368540167502 -40.631932262228219)", -"POINT (-172.696378898013165 -40.785943335635686)", -"POINT (-173.055736583802087 -41.068296973781855)", -"POINT (-173.273918197572641 -41.299313602634044)", -"POINT (-173.658944763471993 -41.645838554189496)", -"POINT (-173.504934101572132 -41.491827462434976)", -"POINT (-173.979800429072611 -41.992363516983445)", -"POINT (-174.108142742586438 -42.172043129406539)", -"POINT (-174.313490466537729 -42.377391260144812)", -"POINT (-174.608677910682047 -42.736750491079746)", -"POINT (-176.058947562102475 -43.429800480947527)", -"POINT (-174.955202379135329 -42.967767146816229)", -"POINT (-175.481406377455045 -43.160281038130286)", -"POINT (-175.802262571951218 -43.352794922023079)", -"POINT (-176.328466827030041 -43.339960685516779)", -"POINT (-176.508146353344472 -43.250120886092468)", - - - - - \ No newline at end of file diff --git a/tests/visual_tests/styles/building-symbolizer-opacity.xml b/tests/visual_tests/styles/building-symbolizer-opacity.xml deleted file mode 100644 index 5ddd40d4c..000000000 --- a/tests/visual_tests/styles/building-symbolizer-opacity.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - 512, 512 - - - - - ellipse - - csv - ../data/marker-multi-policy.csv - - - diff --git a/tests/visual_tests/styles/charspacing-lines.xml b/tests/visual_tests/styles/charspacing-lines.xml deleted file mode 100644 index c2dd336b2..000000000 --- a/tests/visual_tests/styles/charspacing-lines.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - 300, 300 - -0.05, -0.01, 0.95, 0.01 - - - - My Style - - csv - ../data/lines.csv - - - - - - diff --git a/tests/visual_tests/styles/charspacing.xml b/tests/visual_tests/styles/charspacing.xml deleted file mode 100644 index 4a90770c1..000000000 --- a/tests/visual_tests/styles/charspacing.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - 200, 400 - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - diff --git a/tests/visual_tests/styles/collision.xml b/tests/visual_tests/styles/collision.xml deleted file mode 100644 index 27cfa53c2..000000000 --- a/tests/visual_tests/styles/collision.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - 600,400 - - - - - - - - line - text - - csv - -i|wkt -1|LINESTRING(-98.465624973178 64.664065539837, -84.403124973178 49.195315539837, -72.449999973178 40.757815539837, -61.199999973178 29.507815539837, -60.496874973178 22.476565539837, -58.387499973178 4.1953155398369, -52.059374973178 -7.7578094601631, -41.512499973178 -34.476559460163, -27.449999973178 -45.023434460163, -14.090624973178 -52.054684460163, 7.0031250268221 -61.195309460163) - - | - - - - - line - text - - csv - -i|wkt -1|LINESTRING(-55.574999973178 68.882815539837, -51.356249973178 42.164065539837, -57.684374973178 33.023440539837, -64.012499973178 21.773440539837, -63.309374973178 3.4921905398369, -45.731249973178 -46.429684460163, -16.903124973178 -50.648434460163, -2.8406249731779 -50.648434460163, 14.737500026822 -50.648434460163, 46.378125026822 -41.507809460163, 78.721875026822 -17.601559460163) -2|LINESTRING(-21.824999973178 69.585940539837, -108.30937497318 41.460940539837, -13.387499973178 24.585940539837, -108.30937497318 6.3046905398369, -19.012499973178 -2.1328094601631, -83.699999973178 -26.039059460163, 5.5968750268221 -26.039059460163, -30.262499973178 -63.304684460163, 40.050000026822 -19.710934460163, 62.550000026822 -61.195309460163) -3|LINESTRING(-73.856249973178 77.320315539837, -11.278124973178 -61.898434460163, -112.52812497318 61.148440539837, 31.612500026822 -61.898434460163, 56.925000026822 -13.382809460163) - - | - - - - diff --git a/tests/visual_tests/styles/colorize-alpha1.xml b/tests/visual_tests/styles/colorize-alpha1.xml deleted file mode 100644 index 7431d6638..000000000 --- a/tests/visual_tests/styles/colorize-alpha1.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - 512,512 - - - - - - - - countries - - ../../data/shp/ne_110m_admin_0_countries.shp - shape - - - - - style - - - x,y - -170,20 - -122,48 - -122.2,48.2 - -122.2,48.2 - -122.3,48.3 - -122.1,48.4 - -122.1,48.2 - -115,36 - 90,30 - 0,0 - 1,1 - 10,10 - -10,-10 - -20,-20 - - csv - - - - diff --git a/tests/visual_tests/styles/colorize-alpha2.xml b/tests/visual_tests/styles/colorize-alpha2.xml deleted file mode 100644 index 7301586a4..000000000 --- a/tests/visual_tests/styles/colorize-alpha2.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - 512,512 - - - - - - - - countries - - ../../data/shp/ne_110m_admin_0_countries.shp - shape - - - - - style - - - x,y - -170,20 - -122,48 - -122.2,48.2 - -122.2,48.2 - -122.3,48.3 - -122.1,48.4 - -122.1,48.2 - -115,36 - 90,30 - 0,0 - 1,1 - 10,10 - -10,-10 - -20,-20 - - csv - - - - diff --git a/tests/visual_tests/styles/colorize-alpha3.xml b/tests/visual_tests/styles/colorize-alpha3.xml deleted file mode 100644 index 12a7407c5..000000000 --- a/tests/visual_tests/styles/colorize-alpha3.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - 512,512 - - - - - - - - countries - - ../../data/shp/ne_110m_admin_0_countries.shp - shape - - - - - style - - - x,y - -170,20 - -122,48 - -122.2,48.2 - -122.2,48.2 - -122.3,48.3 - -122.1,48.4 - -122.1,48.2 - -115,36 - 90,30 - 0,0 - 1,1 - 10,10 - -10,-10 - -20,-20 - - csv - - - - diff --git a/tests/visual_tests/styles/colorize-alpha4.xml b/tests/visual_tests/styles/colorize-alpha4.xml deleted file mode 100644 index 8db16a8f6..000000000 --- a/tests/visual_tests/styles/colorize-alpha4.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - 256,256 - off - - - - - - - - countries - - ../../data/shp/ne_110m_admin_0_countries.shp - shape - - - - - style - - - x,y - -170,20 - -122,48 - -122.2,48.2 - -122.2,48.2 - -122.3,48.3 - -122.1,48.4 - -122.1,48.2 - -115,36 - 90,30 - 0,0 - 1,1 - 10,10 - -10,-10 - -20,-20 - - csv - - - - diff --git a/tests/visual_tests/styles/dots.xml b/tests/visual_tests/styles/dots.xml deleted file mode 100644 index 36dc356ad..000000000 --- a/tests/visual_tests/styles/dots.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - dots - - csv - 0,0,5,5 - -fill, opacity,height, width, wkt -green,.5, 40, 40, "POINT(2.5 2.5)" -red, .5, 20, 20, "MULTIPOINT((2 2.5),(2.5 2.5),(3 2.5))" -blue, .5, 45, 45, "POLYGON((1 1,4 1,4 4,1 4,1 1))" -red, .5, 3, 3, "LINESTRING(3 2.5,3.0472522909029145 2.5549083791557554,3.088039946704745 2.6192015984770367,3.120968717931644 2.692088134329871,3.1447426958020195 2.7725928396160553,3.1581869214177796 2.859569153953152,3.1602684919277424 2.9517139787160285,3.150115859191815 3.0475850341520374,3.1270360384124487 3.1456204818095705,3.090529469857131 3.2441605641461093,3.0403023058681398 3.3414709848078967,2.9762759274968564 3.435767728064507,2.898593529924341 3.525242994563949,2.8076236529182754 3.6080919132297717,2.7039605714802892 3.6825396759861526,2.588421502084629 3.7468687332550683,2.4620406210083243 3.799445683953957,2.3260599327010416 3.838747494110833,2.181917067429678 3.863386683229473,2.0312301280479197 3.872135127146751,1.8757797451792864 3.8639461402385225,1.7174885378702207 3.8379745183057543,1.5583982123914466 3.7935942461113443,1.4006445648882897 3.7304136000915884,1.246430683579882 3.648287406936956,1.0979986727928661 3.547326252181924,0.9576002439358948 3.4279024692786355,0.8274665372684367 3.290652778432585,0.7097775527295491 3.136477485296219,0.606631577958298 2.966536191967265,0.5200150067991092 2.7822400161197343,0.45177294193977735 2.5852403579882455,0.4035809708310185 2.3774142988020817,0.3769184946959401 2.160846757592015,0.37304397632518604 1.9378095755409703,0.3929724535957084 1.7107377376983552,0.4374556424314622 1.4822029804218395,0.5069649254805411 1.2548850688650404,0.6016774914054002 1.0315410617374736,0.7214658547096571 0.8149729099992633,0.8658909478409702 0.6079937617301794,1.0341989363401651 0.4133933667857521,1.2253218645141815 0.23390299172467044,1.437882193988065 0.07216026761394456,1.6702012510582676 -0.06932559950169326,1.920311551565356 -0.18820782357901678,2.185972924581849 -0.2823348101737011,2.4646923091307618 -0.34978128405768727,2.753747051974397 -0.38887736562393815,3.0502114897965984 -0.3982352072417812,3.350986556389679 -0.37677282398941525,3.6528321152745926 -0.3237347810995832,3.9524016810311693 -0.2387094327324748,4.246279158964359 -0.12164244300528804,4.531017203016431 0.027153639820840958,4.803176766446595 0.2069939418962261,5.0593673990838255 0.416820095021341,5.2962878292111855 0.6552034322979141,5.510766357600486 0.9203525899932274,5.6998005860669245 1.2101255063356857,5.860596003276281 1.5220457563037595,5.990602956471176 1.8533231098340628,6.087551549283583 2.200878149857013,6.149484022799466 2.5613707367678797,6.1747841994053125 2.9312320579468265,6.162203596480088 3.306699955329308,6.110883849442411 3.683857181350839,6.02037512070598 4.058672194373903,5.890650212364317 4.427042069440575,5.722114145495159 4.78483706933339,5.515609017373219 5.127946394875156,5.272413999093365 5.4523246125098,4.994240389582243 5.754038241781528,4.683221697131584 6.029311975608545,4.34189877581244 6.2745740024088335,3.9732001007988598 6.486499901292641,3.5804173231036964 6.662054589735392,3.16717629986471 6.798531817364951,2.737403850475655 6.893590719648262,2.2952905409040607 6.945288971186986,1.8452498478612391 6.952112109805218,1.3918741005021504 6.912998639345142,0.9398876394743532 6.827360560726954,0.4940976708866134 6.695099026966764,0.05934332565157785 6.516614868014918,-0.3595565377529124 6.292813784961579,-0.7578562271360596 6.0251060697957435,-1.1309362311473898 5.715400765898583,-1.474355768902115 5.3660942451696325,-1.783904285743506 4.980053239466529,-2.055651309423385 4.560592426208784,-2.285994090762115 4.1114467298642285,-2.4717024691612375 3.636738561911254,-2.6099604260809084 3.1409402810613676,-2.698403818583074 2.6288322123574606,-2.7351538200309866 2.105456617575501,-2.718845635708872 1.5760680595181986,-2.648652107097507 1.0460806487014485,-2.524301869365668 0.5210127020395867,-2.3460917818082168 0.006429378924498685)" - - - - - \ No newline at end of file diff --git a/tests/visual_tests/styles/dst-over-compositing.xml b/tests/visual_tests/styles/dst-over-compositing.xml deleted file mode 100644 index 8ebefe298..000000000 --- a/tests/visual_tests/styles/dst-over-compositing.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - 512,512 - - - - - - My Style - - csv - ../data/crossing-lines.csv - - - - diff --git a/tests/visual_tests/styles/expressionformat.xml b/tests/visual_tests/styles/expressionformat.xml deleted file mode 100644 index 596fb4a92..000000000 --- a/tests/visual_tests/styles/expressionformat.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/formatting-1.xml b/tests/visual_tests/styles/formatting-1.xml deleted file mode 100644 index d83012b9d..000000000 --- a/tests/visual_tests/styles/formatting-1.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/formatting-2.xml b/tests/visual_tests/styles/formatting-2.xml deleted file mode 100644 index 043dcafb9..000000000 --- a/tests/visual_tests/styles/formatting-2.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/formatting-3.xml b/tests/visual_tests/styles/formatting-3.xml deleted file mode 100644 index 8724228b1..000000000 --- a/tests/visual_tests/styles/formatting-3.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/formatting-4.xml b/tests/visual_tests/styles/formatting-4.xml deleted file mode 100644 index f8adcb16d..000000000 --- a/tests/visual_tests/styles/formatting-4.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/formatting-5.xml b/tests/visual_tests/styles/formatting-5.xml deleted file mode 100644 index 563682c51..000000000 --- a/tests/visual_tests/styles/formatting-5.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/formatting-6.xml b/tests/visual_tests/styles/formatting-6.xml deleted file mode 100644 index 38637f420..000000000 --- a/tests/visual_tests/styles/formatting-6.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/formatting-7.xml b/tests/visual_tests/styles/formatting-7.xml deleted file mode 100644 index 78b4f9ef9..000000000 --- a/tests/visual_tests/styles/formatting-7.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/formatting-8.xml b/tests/visual_tests/styles/formatting-8.xml deleted file mode 100644 index eea114cd1..000000000 --- a/tests/visual_tests/styles/formatting-8.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/formatting-expr-alignment.xml b/tests/visual_tests/styles/formatting-expr-alignment.xml deleted file mode 100644 index 27741bec7..000000000 --- a/tests/visual_tests/styles/formatting-expr-alignment.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - 500, 500 - - - - - - - My Style - - csv - -0.5, -0.5, 0.5, 0.5 - -lat,long,horizontal_alignment,vertical_alignment,dy,text - 0.25,-0.35,left,top,0 - 0.25,-0.12,middle,top,0 - 0.25, 0.11,right,top,0 - 0 ,-0.35,left,middle,0 - 0 ,-0.12,middle,middle,0 - 0 , 0.11,right,middle,0 --0.25,-0.35,left,bottom,0 --0.25,-0.12,middle,bottom,0 --0.25, 0.11,right,bottom,0 - 0.25, 0.35,right,auto,-0.0001 - 0 , 0.35,middle,auto,0 --0.25, 0.35,left,auto,0.0001 - - - - - - - diff --git a/tests/visual_tests/styles/formatting.xml b/tests/visual_tests/styles/formatting.xml deleted file mode 100644 index cdec59b5a..000000000 --- a/tests/visual_tests/styles/formatting.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - 256,256 - off - - - - My Style - - csv - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/functional-expressions-length.xml b/tests/visual_tests/styles/functional-expressions-length.xml deleted file mode 100644 index a462aff1d..000000000 --- a/tests/visual_tests/styles/functional-expressions-length.xml +++ /dev/null @@ -1,120 +0,0 @@ - - - 512, 512 - - - - - - - - frame - - ogr - -15,-15,15,15 - 0 - - - - diff --git a/tests/visual_tests/styles/functional-expressions.xml b/tests/visual_tests/styles/functional-expressions.xml deleted file mode 100644 index f222f45a3..000000000 --- a/tests/visual_tests/styles/functional-expressions.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - 256,256 - - - - - - frame - - ogr - -10,-10,10,10 - 0 - - - - diff --git a/tests/visual_tests/styles/gdal-filter-factor.xml b/tests/visual_tests/styles/gdal-filter-factor.xml deleted file mode 100644 index 00e37402d..000000000 --- a/tests/visual_tests/styles/gdal-filter-factor.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - 600,400 - - - - - - test - - ../data/Yosemite_L9.tif - gdal - - - - diff --git a/tests/visual_tests/styles/geojson-geometry-collection.xml b/tests/visual_tests/styles/geojson-geometry-collection.xml deleted file mode 100644 index 5f4fbcf58..000000000 --- a/tests/visual_tests/styles/geojson-geometry-collection.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - 256,256 - - - - - - style - - geojson - -{ - "type": "FeatureCollection", - "features": [ - { - "type": "Feature", - "properties": {}, - "geometry": { - "type": "GeometryCollection", - "geometries": [ - { - "type": "MultiPoint", - "coordinates": [ [5,0], [0,5], [1,2.5], [4,2.5] ] - }, - { - "type": "LineString", - "coordinates": [ - [ - 0, - 5 - ], - [ - 5, - 0 - ] - ] - } - ] - } - } - ] -} - - - - diff --git a/tests/visual_tests/styles/geometry-transform-scale-patterns.xml b/tests/visual_tests/styles/geometry-transform-scale-patterns.xml deleted file mode 100644 index bc9bbad9a..000000000 --- a/tests/visual_tests/styles/geometry-transform-scale-patterns.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - 500,500 - - - - polygon - polygon-svg - line - line-svg - - csv - -1,-1,1,1 - - wkt - "LINESTRING (-1 0, 0 1, 1 0, 0 -1, -1 0)" - - - - - - - - diff --git a/tests/visual_tests/styles/geometry-transform-scale.xml b/tests/visual_tests/styles/geometry-transform-scale.xml deleted file mode 100644 index 17301e034..000000000 --- a/tests/visual_tests/styles/geometry-transform-scale.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - 500,500 - - - - polygon - line - marker - text - - csv - -1,-1,1,1 - - wkt - "LINESTRING (-1 0, 0 1, 1 0, 0 -1, -1 0)" - - - - - - - - diff --git a/tests/visual_tests/styles/geometry-transform-translate-patterns-svg.xml b/tests/visual_tests/styles/geometry-transform-translate-patterns-svg.xml deleted file mode 100644 index 8db8c1a21..000000000 --- a/tests/visual_tests/styles/geometry-transform-translate-patterns-svg.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - 200,200 - - - - - - - - polygon - - csv - -wkt -"POLYGON ((1 1, 4 1, 4 4, 1 4, 1 1), (2 2, 2 3, 3 3, 3 2, 2 2))" - - - - - - line - - csv - -wkt -"LINESTRING (0.5 0.5, 4.5 4.5)" - - - - - - point - - csv - -wkt -"POINT (1 4)" - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - - diff --git a/tests/visual_tests/styles/geometry-transform-translate-patterns.xml b/tests/visual_tests/styles/geometry-transform-translate-patterns.xml deleted file mode 100644 index 611a05124..000000000 --- a/tests/visual_tests/styles/geometry-transform-translate-patterns.xml +++ /dev/null @@ -1,102 +0,0 @@ - - - 200,200 - - - - - - - - polygon - - csv - -wkt -"POLYGON ((1 1, 4 1, 4 4, 1 4, 1 1), (2 2, 2 3, 3 3, 3 2, 2 2))" - - - - - - line - - csv - -wkt -"LINESTRING (0.5 0.5, 4.5 4.5)" - - - - - - point - - csv - -wkt -"POINT (1 4)" - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - - diff --git a/tests/visual_tests/styles/geometry-transform-translate.xml b/tests/visual_tests/styles/geometry-transform-translate.xml deleted file mode 100644 index 0bf4e93e2..000000000 --- a/tests/visual_tests/styles/geometry-transform-translate.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - 200,200 - - - - - - - - polygon - - csv - -wkt -"POLYGON ((1 1, 1 4, 4 4, 4 1, 1 1), (2 2, 3 2, 3 3, 2 3, 2 2))" - - - - - - line - - csv - -wkt -"LINESTRING (0.5 0.5, 4.5 4.5)" - - - - - - point - - csv - -wkt -"POINT (1 4)" - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - - diff --git a/tests/visual_tests/styles/group-symbolizer-1.xml b/tests/visual_tests/styles/group-symbolizer-1.xml deleted file mode 100644 index 3b37bd5fb..000000000 --- a/tests/visual_tests/styles/group-symbolizer-1.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - 512,512 - - - - points - - csv - -lat,long,name1,ref1,name2,ref2 -0,0,One,1,Two,2 - - - - - - - - frame - - csv - -lat,long,nr --1,-1,0 --1,1,1 -1,-1,2 -1,1,3 - - - - - - - - center - - csv - -lat,long,nr -0,0,0 - - - - - - - diff --git a/tests/visual_tests/styles/group-symbolizer-2.xml b/tests/visual_tests/styles/group-symbolizer-2.xml deleted file mode 100644 index 9b3276cfa..000000000 --- a/tests/visual_tests/styles/group-symbolizer-2.xml +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - 512,512 - - - - obstacle - - csv - -lat,long,nr -0.33,0.4,0 --0.33,0.4,1 - - - - - - - - grouped - - csv - -lat,long,name1,ref1,name2,ref2 --0.33,-0.33,One,1,Two,2 --0.33,0.33,One,1,Two,2 - - - - - - - - non-grouped - - csv - -lat,long,name1,ref1,name2,ref2 -0.33,-0.33,One,1,Two,2 -0.33,0.33,One,1,Two,2 - - - - - - - - frame - - csv - -lat,long,nr --1,-1,0 --1,1,1 -1,-1,2 -1,1,3 - - - - - - - - center - - csv - -lat,long,nr --0.33,-0.33,0 -0.33,-0.33,1 --0.33,0.33,2 -0.33,0.33,3 - - - - - - - diff --git a/tests/visual_tests/styles/group-symbolizer-3.xml b/tests/visual_tests/styles/group-symbolizer-3.xml deleted file mode 100644 index c3d8291e0..000000000 --- a/tests/visual_tests/styles/group-symbolizer-3.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - 512,256 - - - - obstacle - - csv - -lat,long -0.2,-0.35 -0.2,0.35 - - - - - - - - grouped - - csv - -lat,long,name1,ref1,name2,ref2,margin -0,-0.35,One,1,Two,2,0 -0,0.35,One,1,Two,2,30 - - - - - - - - frame - - csv - -lat,long,nr --0.5,-1,0 --0.5,1,1 -0.5,-1,2 -0.5,1,3 - - - - - - - center - - csv - -lat,long -0,-0.35 -0,0.35 - - - - - - - diff --git a/tests/visual_tests/styles/group-symbolizer-4.xml b/tests/visual_tests/styles/group-symbolizer-4.xml deleted file mode 100644 index a5dedddde..000000000 --- a/tests/visual_tests/styles/group-symbolizer-4.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - points - - csv - -lat,long,ref1,ref2,ref3,ref4,ref5,ref6,ref7,ref8,ref9,ref10 -0,0,1,2,3,4,5,6,7,8,9,10 - - - - - - - - frame - - csv - -lat,long,nr --1,-2,0 --1,2,1 -1,-2,2 -1,2,3 - - - - - - - diff --git a/tests/visual_tests/styles/group-symbolizer-line-1.xml b/tests/visual_tests/styles/group-symbolizer-line-1.xml deleted file mode 100644 index 17c1f55f8..000000000 --- a/tests/visual_tests/styles/group-symbolizer-line-1.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - 512,512 - - - - alpha - - csv - -wkt,name1,ref1,name2,ref2 -"LINESTRING(0 0, 10 2)",One,1,Two,2 - - - - - - - - beta - - csv - -wkt,name1,ref1,name2,ref2 -"LINESTRING(0 3, 10 5)",One,1,Two,2 - - - - - - - - gamma - - csv - -wkt,name1,ref1,name2,ref2 -"LINESTRING(0 6, 10 8)",One,1,Two,2 - - - - - - - diff --git a/tests/visual_tests/styles/group-symbolizer-line-2.xml b/tests/visual_tests/styles/group-symbolizer-line-2.xml deleted file mode 100644 index b883c6235..000000000 --- a/tests/visual_tests/styles/group-symbolizer-line-2.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - 512,512 - - - - - - alpha - - csv - -wkt,key1,key2 -"POINT(3.3 0)",foo,1 -"POINT(6.7 0)",bar,2 - - - - - - - - beta - - csv - -wkt,name1,ref1,name2,ref2 -"LINESTRING(0 -0.6, 10 -0.6)",One,1,Two,2 -"LINESTRING(0 -1.2, 10 -1.2)",One,1,Two,2 -"LINESTRING(0 -1.8, 10 -1.8)",One,1,Two,2 -"LINESTRING(0 -2.4, 10 -2.4)",One,1,Two,2 - - - - - - - - gamma - - csv - -wkt,name1,ref1,name2,ref2 -"LINESTRING(0 0.6, 10 0.6)",One,1,Two,2 -"LINESTRING(0 1.2, 10 1.2)",One,1,Two,2 -"LINESTRING(0 1.8, 10 1.8)",One,1,Two,2 -"LINESTRING(0 2.4, 10 2.4)",One,1,Two,2 - - - - - - - - - frame - - csv - -wkt,nr -"POINT(0 5)",1 -"POINT(0 -5)",2 -"POINT(10 5)",3 -"POINT(10 -5)",4 - - - - - - - diff --git a/tests/visual_tests/styles/group-symbolizer-line-avoid-edges.xml b/tests/visual_tests/styles/group-symbolizer-line-avoid-edges.xml deleted file mode 100644 index e284abeac..000000000 --- a/tests/visual_tests/styles/group-symbolizer-line-avoid-edges.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - 512,512 - - - - - - alpha - - csv - -wkt,key1,key2 -"POINT(3.3 0)",foo,1 -"POINT(6.7 0)",bar,2 - - - - - - - - beta - - csv - -wkt,name1,ref1,name2,ref2 -"LINESTRING(0 -0.6, 10 -0.6)",One,1,Two,2 -"LINESTRING(0 -1.2, 10 -1.2)",One,1,Two,2 -"LINESTRING(0 -1.8, 10 -1.8)",One,1,Two,2 -"LINESTRING(0 -2.4, 10 -2.4)",One,1,Two,2 - - - - - - - - gamma - - csv - -wkt,name1,ref1,name2,ref2 -"LINESTRING(0 0.6, 10 0.6)",One,1,Two,2 -"LINESTRING(0 1.2, 10 1.2)",One,1,Two,2 -"LINESTRING(0 1.8, 10 1.8)",One,1,Two,2 -"LINESTRING(0 2.4, 10 2.4)",One,1,Two,2 - - - - - - - - - frame - - csv - -wkt,nr -"POINT(0 5)",1 -"POINT(0 -5)",2 -"POINT(10 5)",3 -"POINT(10 -5)",4 - - - - - - - diff --git a/tests/visual_tests/styles/group-symbolizer-line-minimum-padding.xml b/tests/visual_tests/styles/group-symbolizer-line-minimum-padding.xml deleted file mode 100644 index c93c0d9c7..000000000 --- a/tests/visual_tests/styles/group-symbolizer-line-minimum-padding.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - 512,512 - - - - - - alpha - - csv - -wkt,key1,key2 -"POINT(3.3 0)",foo,1 -"POINT(6.7 0)",bar,2 - - - - - - - - beta - - csv - -wkt,name1,ref1,name2,ref2 -"LINESTRING(0 -0.6, 10 -0.6)",One,1,Two,2 -"LINESTRING(0 -1.2, 10 -1.2)",One,1,Two,2 -"LINESTRING(0 -1.8, 10 -1.8)",One,1,Two,2 -"LINESTRING(0 -2.4, 10 -2.4)",One,1,Two,2 - - - - - - - - gamma - - csv - -wkt,name1,ref1,name2,ref2 -"LINESTRING(0 0.6, 10 0.6)",One,1,Two,2 -"LINESTRING(0 1.2, 10 1.2)",One,1,Two,2 -"LINESTRING(0 1.8, 10 1.8)",One,1,Two,2 -"LINESTRING(0 2.4, 10 2.4)",One,1,Two,2 - - - - - - - - - frame - - csv - -wkt,nr -"POINT(0 5)",1 -"POINT(0 -5)",2 -"POINT(10 5)",3 -"POINT(10 -5)",4 - - - - - - - diff --git a/tests/visual_tests/styles/halo-comp-op-on-satellite.xml b/tests/visual_tests/styles/halo-comp-op-on-satellite.xml deleted file mode 100644 index f55116915..000000000 --- a/tests/visual_tests/styles/halo-comp-op-on-satellite.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - - 450,450 - - - - - raster - - ../data/satellite.png - 0,0,10,10 - gdal - - - - - - - labels - - x,y -2,1 -2,2 -2,3 -2,4 -2,5 -2,6 -2,7 -2,8 -2,9 -5,1 -5,2 -5,3 -5,4 -5,5 -5,6 -5,7 -5,8 -5,9 -8,1 -8,2 -8,3 -8,4 -8,5 -8,8 -8,6 -8,7 -8,8 -8,9 - - csv - - - - diff --git a/tests/visual_tests/styles/harfbuzz.xml b/tests/visual_tests/styles/harfbuzz.xml deleted file mode 100644 index 8f2fb086c..000000000 --- a/tests/visual_tests/styles/harfbuzz.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - 800, 200 - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/hb-fontsets.xml b/tests/visual_tests/styles/hb-fontsets.xml deleted file mode 100644 index 70173e677..000000000 --- a/tests/visual_tests/styles/hb-fontsets.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - 800, 200 - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - - - - - - - - - - - diff --git a/tests/visual_tests/styles/image-filters-galore.xml b/tests/visual_tests/styles/image-filters-galore.xml deleted file mode 100644 index 7ca2bc01b..000000000 --- a/tests/visual_tests/styles/image-filters-galore.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - 512,512 - - - - - - - countries-outline - countries - countries-mask - - ../../data/shp/ne_110m_admin_0_countries.shp - shape - - - - diff --git a/tests/visual_tests/styles/image-filters-multi-blur-inflate.xml b/tests/visual_tests/styles/image-filters-multi-blur-inflate.xml deleted file mode 100644 index 0422d659e..000000000 --- a/tests/visual_tests/styles/image-filters-multi-blur-inflate.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - 512,512 - - - - - - - countries-outline - countries - countries-over - - ../../data/shp/ne_110m_admin_0_countries.shp - shape - - - - diff --git a/tests/visual_tests/styles/image-filters-multi-blur.xml b/tests/visual_tests/styles/image-filters-multi-blur.xml deleted file mode 100644 index 71192ae6d..000000000 --- a/tests/visual_tests/styles/image-filters-multi-blur.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - 512,512 - - - - - - - countries-outline - countries - countries-over - - ../../data/shp/ne_110m_admin_0_countries.shp - shape - - - - diff --git a/tests/visual_tests/styles/jalign-auto.xml b/tests/visual_tests/styles/jalign-auto.xml deleted file mode 100644 index fda1c0885..000000000 --- a/tests/visual_tests/styles/jalign-auto.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - 200, 200 - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/khmer.xml b/tests/visual_tests/styles/khmer.xml deleted file mode 100644 index 5bf3626be..000000000 --- a/tests/visual_tests/styles/khmer.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - 800, 200 - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - diff --git a/tests/visual_tests/styles/kurdish-text-ogr.xml b/tests/visual_tests/styles/kurdish-text-ogr.xml deleted file mode 100644 index c5bc92572..000000000 --- a/tests/visual_tests/styles/kurdish-text-ogr.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - 512,512 - - - - - - style - - ../data/kurdish.geojson - ogr - 0 - - - \ No newline at end of file diff --git a/tests/visual_tests/styles/kurdish-text.xml b/tests/visual_tests/styles/kurdish-text.xml deleted file mode 100644 index dea9029e5..000000000 --- a/tests/visual_tests/styles/kurdish-text.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - 512,512 - - - - - - style - - ../data/kurdish.geojson - geojson - - - \ No newline at end of file diff --git a/tests/visual_tests/styles/line-offset.xml b/tests/visual_tests/styles/line-offset.xml deleted file mode 100644 index acdb7d700..000000000 --- a/tests/visual_tests/styles/line-offset.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - 900, 250 - - - My Style - - csv - -5.192, 50.189, -5.174, 50.195 - ../data/line-offset.csv - - - - - diff --git a/tests/visual_tests/styles/line-opacity-multi-render.xml b/tests/visual_tests/styles/line-opacity-multi-render.xml deleted file mode 100644 index 37bda8e7d..000000000 --- a/tests/visual_tests/styles/line-opacity-multi-render.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - 512,512 - - - - - polygon - - csv - - -wkt -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))" -"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494)) - - - - - diff --git a/tests/visual_tests/styles/line-pattern-issue-2726.xml b/tests/visual_tests/styles/line-pattern-issue-2726.xml deleted file mode 100644 index 66515fe01..000000000 --- a/tests/visual_tests/styles/line-pattern-issue-2726.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - 256, 256 - 979202.4851673174416646,6469426.4037138856947422,979202.5224900852190331,6469426.4410366592928767 - - - - - - My Style - - geojson - ../data/landuse.geojson - - - - diff --git a/tests/visual_tests/styles/line-pattern-smooth-and-offset.xml b/tests/visual_tests/styles/line-pattern-smooth-and-offset.xml deleted file mode 100755 index 86286459e..000000000 --- a/tests/visual_tests/styles/line-pattern-smooth-and-offset.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - 512,512 - - - - - - style - - shape - ../data/line.shp - - - diff --git a/tests/visual_tests/styles/line-pattern-symbolizer-opacity.xml b/tests/visual_tests/styles/line-pattern-symbolizer-opacity.xml deleted file mode 100644 index 44a490e6f..000000000 --- a/tests/visual_tests/styles/line-pattern-symbolizer-opacity.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 512,512 - - - My Style - - csv - ../data/line-offset.csv - - - - - - diff --git a/tests/visual_tests/styles/line-pattern-symbolizer.xml b/tests/visual_tests/styles/line-pattern-symbolizer.xml deleted file mode 100644 index d770d54f9..000000000 --- a/tests/visual_tests/styles/line-pattern-symbolizer.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - 900, 250 - - - My Style - - csv - -5.192, 50.189, -5.174, 50.195 - ../data/line-offset.csv - - - - - - diff --git a/tests/visual_tests/styles/line-smooth-and-offset.xml b/tests/visual_tests/styles/line-smooth-and-offset.xml deleted file mode 100755 index 87203ce9c..000000000 --- a/tests/visual_tests/styles/line-smooth-and-offset.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - 512,512 - - - - - - style - - shape - ../data/line.shp - - - diff --git a/tests/visual_tests/styles/line-symbolizer-expressions-all.xml b/tests/visual_tests/styles/line-symbolizer-expressions-all.xml deleted file mode 100644 index da5bc73fd..000000000 --- a/tests/visual_tests/styles/line-symbolizer-expressions-all.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - 256,256 - - - - - - - - - - frame - - csv - -wkt|name -Polygon((-180.0 -125.0, -180.0 125.0, 180.0 125.0, 180.0 -125.0, -180.0 -125.0))|bounds - - - - - - - - bug - - csv - -id|value|wkt -stroke|#ff0000|LineString(-160 -120,160 -120,160 -100) -stroke-width|5|LineString(-160 -90,160 -90,160 -70) -stroke-opacity|0.5|LineString(-160 -60,160 -60,160 -40) -offset|3|LineString(-160 -30,160 -30,160 -10) -stroke-dasharray|3,3|LineString(-160 0,160 0,160 20) -stroke-linejoin|bevel|LineString(-160 30,160 30,160 50) -stroke-linecap|round|LineString(-160 60,160 60,160 80) -comp-op|minus|LineString(-160 90,160 90,160 110) - - - - - diff --git a/tests/visual_tests/styles/line-symbolizer-expressions.xml b/tests/visual_tests/styles/line-symbolizer-expressions.xml deleted file mode 100644 index 2e224b8e5..000000000 --- a/tests/visual_tests/styles/line-symbolizer-expressions.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - 256,256 - - - - - - - - - - frame - - csv - -wkt|name -Polygon((-180.0 -125.0, -180.0 125.0, 180.0 125.0, 180.0 -125.0, -180.0 -125.0))|bounds - - - - - - - - bug - - csv - -id|value|wkt -stroke|#ff0000|LineString(-160 -120,160 -120,160 -100) -stroke-width|5|LineString(-160 -90,160 -90,160 -70) -stroke-opacity|0.5|LineString(-160 -60,160 -60,160 -40) -offset|3|LineString(-160 -30,160 -30,160 -10) - - - - - diff --git a/tests/visual_tests/styles/line_break.xml b/tests/visual_tests/styles/line_break.xml deleted file mode 100644 index 0e56506e0..000000000 --- a/tests/visual_tests/styles/line_break.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - 800, 800 - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/lines-1.xml b/tests/visual_tests/styles/lines-1.xml deleted file mode 100644 index 11dae3909..000000000 --- a/tests/visual_tests/styles/lines-1.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - 800, 800; 600, 600; 400, 400; 200, 200 - -0.05, -0.01, 0.95, 0.01 - - - - My Style - - csv - ../data/lines.csv - - - - - - diff --git a/tests/visual_tests/styles/lines-2.xml b/tests/visual_tests/styles/lines-2.xml deleted file mode 100644 index 43a48717e..000000000 --- a/tests/visual_tests/styles/lines-2.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - 800, 800; 600, 600; 400, 400; 200, 200 - -0.05, -0.01, 0.95, 0.01 - - - - My Style - - csv - ../data/lines.csv - - - - - - diff --git a/tests/visual_tests/styles/lines-3.xml b/tests/visual_tests/styles/lines-3.xml deleted file mode 100644 index 475ef9344..000000000 --- a/tests/visual_tests/styles/lines-3.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - 800, 800; 600, 600; 400, 400; 200, 200 - -0.05, -0.01, 0.95, 0.01 - - - - My Style - - csv - ../data/lines.csv - - - - - - diff --git a/tests/visual_tests/styles/lines-4.xml b/tests/visual_tests/styles/lines-4.xml deleted file mode 100644 index bc20e7900..000000000 --- a/tests/visual_tests/styles/lines-4.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - 800, 800; 600, 600; 400, 400; 200, 200 - -0.05, -0.01, 0.95, 0.01 - - - - lines - text - - csv - ../data/lines2.csv - - - - - - - - diff --git a/tests/visual_tests/styles/lines-5.xml b/tests/visual_tests/styles/lines-5.xml deleted file mode 100644 index 55ff6593e..000000000 --- a/tests/visual_tests/styles/lines-5.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - 800, 800; 600, 600; 400, 400; 200, 200 - -0.05, -0.01, 0.95, 0.01 - - - - lines - text - - csv - ../data/lines2.csv - - - - - - - - diff --git a/tests/visual_tests/styles/lines-6.xml b/tests/visual_tests/styles/lines-6.xml deleted file mode 100644 index 644954c97..000000000 --- a/tests/visual_tests/styles/lines-6.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - 800, 800; 600, 600; 400, 400; 200, 200 - -0.05, -0.01, 0.95, 0.01 - - - - lines - text - - csv - ../data/lines2.csv - - - - - - - - - - - - - diff --git a/tests/visual_tests/styles/lines-7.xml b/tests/visual_tests/styles/lines-7.xml deleted file mode 100644 index 08a6861a3..000000000 --- a/tests/visual_tests/styles/lines-7.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - 800, 800; 600, 600; 400, 400; 200, 200 - -1.2, -1.2, 1.2, 1.2 - - - - lines - text - - csv - -wkt,nr -"LINESTRING(-1.000 -1.000, -0.958 -0.646, -0.917 -0.331, -0.875 -0.055, -0.833 0.185, -0.792 0.390, -0.750 0.562, -0.708 0.703, -0.667 0.815, -0.625 0.898, -0.583 0.956, -0.542 0.989, -0.500 1.000, -0.458 0.990, -0.417 0.961, -0.375 0.914, -0.333 0.852, -0.292 0.776, -0.250 0.688, -0.208 0.589, -0.167 0.481, -0.125 0.367, -0.083 0.248, -0.042 0.125, 0.000 0.000, 0.042 -0.125, 0.083 -0.248, 0.125 -0.367, 0.167 -0.481, 0.208 -0.589, 0.250 -0.688, 0.292 -0.776, 0.333 -0.852, 0.375 -0.914, 0.417 -0.961, 0.458 -0.990, 0.500 -1.000, 0.542 -0.989, 0.583 -0.956, 0.625 -0.898, 0.667 -0.815, 0.708 -0.703, 0.750 -0.562, 0.792 -0.390, 0.833 -0.185, 0.875 0.055, 0.917 0.331, 0.958 0.646, 1.000 1.000)",1 - - - - - - - - - diff --git a/tests/visual_tests/styles/lines-multi-layout-1.xml b/tests/visual_tests/styles/lines-multi-layout-1.xml deleted file mode 100644 index 635603be7..000000000 --- a/tests/visual_tests/styles/lines-multi-layout-1.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - 800, 800 - -0.05, -0.01, 0.95, 0.01 - - - - lines - text - - csv - ../data/lines2.csv - - - - - - - - diff --git a/tests/visual_tests/styles/lines-multi-layout-2.xml b/tests/visual_tests/styles/lines-multi-layout-2.xml deleted file mode 100644 index 3a3addc37..000000000 --- a/tests/visual_tests/styles/lines-multi-layout-2.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - 800, 800 - -1.2, -1.2, 1.2, 1.2 - - - - lines - text - - csv - -wkt,nr -"LINESTRING(1.000 1.000, 0.958 0.646, 0.917 0.331, 0.875 0.055, 0.833 -0.185, 0.792 -0.390, 0.750 -0.562, 0.708 -0.703, 0.667 -0.815, 0.625 -0.898, 0.583 -0.956, 0.542 -0.989, 0.500 -1.000, 0.458 -0.990, 0.417 -0.961, 0.375 -0.914, 0.333 -0.852, 0.292 -0.776, 0.250 -0.688, 0.208 -0.589, 0.167 -0.481, 0.125 -0.367, 0.083 -0.248, 0.042 -0.125, 0.000 0.000, -0.042 0.125, -0.083 0.248, -0.125 0.367, -0.167 0.481, -0.208 0.589, -0.250 0.688, -0.292 0.776, -0.333 0.852, -0.375 0.914, -0.417 0.961, -0.458 0.990, -0.500 1.000, -0.542 0.989, -0.583 0.956, -0.625 0.898, -0.667 0.815, -0.708 0.703, -0.750 0.562, -0.792 0.390, -0.833 0.185, -0.875 -0.055, -0.917 -0.331, -0.958 -0.646, -1.000 -1.000)",1 - - - - - - - - - diff --git a/tests/visual_tests/styles/lines-multi-layout-shield.xml b/tests/visual_tests/styles/lines-multi-layout-shield.xml deleted file mode 100644 index 686838c09..000000000 --- a/tests/visual_tests/styles/lines-multi-layout-shield.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - 800, 800 - -0.05, -0.01, 0.95, 0.01 - - - - lines - text - - csv - ../data/lines.csv - - - - - - - - diff --git a/tests/visual_tests/styles/lines-shield.xml b/tests/visual_tests/styles/lines-shield.xml deleted file mode 100644 index 9c29df7b9..000000000 --- a/tests/visual_tests/styles/lines-shield.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - 800, 800; 600, 600; 400, 400; 200, 200 - -0.05, -0.01, 0.95, 0.01 - - - - My Style - - csv - ../data/lines.csv - - - - - - diff --git a/tests/visual_tests/styles/list.xml b/tests/visual_tests/styles/list.xml deleted file mode 100644 index d62e2a1c0..000000000 --- a/tests/visual_tests/styles/list.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - 800, 100; 600, 100; 400, 100; 300, 100; 250, 100; 150, 100; 100, 100 - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/map-background-image-compositing.xml b/tests/visual_tests/styles/map-background-image-compositing.xml deleted file mode 100644 index 69550bebb..000000000 --- a/tests/visual_tests/styles/map-background-image-compositing.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - 512,512 - - - - - - ellipse - - csv - -x,y -2.5,2.5 - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - - diff --git a/tests/visual_tests/styles/marker-collide.xml b/tests/visual_tests/styles/marker-collide.xml deleted file mode 100644 index ffec1841c..000000000 --- a/tests/visual_tests/styles/marker-collide.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - 512,512 - - - - - - - - - - line - text - point-placement - - csv - -i|wkt -1|LINESTRING(-98.465624973178 64.664065539837, -84.403124973178 49.195315539837, -72.449999973178 40.757815539837, -61.199999973178 29.507815539837, -60.496874973178 22.476565539837, -58.387499973178 4.1953155398369, -52.059374973178 -7.7578094601631, -41.512499973178 -34.476559460163, -27.449999973178 -45.023434460163, -14.090624973178 -52.054684460163, 7.0031250268221 -61.195309460163) - - | - - - - - line - text - point-placement - - csv - -i|wkt -1|LINESTRING(-55.574999973178 68.882815539837, -51.356249973178 42.164065539837, -57.684374973178 33.023440539837, -64.012499973178 21.773440539837, -63.309374973178 3.4921905398369, -45.731249973178 -46.429684460163, -16.903124973178 -50.648434460163, -2.8406249731779 -50.648434460163, 14.737500026822 -50.648434460163, 46.378125026822 -41.507809460163, 78.721875026822 -17.601559460163) -2|LINESTRING(-21.824999973178 69.585940539837, -108.30937497318 41.460940539837, -13.387499973178 24.585940539837, -108.30937497318 6.3046905398369, -19.012499973178 -2.1328094601631, -83.699999973178 -26.039059460163, 5.5968750268221 -26.039059460163, -30.262499973178 -63.304684460163, 40.050000026822 -19.710934460163, 62.550000026822 -61.195309460163) -3|LINESTRING(-73.856249973178 77.320315539837, -11.278124973178 -61.898434460163, -112.52812497318 61.148440539837, 31.612500026822 -61.898434460163, 56.925000026822 -13.382809460163) - - | - - - - diff --git a/tests/visual_tests/styles/marker-direction.xml b/tests/visual_tests/styles/marker-direction.xml deleted file mode 100644 index 8a70db890..000000000 --- a/tests/visual_tests/styles/marker-direction.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - - 1152,384 - - - - - - line - markers - text - - csv - -1.5, -7.5, 25.5, 1.5 - - id, wkt, placement, direction - 0, "LINESTRING( 1 0, 0 -1, -1 0, 0 1, 1 0)", "line", "left" - 1, "LINESTRING( 4 0, 3 -1, 2 0, 3 1, 4 0)", "line", "right" - 2, "LINESTRING( 7 0, 6 -1, 5 0, 6 1, 7 0)", "line", "left-only" - 3, "LINESTRING(10 0, 9 -1, 8 0, 9 1, 10 0)", "line", "right-only" - 4, "LINESTRING(13 0, 12 -1, 11 0, 12 1, 13 0)", "line", "auto" - 5, "LINESTRING(16 0, 15 -1, 14 0, 15 1, 16 0)", "line", "auto-down" - 6, "LINESTRING(19 0, 18 -1, 17 0, 18 1, 19 0)", "line", "up" - 7, "LINESTRING(22 0, 21 -1, 20 0, 21 1, 22 0)", "line", "down" - 8, "LINESTRING(25 0, 24 -1, 23 0, 24 1, 25 0)", "line", "[default]" - 9, "LINESTRING( 1 -3, 0 -4, -1 -3, 0 -2, 1 -3)", "vertex-first", "left" - 10, "LINESTRING( 4 -3, 3 -4, 2 -3, 3 -2, 4 -3)", "vertex-first", "right" - 11, "LINESTRING( 7 -3, 6 -4, 5 -3, 6 -2, 7 -3)", "vertex-first", "left-only" - 12, "LINESTRING(10 -3, 9 -4, 8 -3, 9 -2, 10 -3)", "vertex-first", "right-only" - 13, "LINESTRING(13 -3, 12 -4, 11 -3, 12 -2, 13 -3)", "vertex-first", "auto" - 14, "LINESTRING(16 -3, 15 -4, 14 -3, 15 -2, 16 -3)", "vertex-first", "auto-down" - 15, "LINESTRING(19 -3, 18 -4, 17 -3, 18 -2, 19 -3)", "vertex-first", "up" - 16, "LINESTRING(22 -3, 21 -4, 20 -3, 21 -2, 22 -3)", "vertex-first", "down" - 17, "LINESTRING(25 -3, 24 -4, 23 -3, 24 -2, 25 -3)", "vertex-first", "[default]" - 18, "LINESTRING( 1 -6, 0 -7, -1 -6, 0 -5, 1 -6)", "vertex-last", "left" - 19, "LINESTRING( 4 -6, 3 -7, 2 -6, 3 -5, 4 -6)", "vertex-last", "right" - 20, "LINESTRING( 7 -6, 6 -7, 5 -6, 6 -5, 7 -6)", "vertex-last", "left-only" - 21, "LINESTRING(10 -6, 9 -7, 8 -6, 9 -5, 10 -6)", "vertex-last", "right-only" - 22, "LINESTRING(13 -6, 12 -7, 11 -6, 12 -5, 13 -6)", "vertex-last", "auto" - 23, "LINESTRING(16 -6, 15 -7, 14 -6, 15 -5, 16 -6)", "vertex-last", "auto-down" - 24, "LINESTRING(19 -6, 18 -7, 17 -6, 18 -5, 19 -6)", "vertex-last", "up" - 25, "LINESTRING(22 -6, 21 -7, 20 -6, 21 -5, 22 -6)", "vertex-last", "down" - 26, "LINESTRING(25 -6, 24 -7, 23 -6, 24 -5, 25 -6)", "vertex-last", "[default]" - - - - diff --git a/tests/visual_tests/styles/marker-interior-position.xml b/tests/visual_tests/styles/marker-interior-position.xml deleted file mode 100644 index 6fdd44897..000000000 --- a/tests/visual_tests/styles/marker-interior-position.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - 600,400 - - - - - - poly - - csv - -1 -1 11 11 - - id|name|wkt - 1|Example|Polygon((0 10, 0 0, 1 0, 1 7, 6 7, 6 0, 10 0, 10 10, 0 10)) - - - - diff --git a/tests/visual_tests/styles/marker-line-placement-many-vertices.xml b/tests/visual_tests/styles/marker-line-placement-many-vertices.xml deleted file mode 100644 index 6c9d155d2..000000000 --- a/tests/visual_tests/styles/marker-line-placement-many-vertices.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - 600, 400 - - - My Style - - csv - - name,wkt - one,"LINESTRING(-11910145.81 4703881.8, -11910145.81 4703423.84,-11910160.59 4703432.16,-11910166.19 4703437.59,-11910173.45 4703446.41,-11910177.3 4703450.97,-11910192.16 4703462.59,-11910204.85 4703471.78,-11910212.45 4703479.48,-11910221.64 4703489.36,-11910226.1 4703494.08,-11910237.21 4703504.49,-11910243.24 4703510.09,-11910248.05 4703515.34,-11910252.77 4703519.28,-11910270.35 4703533.17,-11910287.15 4703551.01,-11910297.38 4703561.96,-11910305.77 4703571.92,-11910310.15 4703577.61,-11910316.36 4703584.26,-11910322.14 4703588.67,-11910331.31 4703595.72,-11910344.33 4703608.96,-11910351.24 4703615.98,-11910355.65 4703620.48,-11910366.33 4703631.8,-11910372.95 4703639.49,-11910377.01 4703645.05,-11910379.94 4703647.91,-11910384.5 4703651.34,-11910393.1 4703660.65,-11910398.84 4703665.75,-11910405.07 4703670.16,-11910407.65 4703673.09,-11910410.87 4703677.79,-11910414.38 4703681.34,-11910417.73 4703687.09,-11910420.81 4703692.48,-11910429.84 4703699.54,-11910432.91 4703703.67,-11910437.32 4703710.88,-11910442.36 4703715.78,-11910449.22 4703720.33,-11910451.95 4703722.55,-11910455.8 4703727.74,-11910464.26 4703732.86,-11910471.12 4703737.82,-11910478.04 4703746.84,-11910491.9 4703763.57,-11910498.05 4703770.49,-11910507.08 4703782.24,-11910519.18 4703795.54,-11910521.99 4703802.82,-11910526.6 4703809.54,-11910530.8 4703813.87,-11910535.7 4703823.8,-11910540.95 4703834.86,-11910543.54 4703839.76,-11910548.78 4703853.41,-11910550.39 4703856.97,-11910553.61 4703860.69,-11910555.77 4703869.08,-11910558.86 4703875.87,-11910561.37 4703879.51,-11910566.84 4703882.72,-11910571.38 4703883.63,-11910576.21 4703884.4,-11910580.05 4703884.4,-11910584.18 4703885.38,-11910593.08 4703887.55,-11910599.16 4703891.19,-11910605.39 4703894.13,-11910609.37 4703895.74,-11910612.17 4703896.01,-11910617.49 4703893.15,-11910623.37 4703888.19,-11910634.42 4703883.42,-11910644.28 4703881.75,-11910653.52 4703881.8)" - - - - - - diff --git a/tests/visual_tests/styles/marker-multi-policy.xml b/tests/visual_tests/styles/marker-multi-policy.xml deleted file mode 100644 index 7c77c3ec4..000000000 --- a/tests/visual_tests/styles/marker-multi-policy.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - 600,400 - - - - - - - boundary - each - whole - largest - - csv - ../data/marker-multi-policy.csv - | - - - diff --git a/tests/visual_tests/styles/marker-on-hex-grid.xml b/tests/visual_tests/styles/marker-on-hex-grid.xml deleted file mode 100644 index 1f6684222..000000000 --- a/tests/visual_tests/styles/marker-on-hex-grid.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - 600,400; 400,600; 257,256 - - - - 1 - - shape - ../data/hex.shp - - - - diff --git a/tests/visual_tests/styles/marker-on-line-and-avoid-edges.xml b/tests/visual_tests/styles/marker-on-line-and-avoid-edges.xml deleted file mode 100644 index 812a00a4f..000000000 --- a/tests/visual_tests/styles/marker-on-line-and-avoid-edges.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - 512,512 - - - - - line - point-placement - - csv - ../data/marker-on-line.csv - | - - - diff --git a/tests/visual_tests/styles/marker-on-line-and-line-placement.xml b/tests/visual_tests/styles/marker-on-line-and-line-placement.xml deleted file mode 100644 index 936ff7a9e..000000000 --- a/tests/visual_tests/styles/marker-on-line-and-line-placement.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - 600,400 - - - - - line - point-placement - - csv - -10, 0, 15, 20 - ../data/marker-on-line.csv - | - - - diff --git a/tests/visual_tests/styles/marker-on-line-and-vertex-first-placement.xml b/tests/visual_tests/styles/marker-on-line-and-vertex-first-placement.xml deleted file mode 100644 index 9e1084f9d..000000000 --- a/tests/visual_tests/styles/marker-on-line-and-vertex-first-placement.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - 600,400 - - - - - lines - markers - - csv - -1, -1, 11, 4 - - wkt, placement - "LINESTRING(0 0)", "vertex-first" - "LINESTRING(0 1, 10 1)", "vertex-first" - "LINESTRING(0 2, 2 3, 4 2, 6 3, 8 2, 10 3)", "vertex-first" - - - - diff --git a/tests/visual_tests/styles/marker-on-line-and-vertex-last-placement.xml b/tests/visual_tests/styles/marker-on-line-and-vertex-last-placement.xml deleted file mode 100644 index fd89c57d2..000000000 --- a/tests/visual_tests/styles/marker-on-line-and-vertex-last-placement.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - 600,400 - - - - - lines - markers - - csv - -1, -1, 11, 4 - - wkt, placement - "LINESTRING(0 0)", "vertex-last" - "LINESTRING(0 1, 10 1)", "vertex-last" - "LINESTRING(0 2, 2 3, 4 2, 6 3, 8 2, 10 3)", "vertex-last" - - - - diff --git a/tests/visual_tests/styles/marker-on-line-spacing-eq-width-overlap.xml b/tests/visual_tests/styles/marker-on-line-spacing-eq-width-overlap.xml deleted file mode 100644 index 21294b5cc..000000000 --- a/tests/visual_tests/styles/marker-on-line-spacing-eq-width-overlap.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - 600,400 - - - alpha - - csv - - wkt - "LINESTRING(0 0, 10 2)" - - - - - beta - - csv - - wkt - "LINESTRING(0 2, 10 4)" - - - - - gamma - - csv - - wkt - "LINESTRING(0 4, 10 6)" - - - - - - - - diff --git a/tests/visual_tests/styles/marker-on-line-spacing-eq-width.xml b/tests/visual_tests/styles/marker-on-line-spacing-eq-width.xml deleted file mode 100644 index c4962ce9b..000000000 --- a/tests/visual_tests/styles/marker-on-line-spacing-eq-width.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - 600,400 - - - alpha - - csv - - wkt - "LINESTRING(0 0, 10 2)" - - - - - beta - - csv - - wkt - "LINESTRING(0 2, 10 4)" - - - - - gamma - - csv - - wkt - "LINESTRING(0 4, 10 6)" - - - - - - - - diff --git a/tests/visual_tests/styles/marker-on-line-svg-no-box.xml b/tests/visual_tests/styles/marker-on-line-svg-no-box.xml deleted file mode 100644 index a6ba56083..000000000 --- a/tests/visual_tests/styles/marker-on-line-svg-no-box.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - 600,400 - - - alpha - - csv - - wkt - "LINESTRING(0 0, 10 2)" - - - - - beta - - csv - - wkt - "LINESTRING(0 2, 10 4)" - - - - - gamma - - csv - - wkt - "LINESTRING(0 4, 10 6)" - - - - - - - diff --git a/tests/visual_tests/styles/marker-on-line-svg-with-box.xml b/tests/visual_tests/styles/marker-on-line-svg-with-box.xml deleted file mode 100644 index ceb1c4586..000000000 --- a/tests/visual_tests/styles/marker-on-line-svg-with-box.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - 600,400 - - - alpha - - csv - - wkt - "LINESTRING(0 0, 10 2)" - - - - - beta - - csv - - wkt - "LINESTRING(0 2, 10 4)" - - - - - gamma - - csv - - wkt - "LINESTRING(0 4, 10 6)" - - - - - - - diff --git a/tests/visual_tests/styles/marker-on-line.xml b/tests/visual_tests/styles/marker-on-line.xml deleted file mode 100644 index 6c8732435..000000000 --- a/tests/visual_tests/styles/marker-on-line.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - 600,400 - - - - - line - point-placement - - csv - -10, 0, 15, 20 - ../data/marker-on-line.csv - | - - - diff --git a/tests/visual_tests/styles/marker-path-expression.xml b/tests/visual_tests/styles/marker-path-expression.xml deleted file mode 100644 index 561edc287..000000000 --- a/tests/visual_tests/styles/marker-path-expression.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - ellipse - - csv - -x,y,FILENAME,FILETYPE -2.5,2.5,rect2,svg - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - - \ No newline at end of file diff --git a/tests/visual_tests/styles/marker-recenter-collide.xml b/tests/visual_tests/styles/marker-recenter-collide.xml deleted file mode 100644 index 9ace272ee..000000000 --- a/tests/visual_tests/styles/marker-recenter-collide.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - 256,128 - - - - - - point - - csv - -1,-0.5,1,0.5 - - lat,lon,offset - 0,-0.35,10 - 0,0.35,0 - - - - - diff --git a/tests/visual_tests/styles/marker-svg-empty-g-element.xml b/tests/visual_tests/styles/marker-svg-empty-g-element.xml deleted file mode 100644 index 8fe2464c2..000000000 --- a/tests/visual_tests/styles/marker-svg-empty-g-element.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - svg - - csv - -x,y -2.5,2.5 - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - - \ No newline at end of file diff --git a/tests/visual_tests/styles/marker-svg-opacity.xml b/tests/visual_tests/styles/marker-svg-opacity.xml deleted file mode 100644 index 43a00467b..000000000 --- a/tests/visual_tests/styles/marker-svg-opacity.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - ellipse - - csv - -x,y,id -1,1,1 -2,2,2 -3,3,3 -4,4,4 - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - - \ No newline at end of file diff --git a/tests/visual_tests/styles/marker-svg-opacity2.xml b/tests/visual_tests/styles/marker-svg-opacity2.xml deleted file mode 100644 index 620b491d3..000000000 --- a/tests/visual_tests/styles/marker-svg-opacity2.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - svg - - csv - -x,y -2.5,2.5 - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - - \ No newline at end of file diff --git a/tests/visual_tests/styles/marker-svg.xml b/tests/visual_tests/styles/marker-svg.xml deleted file mode 100644 index a2252a0c1..000000000 --- a/tests/visual_tests/styles/marker-svg.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - ellipse - - csv - -x,y,id -1,1,1 -2,2,2 -3,3,3 -4,4,4 - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - - \ No newline at end of file diff --git a/tests/visual_tests/styles/marker-symbolizer-expressions-all.xml b/tests/visual_tests/styles/marker-symbolizer-expressions-all.xml deleted file mode 100644 index 273d553d5..000000000 --- a/tests/visual_tests/styles/marker-symbolizer-expressions-all.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - 256,256 - - - - - - - - - - frame - - csv - -wkt|name -Polygon((-180.0 -125.0, -180.0 125.0, 180.0 125.0, 180.0 -125.0, -180.0 -125.0))|bounds - - - - - - - - bug - - csv - -id|value|wkt -file|../../data/images/crosshair16x16.png|Point(-130 -70) -allow-overlap|true|Point(0 -70) -opacity|.5|Point(130 -70) -transform|1.2|Point(-130 30) -ignore-placement|true|Point(0 30) -comp-op|src-over|Point(130 30) - - - - - diff --git a/tests/visual_tests/styles/marker-vs-point.xml b/tests/visual_tests/styles/marker-vs-point.xml deleted file mode 100644 index 4bcc7d082..000000000 --- a/tests/visual_tests/styles/marker-vs-point.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - 512,512 - - - - - - - - markers - - csv - -x,y --2.5,3 --2.5,0 --2.5,-3 - - - - - - points - - csv - -x,y -2.5,3 -2.5,0 -2.5,-3 - - - - - - - - - - frame - - csv - -x,y --5,-5 -5,-5 --5,5 -5,5 - - - - - diff --git a/tests/visual_tests/styles/marker-whole-multi-polygon.xml b/tests/visual_tests/styles/marker-whole-multi-polygon.xml deleted file mode 100644 index 4b95c31f1..000000000 --- a/tests/visual_tests/styles/marker-whole-multi-polygon.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - 512,512 - - - - style - - ../../data/shp/world_merc - shape - - - diff --git a/tests/visual_tests/styles/marker-with-background-image-and-hsla-transform.xml b/tests/visual_tests/styles/marker-with-background-image-and-hsla-transform.xml deleted file mode 100644 index fd1cb679c..000000000 --- a/tests/visual_tests/styles/marker-with-background-image-and-hsla-transform.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - 600,400; 400,600; 257,256 - - - - - - ellipse - - csv - -x,y -2.5,2.5 - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - - diff --git a/tests/visual_tests/styles/marker-with-background-image-linear-comp-op.xml b/tests/visual_tests/styles/marker-with-background-image-linear-comp-op.xml deleted file mode 100644 index 58df8a1e8..000000000 --- a/tests/visual_tests/styles/marker-with-background-image-linear-comp-op.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - ellipse - - csv - -x,y -2.5,2.5 - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - - \ No newline at end of file diff --git a/tests/visual_tests/styles/marker-with-background-image.xml b/tests/visual_tests/styles/marker-with-background-image.xml deleted file mode 100644 index 316450ce3..000000000 --- a/tests/visual_tests/styles/marker-with-background-image.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - 600,400; 400,600; 257,256 - - - - - - ellipse - - csv - -x,y -2.5,2.5 - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - - diff --git a/tests/visual_tests/styles/marker_line_placement_on_points.xml b/tests/visual_tests/styles/marker_line_placement_on_points.xml deleted file mode 100644 index 6fe866689..000000000 --- a/tests/visual_tests/styles/marker_line_placement_on_points.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - 1 - - csv - - x,y,id - 0,0,1 - 5,0,1 - 5,5,1 - 0,5,1 - 2.5,2.5,2 - 2.5,3,3 - 2.5,2,3 - 3,2.5,3 - 2,2.5,3 - - - - \ No newline at end of file diff --git a/tests/visual_tests/styles/multipolygon-centroid-postgis.xml b/tests/visual_tests/styles/multipolygon-centroid-postgis.xml deleted file mode 100644 index f72c9b160..000000000 --- a/tests/visual_tests/styles/multipolygon-centroid-postgis.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - 512,512 - - - - poly - - - template_postgis - true - - - - - - \ No newline at end of file diff --git a/tests/visual_tests/styles/multipolygon-centroid-wkt.xml b/tests/visual_tests/styles/multipolygon-centroid-wkt.xml deleted file mode 100644 index 28156e772..000000000 --- a/tests/visual_tests/styles/multipolygon-centroid-wkt.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - 512,512 - - - - poly - - csv - ../data/issue_2062.csv - - - \ No newline at end of file diff --git a/tests/visual_tests/styles/multipolygon-two-holes-geojson.xml b/tests/visual_tests/styles/multipolygon-two-holes-geojson.xml deleted file mode 100644 index 46bceeba9..000000000 --- a/tests/visual_tests/styles/multipolygon-two-holes-geojson.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - 300,300 - - - - - - polygon - - geojson - ../../data/json/poly-multihole.json - - - diff --git a/tests/visual_tests/styles/multipolygon-two-holes-ogr.xml b/tests/visual_tests/styles/multipolygon-two-holes-ogr.xml deleted file mode 100644 index dce00c485..000000000 --- a/tests/visual_tests/styles/multipolygon-two-holes-ogr.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - 300,300 - - - - - - polygon - - ogr - 0 - ../../data/shp/poly-multihole.shp - - - diff --git a/tests/visual_tests/styles/multipolygon-two-holes-shape.xml b/tests/visual_tests/styles/multipolygon-two-holes-shape.xml deleted file mode 100644 index 29d1988f4..000000000 --- a/tests/visual_tests/styles/multipolygon-two-holes-shape.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - 300,300 - - - - - - polygon - - shape - ../../data/shp/poly-multihole.shp - - - diff --git a/tests/visual_tests/styles/orientation.xml b/tests/visual_tests/styles/orientation.xml deleted file mode 100644 index aaf34575c..000000000 --- a/tests/visual_tests/styles/orientation.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - 800, 200 - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/point-symbolizer-expressions-all.xml b/tests/visual_tests/styles/point-symbolizer-expressions-all.xml deleted file mode 100644 index d5953435e..000000000 --- a/tests/visual_tests/styles/point-symbolizer-expressions-all.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - 256,256 - - - - - - - - - - frame - - csv - -wkt|name -Polygon((-180.0 -125.0, -180.0 125.0, 180.0 125.0, 180.0 -125.0, -180.0 -125.0))|bounds - - - - - - - - bug - - csv - -id|value|wkt -file|../../data/images/crosshair16x16.png|Point(-130 -70) -allow-overlap|true|Point(0 -70) -opacity|.5|Point(130 -70) -transform|1.2|Point(-130 30) -ignore-placement|true|Point(0 30) -comp-op|src-over|Point(130 30) - - - - - diff --git a/tests/visual_tests/styles/point-symbolizer-expressions.xml b/tests/visual_tests/styles/point-symbolizer-expressions.xml deleted file mode 100644 index 838d4f641..000000000 --- a/tests/visual_tests/styles/point-symbolizer-expressions.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - 256,256 - - - - - - - - - - frame - - csv - -wkt|name -Polygon((-180.0 -125.0, -180.0 125.0, 180.0 125.0, 180.0 -125.0, -180.0 -125.0))|bounds - - - - - - - - bug - - csv - -id|value|wkt -file|../../data/images/crosshair16x16.png|Point(-130 -70) - - - - - diff --git a/tests/visual_tests/styles/point-symbolizer-overlap-placement-expr.xml b/tests/visual_tests/styles/point-symbolizer-overlap-placement-expr.xml deleted file mode 100644 index 7594edee9..000000000 --- a/tests/visual_tests/styles/point-symbolizer-overlap-placement-expr.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - 500, 500 - - - - - - - My Style - - csv - -0.5, -0.5, 0.5, 0.5 - -lat,long,overlap,placement - 0.33,-0.36,noexpr-true,noexpr-false - 0.33,-0.34,noexpr-true,noexpr-false - 0.33,-0.13,noexpr-false,noexpr-false - 0.33,-0.11,noexpr-false,noexpr-false - 0.33, 0.10,noexpr-true,noexpr-false - 0.33, 0.12,noexpr-false,noexpr-false - 0.33, 0.34,noexpr-false,noexpr-false - 0.33, 0.36,noexpr-true,noexpr-false - - 0.11,-0.36,true,false - 0.11,-0.34,true,false - 0.11,-0.13,false,false - 0.11,-0.11,false,false - 0.11, 0.10,true,false - 0.11, 0.12,false,false - 0.11, 0.34,false,false - 0.11, 0.36,true,false - --0.11,-0.36,noexpr-false,noexpr-true --0.11,-0.34,noexpr-false,noexpr-true --0.11,-0.13,noexpr-false,noexpr-false --0.11,-0.11,noexpr-false,noexpr-false --0.11, 0.10,noexpr-false,noexpr-true --0.11, 0.12,noexpr-false,noexpr-false --0.11, 0.34,noexpr-false,noexpr-false --0.11, 0.36,noexpr-false,noexpr-true - --0.33,-0.36,false,true --0.33,-0.34,false,true --0.33,-0.13,false,false --0.33,-0.11,false,false --0.33, 0.10,false,true --0.33, 0.12,false,false --0.33, 0.34,false,false --0.33, 0.36,false,true - - - - - - - diff --git a/tests/visual_tests/styles/polygon-interior-1.xml b/tests/visual_tests/styles/polygon-interior-1.xml deleted file mode 100644 index 7b32649a8..000000000 --- a/tests/visual_tests/styles/polygon-interior-1.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - 800, 800 - - - - lines - - csv - - wkt - "POLYGON((4203597.16 -400975.38,4209826.25 -400833.3,4209547.22 -393766.58,4208036.58 -393515.25,4207416.92 -377190.48,4208046.09 -371054.11,4207482.99 -366077.02,4209083.36 -361915.95,4207321.7 -353577.49,4209278.87 -353212.3,4211736.38 -355273.44,4214239.96 -354640.88,4214635.49 -343612.49,4216426.72 -343347.09,4219135.34 -321808.25,4221654.76 -320099.34,4223940.92 -310224.68,4227974.2 -311234.56,4243907.04 -302816.49,4244235.73 -302006.67,4245271.56 -301350.03,4248914.45 -301080.58,4258939.89 -307371.28,4267889.34 -319070.56,4272276.7 -324725.29,4274321.59 -326405.06,4275301.21 -326107.3,4275872.19 -326403.79,4278377.35 -329796.59,4279292.67 -330477.93,4280252.26 -331548.08,4281011.89 -333121.66,4281446.47 -333556.83,4281888.7 -333781.19,4282108.7 -334097.15,4283136.97 -335890.62,4283561.93 -336822.02,4284805.52 -343208.16,4285526.54 -348013.24,4285589.25 -348446.36,4285598.97 -348703.77,4285411.58 -352754.14,4263380.43 -352773.12,4245083.13 -352820.26,4244908.61 -372084.37,4244877.85 -376365.47,4243857.49 -376467.62,4243658.03 -383235.98,4244851.79 -383299.13,4244791.95 -418120.66,4285486.77 -425102.97,4291454.2 -438516.23,4279974.17 -461153.66,4206339.88 -409029.65,4205604.34 -406845.13,4204828.3 -405070.64,4204034.59 -403083.16,4203597.16 -400975.38))" - - - - - - - diff --git a/tests/visual_tests/styles/polygon-interior-2.xml b/tests/visual_tests/styles/polygon-interior-2.xml deleted file mode 100644 index 32b75d311..000000000 --- a/tests/visual_tests/styles/polygon-interior-2.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - 800, 800 - -1.05, -1.05, 1.05, 1.05 - - - - lines - - csv - - wkt - "POLYGON((1 0, 0 -1, -1 0, 0 1, 0.8 0, 0 0.8, -0.8 0, 0 -0.8, 1 0))" - - - - - - - diff --git a/tests/visual_tests/styles/polygon-interior-3.xml b/tests/visual_tests/styles/polygon-interior-3.xml deleted file mode 100644 index a8ba0eef5..000000000 --- a/tests/visual_tests/styles/polygon-interior-3.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - 800, 800 - -545426.07,423373.19,-150031.2,748768.06 - - - - lines - - csv - - wkt - "POLYGON((-535426.07 577455.78,-535049.47 577733.6,-535056.97 577801.2,-535061.81 577844.74,-534989.78 577914.7,-535203.74 578159.94,-535217.98 578174.24,-535232.46 578188.66,-535246.7 578202.97,-535261.06 578217.39,-535289.9 578274.95,-535290.01 578332.52,-535290.56 578505.33,-535290.79 578591.73,-535262.85 578822.33,-535248.6 578879.9,-535220.1 578894.43,-535191.49 578923.27,-535105.77 578937.91,-535091.64 578995.59,-535063.25 579082.1,-535034.86 579168.62,-535006.48 579255.14,-534992.34 579312.81,-534935.12 579327.23,-534877.9 579327.46,-534820.68 579327.57,-534677.75 579356.86,-534620.53 579385.81,-534592.03 579414.65,-534534.82 579443.6,-534477.71 579472.66,-534420.49 579487.19,-534406.35 579516.03,-534392.22 579602.55,-534306.39 579602.77,-534292.36 579689.29,-534292.7 579775.69,-534297.37 579852.15,-534278.45 579847.68,-534221.23 579833.48,-534206.98 579862.32,-534192.95 579948.73,-534135.74 579948.95,-534121.49 579977.79,-534092.99 580006.63,-534064.6 580093.15,-534036.55 580294.91,-534008.28 580410.27,-533994.14 580496.68,-533965.53 580482.26,-533946.72 580458.11,-533922.45 580410.49,-533893.73 580352.93,-533864.78 580266.63,-533864.67 580208.95,-533878.81 580194.42,-533893.17 580180.11,-533907.42 580165.58,-533921.67 580151.16,-533950.17 580093.48,-533978.55 580035.8,-533992.8 580006.97,-533964.08 579992.55,-533935.47 579992.66,-533878.37 580007.3,-533864.12 580036.14,-533835.62 580064.98,-533807.23 580151.5,-533779.18 580324.42,-533750.57 580353.37,-533750.9 580468.51,-533765.15 580482.81,-533779.62 580497.23,-533793.87 580511.54,-533879.7 580511.32,-533894.06 580497.01,-533908.31 580482.48,-533927.12 580477.9,-533951.72 580640.76,-533980.45 580698.33,-533980.78 580813.58,-533966.75 580899.98,-534023.97 580899.87,-534009.72 580928.71,-534009.83 580957.55,-534024.53 581101.52,-533967.31 581116.06,-533910.09 581130.59,-533910.43 581245.84,-533967.75 581260.03,-533982.12 581274.45,-533996.36 581288.76,-534010.84 581303.18,-534039.56 581360.75,-534040.11 581533.56,-534040.22 581562.4,-534068.94 581619.86,-534083.19 581634.17,-534097.66 581648.59,-534097.66 581677.43,-534069.28 581735.11,-534069.39 581763.95,-534069.39 581792.67,-534055.36 581908.04,-534026.87 581922.46,-533998.26 581951.3,-533969.76 581980.25,-533912.54 581994.78,-533898.4 582023.62,-533869.91 582052.57,-533841.3 582081.41,-533827.16 582167.93,-533712.83 582182.57,-533684.22 582211.53,-533512.57 582226.39,-533498.43 582255.23,-533469.93 582284.19,-533441.33 582313.03,-533412.94 582399.55,-533384.55 582457.23,-533384.66 582486.07,-533413.38 582543.64,-533442.22 582601.09,-533442.33 582658.77,-533442.44 582687.5,-533471.27 582773.91,-533471.6 582889.16,-533443.11 582946.84,-533428.97 583004.41,-533400.36 583018.94,-533314.53 583019.17,-533285.81 582990.44,-533228.48 582961.82,-533142.65 582933.21,-533085.33 582904.59,-533028 582875.97,-532970.78 582876.08,-532856.34 582905.26,-532799.23 582934.21,-532742.02 582963.16,-532684.91 582992.12,-532627.69 583006.76,-532613.55 583035.6,-532585.06 583064.55,-532556.56 583122.23,-532542.31 583179.8,-532342.05 583165.94,-532313.32 583137.21,-532198.89 583137.55,-532170.28 583166.5,-532113.06 583166.61,-532084.45 583166.72,-532055.95 583195.56,-532027.34 583224.52,-531998.85 583253.36,-531913.02 583253.58,-531655.43 583254.36,-531569.71 583283.43,-531541.21 583312.27,-531512.6 583312.38,-531483.88 583312.49,-531312.23 583312.94,-531283.62 583313.05,-531140.57 583313.39,-530997.42 583313.83,-530911.59 583314.06,-530854.37 583314.28,-530768.66 583343.34,-530740.05 583343.34,-530596.89 583329.37,-530582.75 583358.32,-530554.14 583387.16,-530525.64 583416.01,-530511.84 583617.78,-530569.06 583617.56,-530583.64 583675.12,-530598.34 583847.95,-530483.9 583862.59,-530426.79 583891.65,-530398.07 583891.65,-530340.85 583891.88,-530312.25 583891.99,-530169.2 583878.02,-530154.84 583849.18,-530126.12 583820.45,-530111.65 583762.88,-530082.93 583748.57,-529911.16 583720.17,-529796.61 583691.78,-529739.28 583663.05,-529710.56 583634.32,-529567.52 583634.77,-529538.91 583634.88,-529510.3 583620.57,-529496.05 583649.41,-529467.55 583678.25,-529439.06 583707.21,-529424.81 583764.89,-529367.59 583765,-529353.45 583822.68,-529325.18 583937.93,-529325.51 584053.19,-529354.56 584226.01,-529369.15 584341.15,-529340.65 584355.57,-529312.04 584384.52,-529283.43 584384.52,-529254.82 584370.32,-529269.29 584427.9,-529283.65 584442.2,-529298.01 584456.62,-529312.49 584514.2,-529283.76 584499.77,-529197.94 584500.11,-529169.33 584500.11,-529140.72 584500.22,-529112.11 584500.33,-529083.39 584471.6,-529054.67 584442.87,-528997.34 584414.15,-528968.62 584385.42,-528911.4 584371.22,-528897.04 584342.49,-528868.32 584284.92,-528839.6 584256.19,-528810.77 584198.73,-528796.19 584112.32,-528882.01 584112.1,-528881.79 584025.69,-528795.96 584040.22,-528738.86 584054.86,-528738.63 583997.29,-528681.41 583982.98,-528566.87 583968.9,-528552.51 583940.17,-528523.79 583911.44,-528495.07 583853.87,-528466.35 583825.14,-528466.12 583738.73,-528480.26 583709.89,-528280 583696.03,-528222.67 583667.3,-528165.34 583653.1,-528165.23 583595.53,-528136.51 583581.22,-527936.24 583581.67,-527907.74 583610.62,-527879.14 583639.47,-527821.92 583654.11,-527807.78 583682.95,-527779.28 583740.63,-527750.78 583769.58,-527736.54 583827.15,-527679.32 583827.38,-527665.29 583913.79,-527636.9 583971.47,-527608.3 584000.42,-527579.8 584029.26,-527551.3 584058.22,-527551.74 584231.04,-527565.99 584245.35,-527580.47 584259.77,-527595.05 584403.75,-527537.83 584418.28,-527509.33 584447.12,-527337.68 584447.68,-527280.46 584447.79,-527223.24 584476.75,-527166.13 584505.7,-527137.52 584505.81,-527108.92 584505.92,-527080.31 584534.76,-527051.81 584563.72,-526965.98 584563.94,-526937.26 584535.21,-526879.93 584506.59,-526822.6 584492.4,-526808.35 584463.56,-526779.63 584434.83,-526764.83 584262,-526736.11 584247.69,-526707.39 584218.97,-526650.17 584190.24,-526564.23 584161.73,-526535.62 584161.84,-526392.46 584162.18,-526363.85 584147.87,-526349.72 584176.71,-526335.58 584292.07,-526307.08 584306.49,-526249.86 584321.03,-526264.33 584378.71,-526279.03 584522.69,-526250.42 584537.11,-526221.92 584565.95,-526050.27 584580.93,-526036.02 584609.77,-526007.52 584638.61,-525979.02 584696.41,-525979.13 584725.14,-525979.47 584869.23,-525950.97 584898.07,-525951.08 584955.64,-525951.42 585070.9,-525951.86 585214.99,-525951.97 585272.56,-525937.72 585301.41,-525995.05 585315.6,-526009.41 585330.02,-526038.13 585387.59,-526052.49 585401.9,-526066.85 585416.32,-526095.69 585473.9,-526109.93 585488.2,-526167.26 585502.51,-526167.04 585444.83,-526224.26 585430.3,-526310.09 585429.96,-526424.63 585444.16,-526410.5 585501.84,-526411.17 585732.24,-526425.41 585746.55,-526439.89 585760.97,-526454.13 585775.28,-526468.61 585789.7,-526482.85 585804.01,-526511.46 585804.01,-526568.57 585775.06,-526582.93 585760.63,-526597.18 585746.1,-526625.79 585745.99,-526640.15 585760.41,-526654.51 585774.72,-526668.87 585789.14,-526683.23 585803.45,-526740.45 585832.18,-526826.39 585860.69,-526840.86 585875.11,-526855.11 585889.42,-526874.03 585913.67,-526883.83 585932.57,-526826.61 585932.79,-526826.72 585990.36,-526769.61 586004.89,-526741 586005.01,-526712.4 586005.12,-526655.18 586019.65,-526655.51 586134.91,-526712.73 586149.1,-526827.28 586177.61,-526913.22 586206.23,-526927.58 586220.65,-526942.16 586335.79,-526827.72 586336.13,-526813.59 586393.81,-526785.09 586422.65,-526756.59 586451.61,-526727.98 586480.45,-526699.48 586509.29,-526670.98 586538.24,-526642.49 586595.93,-526642.71 586682.34,-526642.81 586711.18,-526642.81 586739.92,-526642.93 586768.76,-526643.04 586797.6,-526657.29 586811.91,-526771.84 586840.42,-526800.44 586840.3,-526857.67 586811.35,-526886.28 586811.24,-526943.5 586825.55,-526929.36 586854.39,-526900.97 586912.06,-526901.18 586998.49,-526915.43 587012.8,-526929.8 587027.22,-526930.03 587113.63,-526901.64 587171.43,-526873.03 587200.27,-526844.53 587229.11,-526844.64 587257.96,-526858.89 587272.27,-526873.36 587286.68,-526887.61 587301,-526973.43 587300.77,-527002.05 587286.35,-527016.63 587372.77,-527031.32 587516.75,-527002.72 587531.18,-526945.5 587545.81,-526945.39 587488.14,-526802.23 587488.57,-526816.81 587546.16,-526831.17 587603.73,-526774.06 587618.26,-526745.46 587632.79,-526745.24 587575.22,-526659.52 587589.75,-526602.3 587604.4,-526588.27 587690.81,-526573.91 587719.66,-526631.24 587733.85,-526688.57 587762.59,-526702.93 587776.89,-526717.29 587791.2,-526731.65 587805.74,-526746.01 587819.94,-526831.84 587834.24,-526832.06 587891.82,-526746.13 587877.62,-526717.41 587848.89,-526574.36 587849.22,-526517.14 587863.87,-526531.84 587979.13,-526546.08 587993.44,-526603.41 588022.06,-526617.89 588036.48,-526646.61 588094.05,-526675.33 588151.51,-526704.27 588237.93,-526704.38 588266.66,-526704.38 588295.5,-526718.74 588309.81,-526775.96 588338.54,-526833.29 588367.16,-526847.76 588381.58,-526862.01 588395.89,-526876.48 588410.31,-526890.73 588424.62,-526948.06 588453.24,-526976.67 588453.13,-527033.89 588438.71,-527048.02 588381.02,-527076.41 588294.5,-527090.66 588279.96,-527147.77 588251.01,-527195.3 588246.31,-527205.21 588322.89,-527147.99 588323.12,-527162.46 588351.85,-527162.57 588380.69,-527162.57 588409.53,-527177.04 588467.11,-527262.98 588481.19,-527377.42 588480.86,-527434.53 588451.9,-527491.74 588422.95,-527506.1 588408.53,-527520.24 588393.99,-527534.6 588379.68,-527548.85 588365.15,-527605.96 588350.62,-527620.21 588292.93,-527619.54 588062.53,-527590.82 588004.95,-527562.1 587976.22,-527557.42 587928.37,-527604.84 587932.85,-527619.2 587947.27,-527633.56 587961.58,-527647.92 587976,-527662.17 587990.31,-527676.65 588004.73,-527705.37 588062.19,-527719.73 588076.5,-527734.09 588090.92,-527748.45 588105.34,-527762.81 588119.65,-527791.64 588177.23,-527805.89 588191.53,-527820.25 588205.96,-527834.61 588220.27,-527848.97 588234.69,-527863.33 588249,-527891.94 588248.88,-527906.19 588234.58,-527920.43 588220.04,-527934.8 588205.62,-527948.93 588191.09,-527963.29 588176.78,-527977.54 588162.24,-527991.79 588147.82,-528020.29 588090.14,-528034.54 588075.72,-528048.79 588061.3,-528063.04 588046.76,-528077.4 588032.34,-528077.28 588003.61,-528077.17 587974.77,-528077.17 587945.93,-528048.34 587888.35,-528019.62 587830.89,-528015.06 587811.89,-528062.37 587816.25,-528076.84 587830.67,-528105.56 587888.24,-528119.92 587902.55,-528134.28 587916.97,-528134.5 587974.66,-528134.5 588003.39,-528149.31 588176.22,-528206.53 588161.57,-528220.77 588147.26,-528235.02 588132.73,-528263.63 588132.62,-528292.24 588132.62,-528378.07 588103.55,-528549.61 588074.26,-528606.83 588045.2,-528621.08 588030.89,-528635.33 588016.35,-528721.16 588001.71,-528735.4 587944.14,-528749.54 587929.6,-528778.15 587915.18,-528792.62 587972.76,-528806.98 587987.07,-528864.31 588015.68,-528892.92 588015.57,-528940.34 588010.88,-528950.14 588029.88,-528921.64 588044.3,-528893.03 588073.26,-528864.54 588102.1,-528807.43 588131.05,-528750.21 588160.12,-528721.71 588188.96,-528635.77 588189.19,-528607.16 588189.3,-528521.45 588218.36,-528464.23 588247.32,-528435.62 588247.43,-528407.01 588247.43,-528378.51 588276.39,-528292.69 588291.03,-528278.55 588319.87,-528249.94 588348.83,-528250.16 588406.4,-528264.41 588420.71,-528293.02 588420.71,-528378.85 588391.64,-528436.07 588391.42,-528579.22 588419.82,-528922.64 588418.92,-528951.25 588418.81,-529037.19 588433.01,-529022.94 588461.85,-529023.28 588577.11,-529037.64 588591.42,-529052 588605.84,-529080.83 588663.42,-529095.19 588720.99,-529037.97 588735.41,-529009.36 588735.52,-528980.75 588706.79,-528866.09 588678.28,-528780.27 588678.51,-528694.44 588678.84,-528608.5 588650.22,-528579.78 588621.49,-528408.01 588593.21,-528322.08 588579.12,-528308.05 588636.7,-528308.16 588694.38,-528322.41 588708.69,-528336.88 588723.11,-528351.13 588737.42,-528365.6 588751.84,-528365.6 588780.69,-528365.71 588809.42,-528380.07 588823.73,-528394.43 588838.15,-528423.15 588895.72,-528423.27 588924.57,-528423.38 588953.3,-528423.49 588982.14,-528423.6 589039.71,-528423.71 589068.56,-528409.46 589126.24,-528380.85 589111.82,-528352.24 589111.93,-528323.63 589126.47,-528309.27 589097.74,-528280.55 589069,-528251.94 589040.27,-528223.22 589011.54,-528223.11 588982.7,-528223 588925.13,-528194.28 588896.39,-528165.56 588867.66,-528136.73 588810.09,-528108.01 588752.52,-528079.29 588723.78,-528050.46 588666.32,-528035.98 588608.64,-528007.38 588594.33,-527950.05 588565.71,-527749.67 588551.84,-527735.42 588580.69,-527706.92 588609.64,-527692.79 588667.33,-527578.35 588681.97,-527521.13 588710.93,-527406.7 588725.68,-527406.92 588783.37,-527349.59 588783.48,-527364.28 588898.63,-527364.39 588927.47,-527364.51 588956.32,-527378.75 588970.63,-527393.23 588985.05,-527421.95 589042.62,-527436.42 589100.2,-527493.64 589099.97,-527479.39 589128.82,-527479.61 589186.5,-527508.33 589243.96,-527508.55 589330.49,-527480.05 589359.34,-527465.92 589445.75,-527437.31 589460.29,-527380.2 589474.82,-527379.98 589417.25,-527351.48 589431.67,-527322.76 589431.78,-527294.15 589431.89,-527265.65 589446.42,-527251.18 589388.85,-527250.96 589302.32,-527250.85 589273.59,-527222.13 589244.86,-527193.41 589187.28,-527164.58 589129.71,-527164.58 589100.98,-527164.46 589072.14,-527135.63 588985.72,-527106.91 588957.1,-527092.33 588870.68,-527035 588856.37,-527006.39 588856.37,-526977.89 588885.33,-526920.67 588914.28,-526863.46 588928.93,-526849.21 588900.2,-526834.51 588813.78,-526777.3 588799.47,-526662.75 588785.38,-526662.64 588727.81,-526634.03 588742.23,-526576.92 588771.18,-526519.7 588800.14,-526348.05 588815.12,-526333.69 588786.39,-526304.97 588728.81,-526290.38 588671.24,-526261.77 588656.82,-526233.05 588642.62,-526219.03 588729.04,-526190.64 588786.72,-526162.03 588815.68,-526133.53 588844.52,-526119.51 588959.78,-526090.9 588974.2,-526033.68 588988.85,-526019.54 589017.69,-526005.29 589075.38,-525976.8 589089.8,-525862.25 589090.13,-525833.64 589090.25,-525776.42 589104.78,-525762.06 589047.2,-525761.84 588960.79,-525775.98 588946.25,-525790.34 588931.94,-525804.59 588917.41,-525818.83 588902.99,-525833.08 588888.57,-525890.3 588874.04,-525904.44 588816.35,-525918.69 588801.82,-525933.05 588787.51,-525961.32 588672.14,-525975.46 588614.45,-526032.68 588614.34,-526018.21 588556.76,-525989.38 588470.35,-525974.68 588355.2,-525917.46 588340.89,-525888.74 588326.58,-525888.97 588384.27,-525860.36 588398.69,-525803.25 588427.64,-525774.64 588456.48,-525717.53 588485.55,-525688.92 588485.55,-525574.38 588471.58,-525560.24 588500.42,-525545.99 588558.11,-525517.38 588572.53,-525488.77 588572.53,-525402.94 588572.86,-525345.73 588587.4,-525331.7 588673.92,-525317.56 588731.5,-525288.84 588717.19,-525260.23 588717.3,-525117.19 588746.48,-525088.58 588746.48,-525059.97 588746.59,-525002.86 588775.54,-524945.64 588804.5,-524888.43 588804.72,-524716.66 588776.44,-524659.33 588762.24,-524659.22 588704.56,-524716.44 588718.75,-524745.05 588718.64,-524830.87 588689.69,-524845.23 588675.27,-524859.37 588660.73,-524873.73 588646.31,-524887.98 588631.89,-524916.48 588617.47,-524916.7 588675.04,-524945.31 588660.51,-524959.56 588646.09,-524973.7 588588.4,-525030.91 588573.87,-525088.02 588544.91,-525116.63 588544.8,-525145.24 588544.69,-525202.46 588515.74,-525216.82 588501.31,-525230.96 588486.89,-525245.32 588472.47,-525259.34 588385.94,-525316.56 588371.41,-525330.81 588356.99,-525359.2 588270.46,-525359.08 588212.89,-525344.39 588097.63,-525315.78 588112.05,-525258.67 588141,-525172.85 588155.76,-525158.49 588126.92,-525144.02 588069.34,-525115.41 588069.46,-525101.16 588098.3,-525087.02 588155.98,-525029.8 588170.52,-524972.58 588185.16,-524972.69 588242.74,-524858.26 588243.07,-524843.9 588185.5,-524843.79 588156.66,-524857.7 588041.4,-524743.15 588027.2,-524714.54 588027.31,-524686.05 588056.15,-524628.83 588085.22,-524600.33 588114.06,-524543.11 588128.71,-524528.98 588157.55,-524514.95 588272.81,-524457.73 588272.92,-524443.48 588301.76,-524443.59 588330.61,-524443.93 588445.86,-524429.68 588503.55,-524372.46 588518.08,-524343.85 588518.08,-524315.24 588503.89,-524329.94 588619.03,-524344.18 588647.76,-524315.69 588662.3,-524229.86 588691.25,-524115.42 588706.12,-524129.67 588677.28,-524129.67 588648.43,-524129.12 588475.6,-524128.78 588331.5,-524114.31 588302.77,-524171.53 588288.12,-524185.89 588273.7,-524200.03 588259.17,-524257.24 588244.75,-524257.13 588187.06,-524228.41 588172.75,-524171.19 588158.56,-524185.44 588129.71,-524199.69 588115.18,-524342.74 588086,-524399.96 588071.47,-524385.37 587956.21,-524370.9 587927.48,-524428.12 587912.83,-524599.66 587883.55,-524685.49 587854.48,-524699.85 587840.17,-524713.99 587825.64,-524828.42 587810.99,-524828.2 587695.73,-524770.87 587681.42,-524742.26 587681.54,-524685.05 587710.49,-524599.33 587739.56,-524542.22 587768.51,-524513.61 587797.35,-524456.51 587826.42,-524342.07 587855.49,-524284.85 587855.6,-524227.52 587841.4,-524213.27 587812.67,-524198.69 587755.1,-523998.32 587741.23,-523912.49 587741.46,-523883.88 587770.3,-523855.38 587799.14,-523826.88 587828.1,-523798.16 587828.21,-523740.94 587828.32,-523712.45 587857.16,-523655.34 587886.23,-523626.73 587915.07,-523569.51 587929.72,-523555.6 588044.97,-523555.71 588102.55,-523584.54 588160.12,-523613.26 588217.69,-523627.62 588232,-523641.98 588246.43,-523656.34 588260.73,-523670.7 588275.16,-523685.17 588361.57,-523627.96 588347.26,-523599.35 588347.37,-523570.63 588347.37,-523513.41 588333.18,-523499.05 588304.45,-523470.33 588275.71,-523470.33 588246.87,-523470.1 588160.46,-523469.77 588045.2,-523469.66 588016.35,-523440.72 587901.21,-523440.6 587872.48,-523469.1 587814.68,-523497.6 587757,-523526.1 587699.31,-523540.24 587684.78,-523554.6 587670.47,-523568.84 587655.94,-523583.09 587641.51,-523597.34 587612.67,-523568.62 587598.36,-523540.01 587569.63,-523482.57 587540.9,-523425.35 587512.28,-523339.42 587498.2,-523325.28 587527.04,-523296.78 587584.72,-523268.28 587642.41,-523239.78 587671.25,-523240.12 587815.35,-523240.23 587844.19,-523211.73 587873.04,-523183.46 588017.14,-523183.68 588103.67,-523198.37 588247.65,-523255.59 588261.85,-523270.06 588276.27,-523270.29 588362.69,-523241.79 588420.38,-523227.65 588506.79,-523313.59 588506.57,-523313.7 588564.25,-523370.92 588564.03,-523356.78 588621.72,-523356.89 588650.56,-523371.25 588664.87,-523385.61 588679.29,-523399.86 588693.6,-523457.19 588707.91,-523457.3 588765.48,-523543.24 588765.26,-523543.46 588880.52,-523600.79 588894.72,-523686.73 588908.92,-523686.95 588995.33,-523705.88 589005.06,-523715.9 589110.48,-523773.12 589110.37,-523759.2 589225.63,-523744.95 589283.32,-523687.73 589283.43,-523687.51 589225.85,-523630.29 589225.96,-523630.18 589168.39,-523544.24 589154.19,-523487.02 589139.99,-523472.66 589111.15,-523458.08 589053.58,-523315.04 589054.02,-523300.56 588967.61,-523285.98 588881.19,-523257.26 588866.88,-523056.89 588853.02,-523071.47 588939.44,-523100.63 589112.27,-523100.86 589198.69,-523101.19 589342.68,-523115.66 589400.25,-523058.44 589400.48,-523058.56 589458.05,-523029.84 589443.74,-522915.4 589429.66,-522900.93 589372.08,-522872.21 589314.51,-522843.26 589199.36,-522843.15 589170.51,-522842.93 589084.1,-522828.35 588997.79,-522885.57 588997.57,-522870.98 588853.58,-522842.26 588824.85,-522842.15 588796,-522842.04 588738.43,-522827.46 588680.86,-522770.24 588680.97,-522756.32 588796.23,-522727.94 588911.6,-522699.88 589113.39,-522671.5 589171.07,-522642.89 589199.92,-522643.11 589286.33,-522672.17 589430.33,-522672.28 589459.17,-522658.14 589574.43,-522600.92 589574.54,-522615.39 589603.39,-522615.73 589747.38,-522616.17 589891.48,-522645 589977.79,-522659.7 590150.63,-522602.48 590150.85,-522603.04 590352.53,-522574.43 590366.95,-522545.93 590395.8,-522460.1 590396.02,-522374.16 590381.93,-522373.94 590295.51,-522345.33 590281.09,-522288 590252.47,-522259.28 590223.74,-522201.95 590209.54,-522216.54 590267.12,-522216.65 590324.69,-522188.15 590353.65,-522188.26 590411.22,-522188.37 590440.07,-522159.76 590468.91,-522131.38 590526.6,-522131.38 590555.44,-522131.49 590584.29,-522102.99 590641.97,-522088.85 590699.66,-522060.24 590714.08,-522031.63 590742.93,-521974.53 590771.88,-521946.03 590800.84,-521917.42 590829.68,-521888.92 590858.64,-521803.09 590873.28,-521788.96 590930.97,-521775.04 591075.08,-521717.71 591075.19,-521703.58 591104.03,-521689.33 591161.72,-521660.83 591176.14,-521632.22 591205.1,-521575.11 591234.05,-521517.89 591263.01,-521460.79 591291.96,-521432.18 591320.81,-521375.07 591335.45,-521360.82 591364.3,-521346.57 591421.99,-521289.36 591422.1,-521289.58 591479.79,-521203.64 591465.48,-521146.42 591465.7,-521031.98 591494.77,-520974.77 591509.41,-520960.74 591595.94,-520932.24 591624.79,-520903.74 591682.48,-520875.25 591740.16,-520875.58 591826.59,-520875.8 591913.12,-520847.31 591970.81,-520818.7 591999.65,-520804.56 592057.34,-520775.95 592071.76,-520747.45 592100.61,-520690.23 592129.56,-520661.74 592158.52,-520490.08 592173.39,-520475.83 592202.23,-520447.33 592231.19,-520418.73 592260.03,-520390.23 592288.99,-520361.62 592317.83,-520333.12 592346.68,-520319.09 592462.05,-520290.49 592476.48,-520261.99 592505.32,-520204.77 592534.28,-520176.27 592563.23,-520147.66 592563.35,-520118.94 592549.03,-520104.8 592577.88,-520076.2 592606.72,-520062.06 592664.41,-520033.45 592678.84,-520004.84 592707.79,-519947.62 592722.33,-519933.48 592751.17,-519933.82 592866.44,-519933.93 592895.28,-519905.43 592952.97,-519891.29 593039.39,-519862.68 593053.93,-519834.19 593082.77,-519776.97 593111.73,-519748.47 593140.68,-519719.86 593140.68,-519691.25 593140.8,-519634.03 593169.75,-519605.54 593198.71,-519576.93 593227.55,-519548.43 593256.4,-519491.21 593271.04,-519477.41 593444,-519448.91 593472.85,-519434.77 593559.38,-519320.22 593559.6,-519305.86 593530.87,-519305.75 593473.29,-519320 593458.76,-519377.22 593444.23,-519391.02 593271.27,-519390.8 593184.85,-519390.8 593156.11,-519419.19 593069.58,-519419.08 593040.73,-519418.97 593011.89,-519433.21 592997.47,-519447.57 592983.04,-519461.82 592968.51,-519476.07 592954.09,-519504.57 592896.4,-519518.82 592881.98,-519633.14 592852.8,-519647.5 592838.37,-519676 592780.69,-519690.25 592766.26,-519704.5 592751.84,-519733 592694.15,-519732.66 592550.04,-519732.55 592521.2,-519746.8 592506.77,-519761.05 592492.35,-519760.83 592405.93,-519732.11 592377.2,-519703.5 592348.47,-519703.28 592290.78,-519703.16 592233.2,-519674.44 592204.47,-519674.33 592146.89,-519674.22 592118.05,-519659.75 592089.2,-519716.97 592089.09,-519716.74 592002.67,-519802.68 592016.76,-519817.04 592031.18,-519831.4 592045.49,-519945.95 592059.69,-519945.73 592002,-520031.67 592001.77,-520031.45 591944.2,-520088.66 591943.97,-520102.91 591886.4,-520131.41 591828.71,-520145.44 591742.18,-520231.26 591727.53,-520245.51 591713.11,-520245.29 591626.69,-520245.29 591597.85,-520273.68 591540.16,-520287.93 591525.62,-520302.29 591511.31,-520330.67 591453.51,-520359.06 591366.98,-520373.31 591352.56,-520387.67 591338.14,-520387.44 591251.72,-520372.86 591194.14,-520430.08 591179.5,-520444.44 591165.07,-520444.33 591136.34,-520444.22 591107.5,-520472.72 591020.97,-520486.85 591006.54,-520501.21 590992.12,-520501.1 590934.43,-520472.38 590905.7,-520457.8 590819.28,-520400.58 590819.51,-520414.83 590790.66,-520443.22 590732.98,-520457.35 590675.29,-520543.29 590689.37,-520571.9 590689.26,-520586.26 590674.95,-520600.4 590660.42,-520629.01 590660.31,-520800.77 590659.86,-520815.13 590645.44,-520829.38 590631.02,-520886.49 590602.06,-520900.85 590587.64,-520914.99 590573.11,-520929.35 590558.68,-520957.85 590501,-520972.09 590486.57,-520986.34 590472.15,-521000.59 590457.62,-521057.81 590443.2,-521057.59 590385.51,-521114.92 590385.4,-521129.06 590327.71,-521143.3 590313.18,-521157.66 590298.87,-521171.8 590284.33,-521186.16 590269.91,-521200.41 590255.49,-521214.66 590241.07,-521214.66 590212.23,-521199.97 590096.96,-521247.5 590106.69,-521257.3 590125.7,-521285.9 590125.58,-521285.79 590096.74,-521266.98 590086.9,-521271.43 590068.01,-521285.68 590053.48,-521300.04 590039.17,-521299.93 590010.32,-521271.21 589952.75,-521270.88 589837.49,-521285.01 589779.91,-521342.12 589765.27,-521399.34 589736.31,-521413.7 589721.89,-521427.84 589707.36,-521456.45 589707.36,-521485.06 589707.24,-521570.88 589678.18,-521585.24 589663.75,-521599.27 589577.34,-521656.49 589577.11,-521670.62 589490.7,-521684.76 589461.85,-521656.15 589447.43,-521570.21 589433.34,-521584.24 589289.24,-521612.63 589231.55,-521641.13 589173.87,-521655.37 589159.33,-521669.73 589144.91,-521683.87 589130.49,-521741.09 589115.96,-521740.98 589058.38,-521798.2 589058.16,-521812.45 589000.47,-521840.83 588942.79,-521855.08 588928.26,-521869.44 588913.95,-521869.33 588885.1,-521840.61 588856.37,-521826.03 588769.95,-521883.24 588755.31,-521897.49 588741,-521911.74 588726.47,-521968.96 588697.51,-521983.21 588683.09,-521982.99 588596.67,-521968.52 588539.1,-522025.73 588538.99,-522039.98 588481.3,-522068.37 588423.62,-522068.37 588394.77,-522039.65 588366.04,-522025.18 588337.31,-522082.4 588337.09,-522096.64 588279.4,-522125.14 588221.72,-522139.17 588164.15,-522196.39 588149.5,-522210.75 588135.08,-522239.02 587990.98,-522253.16 587976.44,-522267.52 587962.02,-522267.41 587933.29,-522267.3 587875.61,-522281.43 587861.19,-522295.79 587846.77,-522310.04 587832.23,-522324.29 587817.81,-522338.54 587803.39,-522395.76 587788.86,-522395.65 587731.28,-522452.87 587716.64,-522467.12 587702.22,-522491.05 587654.37,-522509.86 587644.53,-522509.75 587615.69,-522481.14 587615.8,-522471.46 587634.7,-522452.53 587630.22,-522395.31 587630.34,-522338.21 587659.29,-522280.99 587673.93,-522281.1 587731.51,-522223.99 587746.04,-522166.78 587760.69,-522152.53 587789.53,-522124.14 587847.21,-522100.1 587894.95,-522081.28 587905.01,-522081.39 587962.58,-522052.9 587977,-521967.07 588006.07,-521909.85 588006.18,-521823.91 587992.1,-521838.83 588193.77,-521853.08 588208.08,-521867.55 588222.5,-521881.8 588236.81,-521896.27 588251.23,-521924.99 588308.69,-521939.35 588337.54,-521910.74 588351.96,-521853.63 588380.91,-521825.02 588381.02,-521796.3 588352.29,-521710.37 588338.1,-521724.61 588309.25,-521738.86 588280.41,-521710.14 588266.1,-521681.53 588237.37,-521624.2 588223.17,-521624.43 588309.59,-521567.21 588309.7,-521581.68 588338.54,-521581.68 588367.27,-521567.77 588511.38,-521481.94 588511.6,-521467.8 588569.28,-521439.53 588684.66,-521411.03 588742.34,-521411.14 588771.07,-521439.86 588828.65,-521454.11 588842.96,-521468.58 588857.38,-521482.94 588886.11,-521425.72 588900.64,-521282.68 588915.51,-521297.26 589030.77,-521311.95 589174.76,-521283.34 589189.18,-521254.85 589218.03,-521197.63 589247.09,-521169.02 589247.09,-521083.19 589247.32,-521054.69 589276.27,-521026.08 589290.81,-521035.77 589242.96,-521054.58 589233.12,-521040.11 589175.43,-521040 589117.86,-521054.14 589103.33,-521068.5 589089.02,-521082.75 589074.48,-521097.11 589060.06,-521125.49 589002.38,-521125.16 588887.12,-521125.16 588858.27,-521138.96 588685.44,-521196.18 588670.79,-521210.43 588656.37,-521238.82 588569.96,-521253.07 588555.42,-521267.31 588541,-521267.09 588454.58,-521238.48 588425.85,-521209.76 588397.12,-521181.04 588368.39,-521152.32 588339.66,-521137.96 588310.93,-521223.79 588325.02,-521238.26 588339.44,-521252.51 588353.75,-521309.73 588353.52,-521366.95 588339.1,-521381.19 588281.42,-521380.86 588166.16,-521380.64 588108.58,-521394.44 587906.8,-521365.72 587892.49,-521337 587863.76,-521251.17 587835.14,-521165.23 587835.36,-521108.02 587835.59,-521079.3 587806.86,-521022.08 587806.97,-520993.58 587835.81,-520964.97 587850.34,-520950.61 587821.61,-520921.89 587764.04,-520907.2 587648.89,-520878.48 587634.47,-520821.26 587634.58,-520764.04 587649.23,-520764.48 587793.33,-520735.76 587778.91,-520621.33 587764.93,-520607.3 587851.35,-520607.52 587966.61,-520636.47 588081.75,-520650.83 588096.06,-520665.19 588110.48,-520694.02 588196.79,-520694.24 588254.47,-520694.24 588283.32,-520723.07 588340.78,-520723.41 588456.04,-520694.8 588484.99,-520680.66 588542.57,-520652.05 588557.1,-520623.55 588585.94,-520594.94 588614.78,-520566.45 588643.74,-520509.23 588672.69,-520480.73 588701.54,-520452.12 588701.65,-520404.59 588677.5,-520409.04 588629.77,-520423.18 588615.23,-520437.54 588600.92,-520466.04 588543.24,-520465.93 588514.39,-520465.59 588399.13,-520465.59 588370.29,-520465.48 588341.56,-520465.37 588312.72,-520436.43 588168.73,-520407.59 588082.31,-520392.9 587996.01,-520364.29 587996.01,-520350.15 588024.96,-520321.66 588053.81,-520293.05 588082.65,-520264.55 588111.6,-520250.3 588169.18,-520221.69 588183.71,-520164.58 588198.24,-520164.69 588255.93,-520136.09 588255.93,-520135.75 588140.67,-520078.53 588126.47,-520021.2 588112.27,-520035.45 588083.43,-520049.7 588068.9,-520106.92 588039.94,-520164.03 588010.99,-520178.39 587996.57,-520206.66 587881.2,-520220.91 587866.78,-520235.27 587852.35,-520249.41 587837.82,-520306.63 587823.4,-520320.88 587765.72,-520320.65 587708.03,-520305.96 587564.04,-520277.35 587549.62,-520220.02 587549.84,-520191.52 587564.38,-520205.66 587506.69,-520219.91 587492.27,-520277.02 587463.21,-520362.84 587434.25,-520377.2 587419.83,-520391.34 587390.99,-520334.01 587376.68,-520219.58 587377.01,-520133.86 587405.97,-520105.25 587434.92,-520048.14 587463.88,-519990.92 587492.83,-519933.82 587521.78,-519847.99 587536.43,-519833.85 587594.11,-519805.36 587623.07,-519776.75 587651.91,-519748.25 587680.75,-519719.64 587709.71,-519691.25 587767.39,-519662.64 587796.24,-519648.51 587853.92,-519619.9 587868.34,-519505.46 587883.1,-519491.1 587854.37,-519490.77 587739.11,-519519.26 587681.42,-519547.76 587623.74,-519561.9 587566.05,-519619.12 587565.94,-519618.9 587479.53,-519676 587464.88,-519690.36 587450.46,-519704.39 587364.05,-519618.56 587349.74,-519589.84 587321.01,-519532.51 587292.39,-519503.79 587263.66,-519389.24 587249.57,-519403.6 587220.73,-519417.63 587163.04,-519436.55 587172.88,-519446.46 587220.62,-519503.68 587206.08,-519703.94 587176.68,-519789.66 587147.62,-519846.88 587133.08,-519846.77 587075.51,-519903.98 587075.4,-519918.12 587017.72,-519918.01 586960.03,-519917.9 586931.3,-519946.4 586844.78,-519960.53 586830.24,-520017.75 586830.13,-520103.69 586858.64,-520161.02 586887.37,-520218.35 586915.99,-520332.9 586930.18,-520333.01 586987.76,-520390.34 587001.95,-520504.78 587016.15,-520490.64 587044.99,-520490.75 587073.72,-520505 587088.14,-520519.47 587102.45,-520533.72 587116.88,-520590.94 587116.65,-520619.55 587116.54,-520705.48 587145.16,-520719.96 587159.58,-520734.21 587173.89,-520748.57 587188.31,-520762.93 587202.62,-520791.53 587202.62,-520905.97 587187.86,-520891.5 587101.56,-520891.39 587072.72,-520891.28 587043.88,-520862.56 586986.3,-520862.22 586871.05,-520876.47 586856.63,-520923.89 586851.93,-520948.38 586986.08,-520962.74 587000.39,-521019.96 587029.12,-521134.51 587028.78,-521191.73 587014.25,-521191.95 587100.67,-521134.62 587100.78,-521149.09 587129.62,-521177.92 587187.19,-521192.17 587201.5,-521206.53 587215.92,-521220.89 587230.23,-521306.83 587258.74,-521335.44 587258.74,-521392.66 587244.21,-521378.19 587186.63,-521349.58 587157.9,-521335 587100.33,-521392.21 587100.11,-521406.35 587013.69,-521420.49 586956.01,-521449.1 586955.9,-521449.43 587099.99,-521506.76 587114.19,-521592.7 587128.39,-521607.4 587272.38,-521621.64 587286.69,-521707.69 587315.31,-521822.13 587314.97,-521907.96 587300.44,-521921.98 587185.18,-521936.23 587170.65,-521950.48 587156.23,-521964.73 587141.8,-522021.95 587141.58,-522079.28 587155.89,-522079.39 587213.46,-522136.61 587198.93,-522222.44 587169.86,-522236.68 587155.44,-522250.93 587141.02,-522265.29 587126.6,-522265.07 587040.19,-522250.49 586953.77,-522307.71 586967.97,-522336.32 586967.86,-522350.68 586953.44,-522364.81 586939.02,-522379.17 586924.59,-522378.84 586809.34,-522364.37 586751.77,-522307.04 586737.46,-522278.43 586708.73,-522192.49 586680.11,-522135.16 586665.91,-522120.8 586608.34,-522106.22 586550.77,-522020.39 586550.99,-522005.92 586464.69,-521991.34 586407,-522048.55 586392.47,-522162.99 586377.83,-522177.68 586492.97,-522191.93 586507.28,-522363.7 586506.83,-522378.06 586492.41,-522392.2 586477.99,-522406.56 586463.57,-522420.81 586449.04,-522592.46 586419.75,-522606.71 586405.44,-522606.6 586347.75,-522577.88 586319.02,-522577.77 586290.18,-522592.02 586275.76,-522649.23 586261.23,-522663.82 586347.64,-522692.76 586462.79,-522707.01 586477.1,-522792.95 586476.87,-522807.2 586462.45,-522821.45 586447.92,-522878.55 586418.96,-522964.38 586404.43,-522964.49 586433.16,-522907.27 586433.39,-522893.14 586462.23,-522864.64 586519.91,-522836.03 586548.75,-522836.36 586664.01,-522850.72 586678.32,-522907.94 586692.63,-522922.52 586750.2,-522936.77 586764.51,-523079.93 586793.02,-523108.54 586792.9,-523122.9 586778.48,-523151.4 586720.8,-523165.53 586706.27,-523222.75 586677.31,-523237 586662.89,-523236.78 586576.48,-523207.95 586490.17,-523207.84 586461.33,-523222.08 586432.49,-523193.36 586418.18,-523164.75 586389.45,-523136.03 586360.72,-523107.31 586331.99,-522992.77 586317.91,-522992.99 586375.48,-522964.38 586375.59,-522950.02 586346.86,-522921.19 586289.29,-522892.58 586260.56,-522877.77 586116.57,-522906.49 586130.77,-522920.85 586145.19,-522949.57 586202.76,-522963.93 586217.07,-523049.76 586216.85,-523106.98 586216.74,-523121.45 586231.16,-523121.45 586259.89,-523107.2 586288.73,-523193.14 586302.93,-523279.08 586331.43,-523293.44 586345.85,-523307.8 586403.43,-523365.13 586403.31,-523365.13 586432.16,-523336.52 586446.58,-523279.41 586461.11,-523293.77 586489.95,-523322.72 586605.1,-523337.08 586619.4,-523351.44 586633.83,-523380.16 586691.4,-523394.52 586705.71,-523451.85 586734.33,-523466.21 586748.75,-523480.57 586763.06,-523537.79 586791.67,-523623.73 586820.29,-523638.2 586834.71,-523652.45 586849.02,-523709.78 586877.64,-523824.32 586891.84,-523838.13 586690.17,-523866.51 586603.64,-523866.4 586574.8,-523851.71 586459.66,-523880.43 586473.85,-523909.04 586473.85,-523966.26 586459.32,-523952.01 586488.16,-523952.23 586574.58,-523981.06 586632.15,-523995.31 586646.46,-524009.78 586660.88,-524024.03 586675.19,-524052.64 586675.08,-524081.25 586660.66,-524081.36 586718.23,-524024.14 586718.45,-524038.72 586804.75,-524053.08 586819.18,-524067.44 586833.48,-524081.69 586847.79,-524139.02 586876.52,-524153.49 586890.94,-524167.85 586948.52,-524225.18 586962.71,-524239.54 586977.14,-524253.79 586991.45,-524268.27 587005.87,-524282.51 587020.18,-524311.23 587034.48,-524325.37 586976.91,-524339.62 586962.38,-524353.98 586947.96,-524382.37 586861.43,-524396.51 586847.01,-524453.83 586846.79,-524511.05 586861.1,-524496.92 586889.94,-524468.42 586947.62,-524468.53 587005.31,-524483.11 587091.72,-524540.33 587077.08,-524554.58 587062.66,-524568.83 587048.12,-524583.19 587033.81,-524597.21 586976.13,-524625.93 586990.44,-524640.29 587004.75,-524654.54 587019.17,-524711.87 587033.48,-524711.98 587091.05,-524769.31 587090.83,-524769.43 587148.51,-524826.75 587162.71,-524855.36 587177.13,-524869.5 587090.6,-524883.75 587076.07,-524912.25 587061.65,-524926.83 587119.22,-524941.08 587133.53,-524955.44 587147.95,-524984.38 587234.37,-525013.1 587291.83,-525027.46 587306.25,-525141.9 587320.34,-525127.54 587291.61,-525127.54 587262.76,-525155.93 587176.24,-525155.82 587147.39,-525126.98 587061.09,-525098.26 587032.36,-525069.54 587003.63,-525069.54 586974.79,-525083.68 586945.95,-525026.46 586946.17,-525040.71 586917.22,-525040.6 586888.49,-525026.02 586802.07,-525083.24 586801.96,-525083.24 586773.12,-525026.02 586773.23,-525040.15 586715.66,-525040.04 586686.81,-525039.82 586571.56,-525053.96 586557.03,-525068.32 586542.6,-525096.82 586485.03,-525135.59 586410.88,-525183.98 586371.45,-525202.4 586300.32,-525237.65 586252.25,-525283.13 586156.43,-525324.15 586174.02,-525406.19 586161,-525434.67 586128.42,-525439.12 586109.53,-525453.37 586095,-525510.59 586066.04,-525567.7 586051.51,-525567.47 585936.26,-525481.54 585922.06,-525366.99 585893.55,-525281.05 585865.05,-525195.11 585836.43,-525109.17 585822.34,-525109.06 585764.66,-525051.73 585750.35,-525023.12 585721.62,-524994.4 585692.89,-524965.68 585664.16,-524908.46 585649.96,-524922.6 585592.39,-524922.49 585534.71,-524893.66 585448.41,-524864.71 585361.99,-524849.91 585189.28,-524907.13 585189.06,-524892.88 585160.33,-524864.16 585131.6,-524835.33 585074.03,-524806.27 584901.2,-524777.33 584786.06,-524748.61 584757.33,-524734.03 584671.03,-524705.42 584656.61,-524648.09 584642.42,-524648.31 584728.83,-524619.7 584714.41,-524590.98 584685.68,-524505.04 584657.17,-524419.1 584628.55,-524390.49 584599.82,-524304.56 584600.05,-524218.73 584600.38,-524161.51 584600.49,-524104.29 584600.61,-524018.35 584586.52,-524018.24 584528.95,-523903.69 584514.75,-523846.36 584486.14,-523817.76 584457.41,-523674.6 584457.74,-523645.99 584457.85,-523617.38 584457.97,-523560.27 584486.92,-523445.73 584487.25,-523388.51 584487.37,-523331.4 584516.32,-523274.18 584545.27,-523188.35 584560.03,-523174.22 584588.87,-523160.08 584675.28,-523217.3 584675.17,-523203.16 584704.01,-523203.27 584732.85,-523203.38 584790.42,-523174.88 584848.1,-523146.39 584876.95,-523117.78 584905.9,-523089.5 585021.15,-523075.37 585078.83,-523046.76 585093.26,-522875.1 585108.24,-522889.24 585050.55,-522903.49 585036.02,-522960.71 585021.6,-522946.23 584935.19,-522945.46 584675.84,-522959.26 584474.18,-523016.37 584459.53,-523073.58 584445.11,-523073.36 584358.59,-523130.58 584358.48,-523130.47 584300.91,-523187.69 584300.68,-523187.58 584243.11,-523158.85 584228.69,-523072.92 584200.07,-523044.2 584171.34,-522929.76 584171.68,-522844.04 584200.74,-522815.43 584229.7,-522786.94 584258.54,-522672.5 584273.29,-522658.36 584302.13,-522644.22 584388.66,-522587.01 584403.08,-522529.79 584432.14,-522472.68 584446.68,-522458.21 584389.11,-522457.88 584245.01,-522471.9 584187.44,-522386.08 584173.13,-522300.14 584159.05,-522300.03 584101.48,-522242.7 584087.17,-522185.48 584072.97,-522185.25 584015.29,-522156.65 584000.98,-522099.43 583986.78,-522099.2 583929.1,-522070.6 583914.79,-521927.44 583900.82,-521927.22 583843.14,-521812.78 583829.05,-521755.45 583814.86,-521741.31 583843.7,-521712.81 583872.54,-521712.81 583901.38,-521741.65 583958.95,-521741.76 583987.68,-521741.87 584045.36,-521742.2 584189.34,-521728.07 584247.02,-521642.24 584247.25,-521627.88 584218.52,-521627.77 584189.68,-521627.66 584132.11,-521613.07 584045.7,-521584.35 584031.28,-521527.02 584002.66,-521498.41 584002.77,-521355.37 584031.95,-521326.87 584046.48,-521326.65 583988.8,-521240.82 583974.6,-521212.1 583945.87,-521154.88 583931.67,-521140.52 583902.94,-521125.94 583845.37,-521068.72 583831.07,-521040 583802.34,-521011.28 583773.61,-520954.06 583744.88,-520925.34 583716.15,-520724.97 583702.4,-520710.83 583731.24,-520711.5 583990.47,-520740.22 584048.04,-520754.58 584062.35,-520768.94 584076.77,-520797.77 584163.18,-520812.13 584177.49,-520826.49 584191.91,-520840.74 584206.22,-520855.21 584220.64,-520855.43 584335.78,-520855.65 584393.46,-520884.49 584479.76,-520884.6 584537.45,-520884.71 584566.18,-520913.54 584652.59,-520927.79 584666.9,-520942.26 584681.32,-520956.51 584695.63,-520970.98 584710.05,-520970.98 584738.89,-520942.71 584854.14,-520928.46 584911.82,-520899.96 584926.24,-520842.74 584940.89,-520828.49 584969.73,-520799.99 584998.57,-520771.5 585027.52,-520757.25 585085.1,-520728.64 585099.63,-520671.42 585114.16,-520657.28 585143,-520643.03 585200.68,-520585.93 585215.22,-520557.32 585229.75,-520542.96 585201.02,-520542.62 585085.77,-520542.51 585028.08,-520542.4 584999.35,-520570.9 584941.56,-520585.15 584927.14,-520599.4 584912.72,-520599.17 584797.46,-520570.34 584739.89,-520541.62 584711.16,-520541.4 584624.75,-520555.43 584538.34,-520526.82 584523.92,-520469.6 584524.03,-520440.99 584552.99,-520383.88 584581.94,-520326.66 584610.89,-520269.56 584639.84,-520126.51 584640.29,-520097.79 584611.45,-519926.03 584583.17,-519868.7 584554.55,-519811.37 584540.35,-519797.01 584511.51,-519768.4 584482.78,-519739.68 584454.05,-519725.21 584396.48,-519582.05 584382.4,-519496.22 584382.62,-519439 584411.57,-519381.9 584440.53,-519353.18 584440.64,-519324.57 584440.75,-519296.07 584469.59,-519181.63 584498.77,-519153.02 584498.77,-519095.8 584484.57,-519081.56 584513.41,-519053.17 584599.94,-519024.89 584715.3,-519025.01 584744.03,-519039.25 584758.45,-519053.61 584772.87,-519067.98 584801.6,-519039.48 584816.02,-518982.26 584844.97,-518925.04 584859.62,-518924.93 584801.94,-518896.21 584787.63,-518867.6 584758.9,-518810.27 584730.17,-518752.94 584701.55,-518609.9 584701.89,-518524.07 584730.95,-518466.85 584745.6,-518467.18 584860.85,-518438.57 584875.27,-518324.14 584875.49,-518266.81 584846.87,-518209.48 584832.68,-518195.23 584803.95,-518166.51 584775.22,-518151.93 584688.81,-518094.71 584703.34,-518066.1 584703.34,-518037.49 584703.45,-517894.44 584732.63,-517808.73 584761.69,-517722.9 584776.34,-517708.65 584805.18,-517680.15 584834.13,-517651.55 584862.97,-517623.05 584891.93,-517594.55 584920.77,-517565.94 584949.61,-517566.05 584978.45,-517594.88 585064.75,-517623.72 585151.16,-517624.05 585266.42,-517595.66 585352.94,-517581.53 585439.35,-517524.31 585439.46,-517524.08 585381.89,-517466.87 585367.58,-517438.15 585338.85,-517352.21 585324.77,-517366.46 585267.09,-517380.59 585209.4,-517351.87 585194.98,-517294.54 585166.37,-517265.94 585137.64,-517208.72 585137.75,-517151.39 585137.97,-517094.17 585138.08,-517037.06 585167.04,-517008.45 585195.99,-516979.96 585224.83,-516951.35 585224.94,-516922.74 585224.94,-516836.91 585254.01,-516808.41 585282.96,-516779.8 585311.8,-516722.7 585340.76,-516694.09 585369.6,-516636.98 585398.55,-516579.76 585413.19,-516579.87 585470.88,-516522.65 585470.99,-516508.63 585557.4,-516480.13 585586.36,-516465.99 585701.61,-516437.5 585716.03,-516408.89 585744.98,-516351.78 585773.94,-516294.56 585788.47,-516280.31 585817.31,-516251.81 585846.26,-516237.68 585932.68,-516180.46 585932.9,-516166.32 585961.74,-516166.54 586077,-516180.9 586105.73,-516152.29 586120.15,-516123.69 586120.26,-516095.08 586120.26,-516066.58 586149.21,-516009.36 586163.75,-515995.22 586221.43,-515981.2 586336.69,-515952.59 586351.11,-515895.37 586365.75,-515881.01 586308.18,-515852.29 586279.45,-515852.18 586250.61,-515880.68 586192.92,-515894.7 586106.51,-515722.94 586106.96,-515722.82 586049.27,-515636.89 586035.08,-515522.45 586006.57,-515493.73 586006.68,-515465.23 586035.52,-515379.4 586064.59,-515350.91 586093.43,-515265.08 586108.08,-515250.94 586165.76,-515222.55 586223.44,-515194.06 586281.13,-515165.45 586310.08,-515151.31 586367.76,-515122.7 586382.19,-514950.93 586382.63,-514922.33 586353.9,-514836.39 586354.13,-514807.89 586382.97,-514750.67 586383.08,-514721.95 586354.35,-514693.34 586354.46,-514607.51 586383.53,-514578.91 586383.53,-514550.18 586354.8,-514521.58 586326.07,-514464.25 586311.87,-514449.89 586283.14,-514435.41 586225.57,-514406.81 586239.99,-514378.2 586254.52,-514363.84 586196.95,-514349.36 586139.38,-514320.64 586124.96,-514263.31 586096.23,-514206.1 586096.45,-514177.49 586096.56,-514148.77 586067.83,-514091.55 586067.94,-514063.05 586096.79,-514034.44 586125.74,-514005.94 586154.58,-513891.4 586154.92,-513834.18 586140.72,-513819.82 586111.88,-513791.1 586083.15,-513762.38 586025.58,-513733.66 585968.12,-513704.82 585910.54,-513676.1 585852.97,-513675.99 585795.4,-513704.38 585737.61,-513718.63 585723.18,-513732.99 585708.76,-513747.13 585694.23,-513761.49 585679.92,-513775.74 585665.39,-513832.84 585636.44,-513918.67 585607.37,-514004.5 585578.42,-514018.75 585564,-514032.99 585549.46,-514047.35 585535.04,-514061.6 585520.62,-514075.85 585506.2,-514089.88 585419.68,-514147.1 585405.15,-514161.46 585390.72,-514175.59 585376.3,-514232.81 585347.24,-514247.17 585332.93,-514275.56 585246.41,-514275.11 585102.31,-514246.28 585016.01,-514231.81 584958.33,-514174.48 584944.13,-514145.87 584915.4,-513945.5 584915.85,-513859.67 584916.07,-513802.45 584916.18,-513773.84 584945.14,-513745.34 584973.98,-513688.13 584988.62,-513673.99 585017.46,-513645.38 585046.3,-513616.88 585075.26,-513616.99 585132.83,-513631.35 585190.4,-513545.53 585205.04,-513517.03 585233.89,-513431.2 585234.11,-513402.48 585205.38,-513316.54 585176.76,-513287.82 585148.03,-513259.21 585119.3,-513230.49 585090.57,-513201.77 585061.84,-513173.05 585033.11,-513144.44 585004.38,-513115.72 584975.65,-513087 584946.92,-513029.67 584918.2,-512886.52 584889.8,-512771.97 584861.3,-512714.75 584861.41,-512686.14 584875.94,-512686.03 584818.37,-512657.42 584832.79,-512628.92 584861.63,-512600.31 584890.58,-512428.66 584919.76,-512371.55 584948.71,-512314.33 584977.67,-512285.84 584992.2,-512285.61 584934.63,-512257 584949.05,-512199.79 584949.16,-512113.85 584920.65,-511999.41 584920.88,-511970.91 584949.83,-511913.58 584949.94,-511856.36 584950.06,-511799.26 584979.01,-511742.04 585007.96,-511713.43 585008.07,-511684.82 585008.18,-511627.6 585022.72,-511613.47 585051.56,-511584.86 585080.51,-511556.36 585109.35,-511542.22 585224.61,-511485 585224.83,-511499.59 585311.13,-511513.95 585368.81,-511571.28 585368.59,-511585.3 585253.34,-511599.55 585238.8,-511685.38 585224.27,-511699.85 585281.84,-511728.57 585339.41,-511742.93 585353.72,-511757.29 585368.14,-511771.76 585425.71,-511828.98 585425.6,-511843.45 585483.17,-511857.92 585540.75,-512000.97 585540.41,-512000.86 585511.57,-511915.03 585511.79,-511914.81 585396.54,-512057.85 585410.51,-512115.18 585410.4,-512172.29 585381.45,-512229.51 585366.91,-512215.26 585395.76,-512186.76 585424.71,-512158.26 585482.39,-512158.49 585568.8,-512187.54 585712.79,-512201.79 585727.1,-512216.15 585741.52,-512230.62 585799.09,-512316.45 585798.87,-512316.11 585683.61,-512373.33 585669.08,-512387.69 585654.66,-512415.97 585510.45,-512430.11 585452.88,-512458.71 585467.08,-512516.04 585495.81,-512530.4 585510.23,-512544.76 585524.54,-512630.59 585553.15,-512659.2 585553.04,-512673.56 585538.62,-512687.81 585524.2,-512745.03 585523.98,-512830.97 585538.29,-512845.55 585624.59,-512859.8 585639.01,-512874.16 585653.32,-512888.52 585667.74,-512902.88 585682.16,-512917.24 585710.89,-512888.63 585725.31,-512860.13 585754.15,-512831.52 585754.26,-512774.19 585740.07,-512760.06 585768.91,-512731.45 585797.75,-512703.06 585884.27,-512674.56 585913.23,-512675.01 586086.05,-512675.01 586114.9,-512646.84 586287.83,-512618.57 586403.09,-512604.21 586431.93,-512661.54 586446.13,-512675.9 586460.55,-512676.01 586489.39,-512647.51 586547.08,-512633.37 586604.76,-512547.44 586604.98,-512533.41 586691.51,-512519.16 586720.35,-512576.38 586720.13,-512590.85 586777.7,-512605.21 586792.01,-512619.57 586806.54,-512633.93 586820.74,-512648.29 586835.27,-512662.54 586849.58,-512677.01 586864,-512677.01 586892.73,-512677.12 586921.58,-512691.37 586935.88,-512705.84 586950.31,-512734.68 587036.72,-512734.79 587094.29,-512734.9 587123.14,-512749.15 587137.44,-512763.62 587151.87,-512777.87 587166.18,-512892.41 587180.26,-512906.89 587237.95,-512907 587295.52,-512878.5 587324.36,-512878.61 587353.2,-512907.44 587439.62,-512921.69 587453.93,-512979.02 587482.55,-512993.38 587496.97,-513007.74 587511.28,-513093.68 587539.9,-513108.04 587554.32,-513136.76 587611.89,-513165.59 587669.46,-513165.7 587698.19,-513165.7 587727.04,-513180.06 587741.34,-513237.28 587755.65,-513251.75 587813.23,-513280.59 587870.8,-513294.83 587885.11,-513352.16 587899.42,-513342.48 587918.31,-513323.56 587928.26,-513309.75 588101.21,-513281.25 588130.05,-513281.25 588158.89,-513295.61 588173.2,-513309.97 588187.62,-513324.45 588245.2,-513295.84 588259.73,-513277.02 588264.31,-513252.87 588216.58,-513238.4 588159,-513152.46 588144.81,-513095.13 588130.61,-513109.71 588188.18,-513124.07 588245.75,-513066.85 588245.87,-513066.96 588303.55,-513009.75 588303.66,-513023.88 588217.25,-513052.16 588101.88,-513051.94 587986.62,-513047.26 587938.88,-513066.07 587943.35,-513094.68 587957.78,-513108.93 587900.09,-513137.21 587784.72,-513137.21 587755.88,-513108.37 587669.57,-513093.79 587612,-513065.29 587626.42,-512979.36 587626.65,-512950.75 587597.92,-512922.03 587597.92,-512893.42 587598.03,-512836.2 587598.25,-512721.76 587612.9,-512736.01 587584.05,-512736.01 587555.32,-512721.43 587497.64,-512692.82 587483.33,-512664.21 587469.02,-512664.32 587555.43,-512578.49 587570.08,-512550 587598.92,-512521.39 587613.45,-512506.92 587527.04,-512492.44 587498.31,-512549.66 587483.66,-512564.02 587469.24,-512563.91 587440.51,-512535.3 587411.78,-512520.72 587354.21,-512492.11 587339.79,-512434.78 587311.17,-512348.95 587311.28,-512320.34 587311.39,-512291.62 587311.5,-512234.52 587326.04,-512234.63 587383.72,-512206.02 587398.14,-512148.8 587398.25,-512120.08 587369.52,-512091.47 587340.79,-512034.14 587340.91,-511977.03 587369.97,-511948.43 587384.39,-511933.95 587298.09,-511919.48 587240.52,-512005.31 587225.76,-512019.56 587211.45,-512033.81 587196.92,-512119.64 587182.27,-512119.3 587067.13,-512090.69 587052.71,-511861.6 587024.42,-511775.77 587010.34,-511775.55 586952.77,-511575.17 586938.79,-511546.56 586910.06,-511517.84 586881.33,-511489.12 586852.6,-511460.4 586823.87,-511403.18 586823.98,-511374.57 586824.09,-511345.96 586824.09,-511288.75 586838.74,-511288.97 586925.15,-511231.75 586939.69,-511174.53 586939.8,-511059.98 586911.29,-510974.05 586897.21,-510959.91 586926.05,-510931.3 586954.89,-510902.8 586983.73,-510888.55 587041.42,-510860.05 587055.84,-510774.12 587056.06,-510688.29 587056.28,-510602.46 587056.51,-510573.85 587056.62,-510545.24 587085.46,-510459.42 587114.53,-510373.7 587143.59,-510316.48 587172.55,-510287.98 587201.39,-510259.38 587230.23,-510230.88 587259.19,-510202.27 587288.03,-510116.44 587302.67,-510116.66 587360.36,-510059.45 587374.89,-510002.23 587403.84,-509973.62 587403.84,-509916.4 587404.07,-509773.35 587404.4,-509744.63 587404.4,-509601.59 587404.85,-509200.84 587377.01,-509000.35 587348.73,-508971.74 587348.84,-508943.13 587348.84,-508914.52 587348.95,-508828.7 587349.18,-508771.37 587320.56,-508714.04 587291.83,-508656.71 587277.63,-508657.04 587364.05,-508628.43 587378.47,-508571.21 587393.11,-508556.97 587421.95,-508542.94 587537.21,-508600.16 587551.41,-508714.71 587565.61,-508714.93 587652.02,-508743.54 587651.91,-508743.43 587594.34,-508800.64 587594.23,-508815.23 587680.53,-508844.06 587766.95,-508858.53 587824.52,-508944.36 587809.87,-508972.97 587809.76,-508987.33 587824.18,-509001.58 587838.49,-509087.51 587852.8,-509073.49 587939.22,-509059.24 587996.9,-508973.41 587982.71,-508944.8 587982.71,-508858.98 588011.77,-508830.37 588040.61,-508773.15 588055.26,-508759.01 588084.1,-508730.51 588141.79,-508702.02 588170.63,-508673.52 588228.43,-508645.24 588372.53,-508616.74 588401.37,-508588.47 588545.58,-508559.86 588574.43,-508531.36 588603.27,-508503.09 588747.48,-508489.06 588891.59,-508460.45 588877.17,-508374.51 588862.97,-508360.15 588805.39,-508359.93 588747.82,-508374.18 588733.29,-508388.54 588718.87,-508402.34 588546.03,-508459.56 588545.92,-508445.09 588459.5,-508416.37 588401.93,-508416.15 588344.24,-508416.04 588286.67,-508387.43 588257.94,-508358.71 588229.21,-508329.99 588200.48,-508315.51 588142.9,-508429.95 588128.15,-508444.2 588113.73,-508458.45 588099.19,-508472.81 588084.88,-508501.31 588027.09,-508529.69 587969.4,-508558.19 587882.87,-508572.22 587796.46,-508514.89 587782.15,-508486.28 587753.42,-508400.34 587739.22,-508400.23 587681.65,-508285.68 587667.45,-508228.35 587653.25,-508214.1 587624.52,-508213.88 587566.84,-508213.88 587537.99,-508199.3 587451.69,-508170.58 587437.27,-508141.86 587408.54,-508084.64 587394.34,-508070.28 587365.5,-508041.56 587307.93,-508041.22 587163.94,-508055.25 587077.41,-508026.53 587063.1,-507969.31 587048.91,-507969.2 586991.22,-507911.87 586991.33,-507897.62 586962.6,-507883.04 586905.03,-507739.88 586890.94,-507711.27 586890.94,-507625.56 586920.01,-507396.57 586920.57,-507253.41 586906.6,-507239.28 586935.44,-507211 587079.54,-507182.39 587108.49,-507168.26 587166.06,-507111.04 587180.6,-507082.32 587180.71,-507025.1 587166.51,-507010.96 587224.08,-506982.46 587281.88,-506982.8 587397.14,-506997.05 587411.45,-507054.38 587425.76,-507068.96 587512.17,-507097.68 587569.63,-507112.37 587742.46,-507169.7 587756.77,-507226.92 587785.39,-507255.64 587785.28,-507312.75 587756.33,-507398.58 587756.1,-507413.05 587770.52,-507427.3 587784.94,-507441.77 587799.25,-507470.49 587856.83,-507484.85 587885.67,-507398.91 587885.89,-507384.88 587972.31,-507384.99 588001.15,-507399.58 588116.41,-507456.8 588130.61,-507471.16 588145.03,-507499.99 588231.33,-507514.35 588245.64,-507528.71 588260.06,-507543.07 588274.37,-507628.9 588274.15,-507743.33 588273.93,-507757.8 588288.35,-507757.8 588317.08,-507757.91 588345.92,-507772.16 588360.23,-507786.64 588374.65,-507786.75 588432.34,-507758.36 588518.87,-507758.81 588720.54,-507773.17 588734.85,-507787.53 588749.27,-507801.89 588763.58,-507887.82 588792.2,-507902.18 588806.62,-507916.43 588820.93,-507930.91 588835.35,-507931.13 588921.77,-507931.46 589065.87,-507931.46 589094.61,-507931.57 589123.45,-507945.93 589137.76,-508060.48 589166.27,-508117.7 589180.58,-508132.28 589238.26,-508132.39 589324.68,-508132.5 589353.41,-508146.87 589367.72,-508161.23 589382.25,-508175.47 589396.56,-508189.95 589410.99,-508204.19 589425.3,-508290.13 589439.49,-508290.24 589497.18,-508433.4 589511.15,-508447.76 589525.58,-508462.23 589583.15,-508519.45 589582.93,-508534.03 589698.19,-508534.15 589727.03,-508534.26 589755.76,-508548.51 589770.18,-508562.98 589784.49,-508591.7 589842.07,-508620.42 589899.64,-508649.25 589986.06,-508663.61 590000.37,-508720.94 590028.99,-508735.3 590043.41,-508749.55 590057.72,-508764.02 590072.15,-508778.27 590086.46,-508835.6 590100.76,-508850.18 590216.03,-508850.63 590360.13,-508822.13 590446.55,-508793.74 590533.08,-508793.85 590561.93,-508808.1 590576.24,-508822.57 590590.66,-508836.82 590604.97,-508851.18 590619.39,-508851.52 590734.65,-508851.74 590821.07,-508852.07 590936.34,-508837.83 590994.02,-508809.22 591008.44,-508780.72 591037.29,-508752.11 591037.4,-508723.39 591037.51,-508666.28 591052.05,-508652.03 591080.89,-508623.54 591109.85,-508595.15 591225.11,-508566.65 591254.06,-508538.15 591311.75,-508509.77 591427.02,-508509.88 591455.86,-508509.99 591484.7,-508481.38 591513.55,-508452.88 591542.5,-508452.88 591571.24,-508453.22 591715.35,-508453.44 591773.03,-508482.27 591859.34,-508482.38 591888.19,-508482.38 591917.03,-508511.21 591974.5,-508525.46 591988.81,-508539.82 592003.23,-508539.93 592032.07,-508511.44 592089.76,-508511.77 592205.03,-508526.13 592233.87,-508497.52 592248.29,-508411.69 592262.94,-508397.33 592234.09,-508368.61 592176.63,-508339.78 592119.05,-508311.06 592090.32,-508282.45 592061.59,-508253.73 592032.86,-508224.9 591975.28,-508224.79 591888.86,-508224.45 591802.33,-508195.73 591744.86,-508195.62 591687.17,-508195.51 591658.33,-508181.04 591600.75,-508123.82 591600.98,-508123.6 591543.29,-508095.1 591557.71,-507951.94 591558.04,-507923.22 591543.85,-507923.45 591601.42,-507894.84 591615.84,-507866.34 591644.8,-507837.62 591644.8,-507780.4 591630.6,-507766.04 591601.87,-507737.21 591515.45,-507722.74 591457.87,-507808.57 591443.23,-507865.67 591414.27,-507951.61 591414.05,-507980.22 591413.94,-508066.05 591384.98,-508123.15 591355.91,-508137.51 591341.6,-508151.65 591283.91,-508208.87 591283.8,-508223.01 591197.27,-508251.39 591110.74,-508279.89 591053.05,-508293.36 590736.11,-508236.03 590721.8,-508207.31 590693.06,-508121.48 590693.29,-508064.38 590722.24,-507978.44 590722.47,-507921.22 590708.27,-507935.47 590679.31,-507963.97 590621.63,-507992.46 590563.94,-508006.6 590549.52,-508020.96 590535.09,-508035.21 590520.56,-508049.57 590506.25,-508063.71 590491.72,-508078.07 590477.3,-508106.57 590419.61,-508120.82 590405.08,-508135.07 590390.77,-508149.31 590376.23,-508163.67 590361.81,-508163.34 590246.55,-508134.51 590131.4,-508134.4 590102.55,-508148.53 590073.71,-508119.93 590059.4,-508062.6 590030.67,-507976.77 590030.89,-507948.16 590059.85,-507919.55 590074.27,-507905.3 590045.54,-507905.08 589959.12,-507933.58 589901.43,-507933.35 589815.01,-507918.77 589757.33,-507890.16 589743.02,-507861.44 589714.29,-507832.83 589714.29,-507747.01 589729.04,-507732.87 589757.89,-507704.37 589815.57,-507690.12 589873.26,-507632.9 589873.37,-507618.99 590046.32,-507590.49 590075.16,-507576.24 590132.85,-507519.02 590132.96,-507504.89 590161.81,-507490.75 590248.34,-507290.37 590248.78,-507276.01 590220.05,-507261.54 590162.48,-507232.82 590148.05,-507175.6 590133.86,-507161.24 590105.01,-507161.13 590047.44,-507161.02 590018.59,-507132.3 589961.02,-507132.19 589932.29,-507160.69 589874.49,-507174.93 589860.07,-507189.18 589845.65,-507217.57 589730.38,-507231.82 589715.85,-507246.07 589701.43,-507260.32 589687.01,-507274.68 589672.59,-507288.81 589658.05,-507346.03 589643.52,-507331.45 589499.53,-507331.34 589470.68,-507345.59 589456.26,-507359.95 589441.84,-507374.2 589427.31,-507431.3 589398.35,-507445.66 589384.04,-507459.91 589369.51,-507474.27 589355.09,-507502.66 589268.56,-507516.8 589210.98,-507488.08 589196.56,-507373.64 589196.9,-507316.42 589211.43,-507330.45 589096.17,-507344.7 589081.64,-507359.06 589067.33,-507373.19 589052.79,-507387.55 589038.37,-507387.44 589009.64,-507372.97 588951.96,-507315.75 588952.18,-507315.53 588894.49,-507258.42 588909.03,-507172.6 588923.67,-507158.24 588894.94,-507143.77 588837.37,-507115.16 588851.79,-507057.94 588866.32,-507043.47 588779.9,-507043.13 588664.65,-507057.38 588650.22,-507071.74 588635.8,-507085.99 588621.27,-507100.24 588606.96,-507114.49 588592.43,-507128.85 588578,-507142.76 588433.9,-507085.43 588419.59,-507056.71 588390.86,-507028.1 588390.97,-506970.89 588405.51,-506956.75 588463.19,-506942.72 588578.56,-506856.89 588578.68,-506870.92 588434.57,-506870.81 588405.84,-506870.7 588348.16,-506899.08 588261.63,-506913.22 588232.79,-506884.61 588218.48,-506798.67 588189.86,-506769.95 588175.55,-506770.18 588233.23,-506712.85 588233.35,-506698.82 588291.03,-506670.21 588319.87,-506656.07 588406.4,-506627.47 588420.71,-506598.86 588420.82,-506513.03 588421.05,-506484.42 588450,-506398.59 588450.11,-506341.26 588435.91,-506355.62 588407.07,-506369.87 588392.65,-506384.12 588378.23,-506398.37 588363.7,-506412.73 588349.27,-506412.51 588262.86,-506398.04 588234.13,-506455.25 588219.48,-506512.47 588190.53,-506526.83 588176.22,-506540.97 588161.69,-506555.33 588147.26,-506583.61 588032.01,-506597.85 588003.16,-506569.25 587988.74,-506540.52 587960.01,-506454.59 587960.23,-506397.48 587989.19,-506340.26 588003.72,-506354.4 587917.31,-506382.79 587830.78,-506382.56 587715.52,-506367.98 587657.95,-506310.76 587643.64,-506282.04 587614.91,-506253.32 587586.18,-506195.99 587557.45,-506167.38 587528.72,-506110.05 587514.52,-506095.69 587485.79,-506067.08 587456.95,-506038.36 587428.21,-506023.89 587370.64,-505995.17 587356.33,-505966.56 587327.49,-505937.84 587327.6,-505823.52 587356.67,-505766.3 587385.62,-505737.8 587414.58,-505709.08 587414.69,-505680.47 587385.85,-505594.53 587386.07,-505566.03 587415.02,-505480.21 587429.67,-505466.07 587458.51,-505451.82 587516.2,-505423.21 587530.62,-505365.99 587545.15,-505351.86 587602.83,-505323.36 587660.52,-505294.97 587747.05,-505295.19 587833.46,-505309.55 587847.77,-505366.77 587847.66,-505423.99 587847.55,-505438.35 587861.97,-505452.82 587919.54,-505510.04 587933.74,-505524.51 587948.16,-505538.76 587962.47,-505553.12 587976.89,-505567.82 588149.72,-505510.6 588149.95,-505510.82 588236.36,-505453.49 588222.05,-505424.88 588193.32,-505396.16 588193.32,-505310.44 588222.39,-505253.23 588251.34,-505224.73 588280.19,-505167.4 588280.41,-505110.18 588266.1,-505124.32 588179.68,-505152.82 588122,-505152.48 588006.74,-505123.87 587978.01,-505095.15 587949.28,-505080.68 587891.71,-505023.35 587877.28,-504994.63 587848.55,-504937.41 587834.36,-504937.19 587776.78,-504879.97 587776.89,-504865.61 587719.32,-504836.89 587690.59,-504808.06 587604.18,-504793.59 587546.6,-504764.87 587532.18,-504736.26 587503.45,-504707.54 587474.72,-504535.77 587460.75,-504535.66 587403.17,-504478.44 587417.71,-504421.22 587446.66,-504335.4 587461.31,-504335.29 587403.62,-504306.68 587418.04,-504249.57 587447.11,-504220.96 587475.95,-504192.46 587504.79,-504163.85 587533.75,-504106.64 587548.28,-504106.86 587605.96,-504049.64 587620.39,-503992.31 587620.61,-503935.09 587606.3,-503920.73 587577.57,-503892.01 587548.84,-503863.4 587520.11,-503834.68 587491.38,-503834.57 587433.69,-503848.71 587404.85,-503791.49 587390.54,-503762.77 587390.65,-503734.27 587405.19,-503719.8 587347.61,-503691.08 587318.88,-503662.36 587261.31,-503662.36 587232.47,-503662.25 587203.63,-503633.53 587146.05,-503633.19 587030.8,-503647.22 586944.38,-503618.61 586929.96,-503561.39 586930.18,-503532.78 586959.03,-503418.35 586973.78,-503432.6 586916.1,-503446.62 586829.57,-503503.84 586829.46,-503518.09 586771.78,-503532.34 586757.35,-503546.59 586742.93,-503560.84 586728.4,-503589.45 586728.4,-503646.66 586728.18,-503661.02 586713.87,-503675.27 586699.34,-503961.47 586698.66,-503975.84 586713.09,-503990.2 586727.39,-504004.56 586741.82,-504018.92 586756.12,-504133.35 586770.32,-504118.99 586712.75,-504118.88 586683.91,-504133.13 586669.38,-504147.49 586655.07,-504161.52 586568.54,-504047.08 586583.18,-503846.82 586612.47,-503675.16 586641.76,-503617.94 586670.72,-503589.33 586670.72,-503417.57 586656.85,-503417.46 586599.17,-503302.91 586584.97,-503245.58 586556.35,-503188.36 586556.47,-503131.14 586585.42,-503102.64 586614.26,-503045.43 586643.22,-503016.82 586643.33,-502959.6 586629.13,-502959.71 586686.7,-502931.1 586701.12,-502902.6 586730.08,-502873.99 586758.92,-502845.5 586787.76,-502788.28 586816.72,-502702.45 586816.94,-502673.84 586817.05,-502645.23 586845.89,-502588.01 586846.12,-502559.41 586846.12,-502502.19 586875.07,-502416.36 586875.29,-502387.75 586875.41,-502216.1 586904.58,-502101.66 586933.65,-502073.16 586962.6,-502015.83 586962.71,-501987.22 586933.98,-501929.89 586905.25,-501843.96 586876.75,-501815.35 586876.75,-501700.8 586877.08,-501643.47 586848.35,-501614.86 586819.62,-501557.53 586819.73,-501500.42 586848.69,-501471.81 586877.64,-501386.1 586906.6,-501328.88 586935.55,-501243.05 586950.19,-501242.94 586892.62,-501185.72 586892.73,-501171.47 586921.58,-501142.98 586950.53,-501114.37 586979.37,-501100.12 587037.06,-501042.9 587037.17,-501028.76 587066.01,-501000.49 587238.95,-501000.6 587267.79,-501014.96 587325.37,-501043.57 587310.83,-501057.93 587296.41,-501057.71 587238.84,-501057.59 587181.16,-501071.84 587166.73,-501086.2 587152.31,-501100.34 587137.78,-501186.17 587108.83,-501300.72 587108.49,-501415.15 587108.27,-501429.51 587093.85,-501443.65 587079.31,-501500.98 587079.2,-501558.2 587079.09,-501615.42 587050.14,-501729.85 587049.8,-501744.21 587064.33,-501758.57 587078.64,-501772.93 587093.06,-501787.18 587107.37,-501801.65 587121.79,-501816.01 587150.52,-501701.47 587150.86,-501687.33 587179.7,-501673.08 587237.27,-501501.43 587252.14,-501472.82 587280.99,-501444.32 587309.83,-501301.16 587324.7,-501287.02 587382.38,-501272.89 587468.8,-501187.06 587483.33,-501101.34 587512.39,-501044.12 587541.35,-500986.91 587555.99,-500987.02 587613.57,-500901.19 587628.1,-500872.69 587657.05,-500815.47 587685.9,-500758.26 587714.96,-500643.93 587744.03,-500615.32 587744.03,-500586.6 587744.14,-500558.1 587772.98,-500472.28 587802.05,-500415.17 587831,-500386.45 587831.11,-500357.84 587831.11,-500272.01 587845.76,-500272.24 587903.44,-500214.91 587889.13,-500157.69 587889.25,-500043.14 587889.47,-500014.53 587860.74,-499985.81 587832.01,-499899.87 587817.92,-499885.62 587789.08,-499856.46 587587.52,-499841.99 587558.68,-499899.32 587558.56,-499899.09 587500.88,-499870.48 587486.57,-499841.76 587457.84,-499784.43 587429.11,-499727.22 587414.91,-499712.86 587386.18,-499684.13 587328.61,-499669.66 587270.92,-499612.33 587271.15,-499598.08 587242.31,-499569.36 587213.57,-499540.64 587184.84,-499511.92 587156.11,-499497.45 587098.54,-499468.84 587084.12,-499411.51 587055.5,-499382.79 587026.66,-499325.57 587026.88,-499296.97 587026.88,-499268.25 586998.15,-499239.52 586969.42,-499153.59 586940.8,-499096.37 586912.19,-499067.65 586883.34,-499010.32 586854.72,-498952.99 586840.53,-498938.63 586782.95,-498924.16 586725.27,-498752.39 586725.72,-498752.28 586668.15,-498723.67 586653.72,-498694.95 586624.99,-498637.62 586596.26,-498523.07 586567.76,-498494.46 586553.45,-498480.21 586582.29,-498451.72 586611.13,-498423.22 586668.93,-498395.06 586870.6,-498395.28 586957.13,-498409.86 587101.11,-498495.8 587115.31,-498510.16 587129.73,-498538.99 587216.03,-498553.35 587273.61,-498610.57 587259.07,-498624.93 587244.65,-498639.18 587230.23,-498667.79 587230.12,-498682.15 587244.54,-498682.26 587273.38,-498668.01 587359.8,-498725.34 587359.69,-498715.66 587378.58,-498610.9 587403.06,-498582.29 587432.02,-498382.03 587461.31,-498353.53 587490.15,-498239.1 587519.21,-498153.27 587548.28,-498096.05 587562.92,-498096.27 587620.5,-498038.94 587620.61,-498053.53 587678.18,-498067.89 587735.87,-498039.28 587750.29,-497896.23 587779.35,-497867.62 587779.47,-497781.68 587765.38,-497767.55 587794.22,-497738.94 587823.07,-497724.69 587880.75,-497667.47 587866.44,-497610.14 587852.13,-497595.89 587823.4,-497595.78 587794.56,-497624.06 587650.46,-497638.31 587635.92,-497652.67 587621.5,-497666.91 587607.08,-497781.24 587578.02,-497838.46 587563.48,-497852.71 587505.8,-497866.84 587448.11,-497924.06 587448,-497909.59 587332.86,-497895.01 587246.44,-497866.29 587232.02,-497751.85 587232.24,-497723.24 587232.36,-497665.91 587203.74,-497522.76 587189.65,-497522.64 587132.08,-497494.04 587117.66,-497436.71 587103.46,-497422.46 587132.3,-497408.32 587189.87,-497265.16 587204.63,-497150.84 587233.7,-497122.12 587233.81,-497064.9 587219.5,-497065.01 587277.18,-497007.79 587291.72,-496950.68 587320.67,-496921.96 587320.67,-496893.36 587291.94,-496778.81 587263.43,-496750.09 587234.7,-496721.37 587205.86,-496635.54 587206.08,-496606.93 587206.2,-496549.6 587177.47,-496292.01 587178.14,-496234.68 587178.25,-496148.85 587149.63,-496120.13 587120.9,-496005.58 587121.12,-495977.08 587150.08,-495948.48 587150.08,-495919.87 587150.19,-495891.26 587179.03,-495862.76 587207.99,-495834.15 587207.99,-495805.43 587179.25,-495776.71 587150.52,-495690.88 587150.75,-495633.66 587165.28,-495633.55 587107.71,-495604.83 587093.29,-495576.11 587064.56,-495547.5 587050.25,-495533.36 587079.09,-495504.76 587107.93,-495476.15 587136.89,-495462.01 587223.3,-495318.96 587223.64,-495304.71 587252.48,-495304.83 587281.32,-495319.19 587338.89,-495376.4 587338.78,-495376.63 587425.2,-495319.41 587410.89,-495262.08 587396.69,-495247.83 587425.53,-495219.44 587483.22,-495190.83 587512.06,-495162.34 587541.01,-495133.84 587598.7,-495133.95 587685.11,-495148.31 587699.42,-495205.53 587713.73,-495205.42 587627.32,-495262.64 587612.78,-495377.07 587598.14,-495376.74 587454.04,-495405.35 587453.93,-495405.57 587540.45,-495548.62 587540.12,-495548.84 587626.53,-495606.06 587626.42,-495620.53 587684,-495634.89 587698.3,-495649.25 587712.73,-495678.08 587770.3,-495692.33 587784.61,-495706.69 587799.03,-495735.52 587885.45,-495749.88 587899.76,-495764.24 587914.18,-495792.96 587971.75,-495807.32 587986.06,-495864.54 588014.68,-495879.01 588029.1,-495907.73 588086.67,-495921.98 588100.98,-496036.53 588115.18,-496036.42 588057.61,-496093.64 588042.96,-496236.79 588042.63,-496379.84 588042.29,-496437.06 588027.87,-496422.7 587970.18,-496408.11 587883.77,-496522.66 587883.55,-496537.13 587941.12,-496551.38 587955.43,-496579.99 587955.43,-496637.21 587955.32,-496651.68 587969.74,-496665.93 587984.05,-496723.26 588012.67,-496737.62 588027.09,-496751.98 588041.4,-496766.34 588055.82,-496766.56 588142.35,-496752.31 588199.92,-496666.49 588214.56,-496609.27 588229.1,-496595.02 588257.94,-496566.52 588286.89,-496552.49 588431,-496523.89 588445.42,-496495.39 588474.26,-496438.17 588503.21,-496295.12 588503.55,-496266.4 588474.82,-496237.68 588446.09,-496208.96 588417.25,-496151.74 588403.05,-496151.86 588460.73,-496037.31 588460.96,-496023.17 588489.8,-495994.67 588547.49,-495966.18 588605.17,-495937.68 588634.13,-495909.07 588662.97,-495880.46 588691.81,-495851.96 588720.77,-495823.46 588749.61,-495794.85 588778.45,-495780.61 588836.14,-495723.39 588836.25,-495709.14 588865.2,-495680.75 588951.62,-495652.25 589009.31,-495652.37 589038.15,-495666.61 589052.46,-495681.09 589066.88,-495695.33 589081.19,-495709.69 589095.72,-495724.06 589109.92,-495809.99 589138.65,-495824.35 589152.96,-495838.6 589167.38,-495853.07 589181.81,-495867.32 589196.12,-495924.65 589224.73,-496010.59 589239.04,-496010.7 589296.62,-496182.36 589281.75,-496239.58 589267.33,-496253.71 589180.8,-496282.21 589123.11,-496310.71 589065.43,-496339.1 588978.9,-496353.34 588921.21,-496496.39 588920.88,-496482.59 589093.82,-496482.59 589122.67,-496511.31 589180.24,-496525.67 589194.55,-496582.89 589194.44,-496611.49 589180.02,-496611.61 589237.59,-496668.93 589237.48,-496654.69 589295.17,-496626.19 589324.01,-496626.52 589468.11,-496640.88 589482.42,-496726.71 589511.04,-496755.43 589510.93,-496784.04 589510.93,-496812.65 589510.82,-496869.76 589481.86,-496884.12 589467.44,-496898.36 589453.02,-496955.58 589438.49,-496955.69 589496.06,-496898.48 589496.29,-496884.56 589640.39,-496884.67 589669.23,-496884.67 589697.96,-496884.78 589726.81,-496899.03 589741.12,-496913.39 589755.54,-496927.75 589769.85,-496942.11 589784.27,-496970.83 589841.85,-496985.19 589856.16,-496999.55 589870.58,-497028.39 589928.15,-497042.63 589942.46,-497099.96 589971.19,-497157.18 589971.08,-497171.54 589956.66,-497185.68 589942.13,-497242.9 589913.17,-497257.26 589898.86,-497271.06 589725.91,-497328.39 589725.8,-497328.17 589668.11,-497356.89 589682.42,-497414.11 589682.31,-497471.33 589667.78,-497485.46 589552.52,-497499.27 589379.57,-497556.49 589379.46,-497571.07 589465.88,-497585.43 589480.19,-497599.79 589494.61,-497614.04 589508.92,-497728.59 589508.69,-497742.95 589494.27,-497757.08 589479.74,-497771.44 589465.32,-497785.69 589450.9,-497800.05 589436.47,-497814.19 589421.94,-497828.55 589407.63,-497842.8 589393.1,-497857.16 589378.68,-497871.3 589364.26,-497885.66 589349.83,-497885.1 589119.31,-497884.88 589032.9,-497899.02 588975.21,-497956.23 588960.68,-497984.84 588960.56,-498070.78 588974.76,-498056.64 589003.61,-498056.64 589032.45,-498085.36 589090.02,-498085.48 589118.87,-498085.59 589147.71,-498085.7 589205.28,-498085.81 589262.86,-498100.17 589277.28,-498114.53 589291.7,-498128.78 589306.01,-498143.25 589320.43,-498157.61 589378.01,-498272.05 589363.25,-498286.41 589348.94,-498300.54 589291.25,-498500.81 589276.27,-498515.17 589261.85,-498529.42 589247.43,-498558.03 589247.32,-498615.24 589247.21,-498729.68 589218.14,-498786.9 589189.18,-498801.15 589174.76,-498815.4 589160.23,-498901.34 589160.12,-498915.7 589174.43,-498929.95 589188.85,-498987.27 589188.74,-499015.88 589188.63,-499073.1 589217.24,-499130.43 589245.98,-499273.59 589245.64,-499330.81 589245.53,-499359.53 589259.84,-499373.66 589173.42,-499387.8 589115.74,-499406.73 589125.46,-499416.75 589259.73,-499388.14 589274.15,-499330.92 589288.79,-499331.03 589346.37,-499302.53 589360.79,-499273.92 589389.63,-499216.7 589418.59,-499188.21 589447.54,-499130.99 589462.08,-499131.1 589519.76,-499073.88 589519.87,-499059.74 589548.72,-499031.13 589577.56,-499003.08 589808.19,-498974.47 589837.04,-498946.2 589981.25,-498931.95 590038.83,-498874.73 590039.05,-498860.59 590096.63,-498860.82 590183.16,-498889.76 590298.31,-498904.01 590312.62,-498918.37 590327.04,-498932.73 590341.35,-498947.09 590355.77,-498961.45 590370.08,-498975.81 590384.5,-498990.06 590398.81,-499004.53 590413.35,-499033.25 590470.81,-499062.19 590586.07,-499062.3 590643.65,-499062.3 590672.49,-499091.14 590730.07,-499105.38 590744.38,-499119.74 590758.8,-499148.58 590816.38,-499148.58 590845.22,-499149.02 591018.06,-499149.13 591046.9,-499120.86 591219.85,-499121.19 591335.12,-499135.44 591349.43,-499192.77 591363.74,-499192.99 591450.16,-499336.04 591449.82,-499350.62 591536.24,-499364.98 591593.82,-499479.53 591593.6,-499465.39 591651.28,-499451.37 591766.55,-499394.15 591780.97,-499365.54 591795.51,-499351.07 591709.08,-499322.35 591680.35,-499322.24 591651.62,-499322.24 591622.78,-499293.4 591565.2,-499278.93 591507.62,-499164.38 591493.43,-499078.56 591493.65,-499049.95 591508.18,-499064.2 591450.49,-499078.33 591392.81,-498992.4 591393.03,-498978.04 591335.45,-498949.31 591306.72,-498920.71 591277.99,-498891.99 591249.15,-498891.87 591220.41,-498891.87 591191.57,-498863.15 591162.84,-498834.43 591105.26,-498834.21 591018.84,-498833.88 590874.73,-498805.16 590846,-498804.93 590759.58,-498804.71 590673.16,-498804.6 590615.48,-498818.74 590586.63,-498790.13 590572.21,-498732.8 590543.59,-498704.08 590514.86,-498646.86 590500.66,-498646.75 590442.97,-498618.03 590428.55,-498446.26 590414.58,-498460.84 590501,-498461.07 590587.53,-498446.82 590645.1,-498418.21 590659.52,-498389.71 590688.48,-498275.28 590717.55,-498246.67 590717.66,-498218.06 590717.66,-498132.23 590746.73,-498017.79 590761.48,-498003.66 590819.06,-497975.05 590848.02,-497960.8 590905.59,-497932.3 590920.12,-497875.08 590934.66,-497860.94 590992.35,-497860.94 591021.19,-497875.42 591078.77,-497961.24 591064.12,-497989.85 591049.7,-497989.96 591136.12,-497961.47 591150.54,-497932.86 591179.38,-497875.64 591208.34,-497818.42 591208.45,-497675.26 591194.48,-497660.9 591136.9,-497646.43 591079.32,-497531.88 591079.55,-497517.52 591050.82,-497502.94 590935.55,-497560.16 590935.44,-497545.69 590849.02,-497516.97 590791.45,-497516.86 590733.87,-497516.74 590705.03,-497488.02 590676.29,-497473.55 590618.61,-497359.12 590633.25,-497330.51 590662.21,-497302.01 590691.05,-497244.79 590705.7,-497230.54 590734.54,-497202.16 590821.07,-497188.02 590907.49,-497130.8 590922.03,-497102.3 590950.87,-497044.97 590965.51,-497059.56 591023.09,-497059.67 591080.67,-497059.78 591138.35,-497074.14 591152.66,-497088.5 591167.09,-497102.75 591181.4,-497117.22 591195.82,-497131.47 591210.13,-497188.8 591238.86,-497203.16 591253.28,-497231.99 591310.86,-497260.71 591368.32,-497274.96 591382.74,-497332.29 591396.94,-497318.26 591483.48,-497318.26 591512.32,-497332.62 591526.63,-497346.98 591541.05,-497361.23 591555.36,-497375.7 591569.78,-497375.7 591598.63,-497361.56 591685.05,-497247.13 591699.69,-497218.52 591699.81,-497189.8 591671.07,-497161.19 591671.07,-497103.97 591700.03,-497046.75 591700.14,-497018.03 591671.41,-496903.49 591657.32,-496889.12 591599.75,-496860.4 591571.01,-496845.93 591513.44,-496702.78 591499.35,-496645.45 591470.62,-496616.84 591456.31,-496602.59 591485.15,-496602.81 591571.68,-496602.92 591600.42,-496574.31 591629.37,-496574.42 591686.95,-496603.26 591773.37,-496632.2 591888.52,-496646.45 591902.83,-496660.92 591917.25,-496675.17 591931.56,-496732.5 591945.88,-496746.97 592003.56,-496775.91 592147.56,-496804.97 592320.4,-496805.08 592349.14,-496805.3 592464.4,-496819.55 592478.71,-496834.02 592493.13,-496848.27 592507.56,-496862.63 592521.87,-496877.1 592579.56,-496848.38 592565.13,-496791.16 592550.94,-496776.69 592493.36,-496762.22 592406.94,-496619.06 592407.27,-496604.81 592436.12,-496576.32 592464.96,-496576.32 592493.81,-496576.43 592522.65,-496576.54 592551.38,-496590.9 592609.07,-496562.18 592594.65,-496218.76 592581.12,-496233.01 592552.28,-496246.92 592379.32,-496218.2 592364.9,-496189.48 592336.17,-496132.15 592307.43,-495989 592279.04,-495931.67 592250.31,-495874.34 592221.68,-495817.12 592207.49,-495802.54 592092.22,-495787.84 591948.22,-495701.9 591933.91,-495587.47 591919.83,-495601.72 591890.98,-495615.85 591833.29,-495644.46 591847.6,-495673.18 591847.49,-495687.43 591833.18,-495701.68 591818.65,-495787.51 591789.58,-495873.33 591789.47,-496045.21 591817.87,-496073.82 591817.75,-496131.04 591788.8,-496145.29 591774.38,-496159.54 591759.95,-496173.9 591745.53,-496173.56 591630.27,-496173.56 591601.42,-496201.73 591428.47,-496201.73 591399.74,-496172.9 591342.16,-496172.67 591226.9,-496201.17 591169.21,-496229.67 591111.52,-496258.17 591053.83,-496272.3 591039.3,-496286.66 591024.88,-496286.44 590938.46,-496286.44 590909.62,-496314.83 590823.08,-496314.72 590794.35,-496285.88 590679.09,-496257.16 590650.36,-496257.16 590621.51,-496257.05 590592.78,-496228.33 590564.05,-496199.61 590506.36,-496170.78 590448.9,-496142.17 590420.17,-496127.7 590362.48,-496070.48 590377.01,-496041.87 590405.86,-495984.65 590420.5,-495970.74 590535.77,-495970.85 590593.45,-495970.85 590622.18,-495971.18 590737.45,-495985.43 590751.87,-495999.79 590766.18,-496014.15 590780.6,-496028.51 590795.02,-496028.63 590823.76,-496028.63 590852.6,-496028.85 590939.02,-496014.6 590996.71,-495957.38 591011.24,-495928.88 591040.08,-495900.27 591040.2,-495871.66 591040.2,-495843.06 591069.15,-495757.23 591098.11,-495700.01 591098.22,-495614.07 591084.13,-495599.71 591026.56,-495570.99 590997.71,-495570.99 590968.98,-495585.13 590940.14,-495556.52 590925.71,-495527.8 590896.98,-495499.08 590868.25,-495441.86 590868.36,-495413.36 590897.21,-495356.03 590911.85,-495356.26 590969.43,-495270.32 590969.65,-495256.18 590998.49,-495227.68 591056.18,-495199.07 591085.14,-495170.57 591142.83,-495156.44 591200.4,-495099.11 591186.09,-495070.5 591186.2,-495013.28 591200.74,-495013.5 591287.27,-494984.89 591301.69,-494870.46 591316.34,-494885.37 591575.71,-494899.62 591590.02,-494914.09 591604.44,-494914.09 591633.29,-494899.96 591690.86,-494871.24 591676.55,-494842.63 591676.55,-494814.02 591705.51,-494756.91 591720.04,-494742.66 591748.89,-494742.89 591835.31,-494757.36 591921.73,-494614.2 591907.64,-494556.87 591907.75,-494471.04 591907.98,-494270.67 591879.69,-494213.34 591850.96,-494184.73 591851.07,-494156.12 591865.6,-494141.76 591836.76,-494126.95 591663.92,-494041.13 591678.45,-493898.08 591678.79,-493869.36 591664.48,-493855.22 591693.32,-493855.33 591779.85,-493869.7 591794.16,-493884.06 591808.59,-493898.64 591923.74,-493869.92 591909.43,-493812.59 591880.7,-493755.26 591852.08,-493726.65 591823.34,-493697.93 591794.5,-493583.38 591794.83,-493526.16 591809.37,-493540.75 591895.79,-493555.11 591910.1,-493569.47 591924.52,-493583.83 591982.1,-493498 591982.32,-493497.89 591924.75,-493411.95 591910.43,-493297.4 591881.93,-493268.68 591867.62,-493254.77 591982.88,-493254.77 592011.73,-493283.6 592069.3,-493312.32 592126.88,-493341.15 592213.3,-493355.51 592270.88,-493298.29 592285.3,-493241.07 592299.94,-493226.94 592357.63,-493198.44 592386.48,-493169.94 592444.17,-493155.8 592559.43,-493127.19 592559.54,-493112.83 592530.7,-493084 592415.55,-493055.17 592357.97,-493055.06 592271.55,-493069.2 592242.7,-492983.37 592242.93,-492983.15 592185.24,-492925.93 592185.35,-492911.46 592098.93,-492896.99 592012.62,-492811.05 591998.31,-492753.72 591984.11,-492739.47 591955.27,-492724.89 591897.69,-492696.28 591883.27,-492667.56 591854.54,-492638.84 591825.8,-492524.4 591811.72,-492524.18 591725.3,-492495.46 591710.87,-492438.24 591682.25,-492352.3 591682.36,-492323.69 591682.48,-492294.97 591668.17,-492295.19 591725.74,-492266.58 591740.28,-492180.76 591754.92,-492166.4 591697.35,-492166.28 591668.5,-492180.53 591653.97,-492194.78 591639.55,-492209.03 591625.12,-492223.39 591610.7,-492237.64 591596.17,-492252 591581.86,-492266.14 591567.32,-492280.5 591552.9,-492294.75 591538.48,-492351.97 591538.26,-492466.51 591538.03,-492580.95 591508.97,-492595.31 591494.54,-492609.45 591480.12,-492752.6 591465.36,-492752.72 591523.05,-492838.54 591508.41,-492852.9 591493.98,-492867.04 591479.45,-492881.4 591465.14,-492895.43 591349.76,-492838.21 591349.99,-492852.46 591321.14,-492866.71 591306.61,-492881.07 591292.19,-492895.2 591277.77,-492909.56 591263.34,-492923.81 591248.81,-492938.17 591234.39,-492952.42 591219.97,-493038.14 591190.9,-493095.36 591161.94,-493109.72 591147.63,-493123.97 591133.1,-493152.57 591132.99,-493166.94 591147.52,-493181.3 591161.83,-493195.66 591176.25,-493209.9 591190.56,-493267.23 591219.18,-493295.84 591219.18,-493353.06 591219.07,-493381.78 591218.96,-493496.11 591189.89,-493581.93 591160.83,-493639.15 591146.4,-493653.4 591088.72,-493667.65 591074.18,-493682.01 591059.87,-493696.26 591045.34,-493710.51 591030.92,-493724.76 591016.49,-493753.37 591016.38,-493781.98 591016.27,-493953.63 590987.09,-493967.99 590972.67,-493967.88 590915.09,-493967.77 590857.41,-493981.79 590770.99,-494067.62 590756.34,-494081.98 590741.92,-494096.23 590727.39,-494182.06 590698.43,-494267.77 590669.36,-494282.13 590655.05,-494296.38 590640.52,-494382.21 590625.99,-494396.46 590568.3,-494424.96 590510.61,-494424.85 590481.77,-494396.12 590424.19,-494381.65 590366.62,-494352.93 590352.2,-494267.11 590338.11,-494252.86 590366.95,-494224.25 590395.8,-494210.11 590453.48,-494152.78 590453.59,-494138.64 590482.44,-494110.15 590540.13,-494095.9 590597.81,-494010.07 590612.35,-493981.46 590612.46,-493781.08 590598.6,-493780.86 590540.91,-493666.43 590526.71,-493609.1 590512.51,-493608.76 590368.41,-493580.15 590353.98,-493522.82 590325.36,-493408.28 590311.28,-493394.25 590426.54,-493365.75 590484.23,-493351.5 590541.91,-493265.68 590542.14,-493279.81 590426.88,-493279.7 590398.03,-493265.23 590340.46,-493208.01 590340.57,-493207.79 590282.88,-493064.74 590283.22,-493079.33 590369.64,-493093.8 590484.9,-493065.19 590499.32,-493036.69 590528.16,-493008.08 590528.28,-492979.36 590499.54,-492950.64 590470.7,-492750.27 590456.84,-492736.02 590485.68,-492707.52 590543.37,-492679.02 590572.32,-492650.64 590658.85,-492636.5 590774.12,-492607.89 590759.7,-492579.17 590730.96,-492521.84 590716.77,-492507.48 590659.19,-492478.76 590601.61,-492464.29 590572.77,-492521.5 590572.66,-492507.03 590457.4,-492506.81 590370.98,-492521.06 590342.13,-492435.12 590342.36,-492435.01 590284.67,-492377.79 590299.2,-492349.18 590328.05,-492291.96 590342.69,-492277.83 590371.54,-492249.33 590429.22,-492249.44 590458.07,-492263.69 590486.8,-492206.47 590486.91,-492206.36 590429.33,-492177.64 590414.91,-492120.42 590400.71,-492105.73 590227.88,-492077.01 590199.03,-492048.4 590170.3,-492033.93 590141.57,-492119.75 590126.93,-492176.97 590097.97,-492234.19 590069.01,-492262.8 590068.9,-492291.41 590068.9,-492305.66 590054.48,-492319.91 590039.95,-492334.27 590025.64,-492348.51 590011.1,-492362.87 589996.68,-492377.01 589982.26,-492434.23 589967.73,-492434.01 589852.47,-492491.23 589837.93,-492505.59 589823.51,-492519.83 589808.98,-492605.55 589780.02,-492619.91 589765.6,-492634.16 589751.07,-492662.77 589751.07,-492748.71 589750.84,-492805.81 589721.89,-492863.03 589721.78,-492877.5 589736.2,-492891.75 589750.51,-492948.97 589750.4,-492963.33 589735.97,-492977.58 589721.55,-492991.94 589707.13,-493006.08 589692.6,-493020.44 589678.18,-493034.58 589620.6,-493063.19 589634.91,-493120.51 589634.69,-493177.62 589605.73,-493206.23 589591.31,-493220.81 589677.73,-493235.17 589692.04,-493249.53 589706.57,-493263.78 589720.88,-493378.33 589749.39,-493435.66 589778.01,-493492.88 589777.9,-493550.1 589748.94,-493564.46 589734.63,-493578.37 589619.37,-493521.15 589604.95,-493463.82 589576.33,-493406.61 589562.13,-493420.74 589504.45,-493434.88 589446.76,-493492.21 589446.65,-493477.63 589331.39,-493463.16 589273.81,-493291.39 589274.15,-493291.28 589216.57,-493205.45 589231.11,-493119.62 589260.17,-493091.02 589289.02,-492947.97 589289.35,-492890.64 589260.62,-492718.87 589232.23,-492690.15 589203.49,-492575.72 589203.72,-492518.39 589203.94,-492432.56 589204.05,-492403.95 589233.01,-492318.12 589233.23,-492289.51 589233.23,-492203.69 589262.3,-492146.47 589276.83,-492132.33 589334.52,-492103.72 589363.36,-492075.34 589421.05,-492061.09 589478.73,-492032.48 589493.15,-491975.26 589522.11,-491918.15 589551.06,-491889.54 589551.06,-491832.21 589551.29,-491775.11 589580.24,-491746.5 589609.09,-491717.89 589637.93,-491689.28 589638.04,-491660.67 589638.15,-491603.45 589667,-491489.02 589667.33,-491460.3 589638.6,-491317.14 589624.51,-491303 589682.2,-491274.5 589739.89,-491246.23 589883.99,-491246.34 589941.68,-491260.7 589955.99,-491275.06 589970.41,-491289.31 589984.72,-491303.78 589999.14,-491332.5 590056.72,-491332.61 590085.56,-491304.23 590200.82,-491290.09 590287.35,-491232.76 590287.46,-491233.09 590402.73,-491204.48 590417.15,-491118.55 590417.37,-491061.33 590403.06,-491046.97 590345.49,-491018.13 590287.91,-491018.13 590259.18,-491032.27 590201.49,-490974.94 590201.61,-490960.69 590172.87,-490931.97 590144.14,-490903.25 590115.3,-490888.78 590057.72,-490860.17 590043.3,-490831.45 590043.41,-490774.35 590057.95,-490760.1 590086.9,-490731.6 590115.75,-490717.35 590202.16,-490631.52 590216.7,-490574.3 590245.65,-490545.81 590274.61,-490459.98 590289.25,-490445.84 590346.94,-490445.84 590375.67,-490445.95 590404.52,-490445.95 590433.36,-490460.31 590447.67,-490488.92 590447.56,-490517.53 590447.56,-490574.86 590461.87,-490589.33 590519.44,-490589.55 590634.71,-490589.67 590692.39,-490604.25 590807.54,-490547.03 590822.08,-490489.81 590851.03,-490289.55 590880.32,-490260.94 590880.32,-490232.33 590880.44,-490060.56 590880.77,-489946.02 590881.11,-489831.58 590895.75,-489831.69 590953.44,-489774.47 590953.55,-489774.7 591039.97,-489746.09 591054.39,-489603.04 591083.57,-489574.43 591112.42,-489488.61 591127.06,-489503.19 591213.48,-489531.91 591299.9,-489560.74 591357.48,-489589.46 591415.05,-489603.82 591429.36,-489618.18 591443.79,-489632.43 591458.1,-489646.9 591472.52,-489675.73 591558.94,-489676.07 591731.78,-489676.18 591760.62,-489690.43 591774.93,-489704.79 591789.36,-489719.15 591803.67,-489733.51 591818.09,-489748.31 592048.62,-489662.37 592034.31,-489576.44 592005.8,-489519.22 592005.91,-489433.39 592034.87,-489404.78 592049.4,-489404.67 591991.82,-489376.06 592006.25,-489261.62 592020.89,-489247.38 592049.74,-489233.13 592107.43,-489204.52 592121.85,-489185.82 592126.43,-489190.27 592078.69,-489190.16 592049.85,-489175.69 591992.27,-489089.86 592006.81,-489032.64 592021.45,-489018.39 592050.3,-488989.89 592079.14,-488990.01 592136.83,-489004.25 592151.14,-489018.61 592165.56,-489032.97 592179.87,-489147.52 592194.07,-489147.41 592136.49,-489166.22 592146.22,-489161.99 592251.65,-489133.38 592280.49,-489133.5 592309.34,-489133.72 592424.6,-489119.47 592482.29,-489062.25 592482.4,-489048 592511.25,-489019.5 592568.94,-488991.01 592597.89,-488976.76 592655.47,-488919.54 592655.69,-488905.29 592684.54,-488876.79 592713.38,-488862.54 592771.07,-488748 592756.87,-488633.45 592728.25,-488576.12 592714.05,-488561.87 592685.32,-488533.15 592656.59,-488504.43 592627.74,-488475.71 592599.01,-488447.1 592570.28,-488418.38 592541.54,-488389.66 592512.81,-488375.19 592455.12,-488346.47 592440.81,-488289.25 592412.08,-488260.64 592412.19,-488232.03 592441.04,-488203.42 592441.15,-488174.7 592412.3,-488117.37 592398.1,-488103.12 592369.37,-488074.29 592282.95,-488074.18 592225.26,-488088.32 592196.42,-488031.1 592182.11,-488002.38 592153.37,-487945.16 592139.18,-487930.8 592110.33,-487902.08 592081.6,-487873.36 592052.87,-487873.25 591995.18,-487887.5 591980.76,-488030.54 591951.58,-488044.9 591937.27,-488059.15 591922.73,-488116.26 591893.78,-488130.62 591879.35,-488144.87 591864.93,-488202.09 591835.98,-488259.3 591807.02,-488373.74 591806.8,-488388.1 591821.22,-488402.46 591835.53,-488459.68 591864.15,-488488.4 591864.15,-488574.23 591849.62,-488588.14 591647.82,-488616.64 591590.13,-488645.03 591474.75,-488644.91 591446.02,-488644.58 591273.07,-488672.74 591071.28,-488672.41 590956.01,-488657.94 590898.44,-488629.33 590884.01,-488600.61 590855.28,-488514.67 590826.66,-488485.95 590797.93,-488457.34 590769.2,-488342.79 590769.42,-488314.18 590783.96,-488299.94 590755.22,-488271.22 590726.38,-488271.1 590668.8,-488285.24 590639.96,-488256.63 590625.54,-488227.91 590596.81,-488199.19 590568.07,-488141.97 590553.88,-488141.86 590496.19,-488113.14 590481.77,-487941.38 590453.37,-487884.05 590424.64,-487826.83 590424.86,-487740.89 590424.97,-487683.67 590410.78,-487683.89 590497.2,-487655.28 590511.62,-487626.68 590540.57,-487540.85 590540.68,-487483.52 590540.8,-487369.08 590569.86,-487340.47 590569.98,-487283.25 590570.09,-487254.65 590570.2,-487197.32 590556,-487183.07 590527.16,-487168.48 590469.58,-487111.27 590455.27,-487053.94 590440.96,-487039.69 590412.23,-487010.97 590383.5,-486982.25 590325.92,-486967.55 590210.66,-486938.94 590210.77,-486924.81 590239.62,-486896.2 590268.46,-486881.95 590326.15,-486767.4 590311.95,-486652.85 590283.33,-486481.09 590283.78,-486395.26 590283.89,-486366.54 590255.16,-486309.32 590255.27,-486194.88 590270.02,-486180.52 590241.18,-486151.8 590212.45,-486123.19 590183.72,-486094.47 590154.99,-486065.75 590126.25,-486036.92 590039.84,-486008.2 589982.26,-485979.48 589953.53,-485950.87 589924.8,-485950.76 589895.95,-485950.76 589867.11,-485922.04 589838.38,-485893.32 589780.8,-485864.6 589752.07,-485835.77 589636.81,-485806.94 589579.35,-485778.22 589521.77,-485778.1 589492.93,-485792.35 589464.09,-485763.74 589449.67,-485735.02 589420.94,-485706.3 589392.2,-485677.58 589363.36,-485648.97 589334.63,-485620.36 589334.74,-485505.82 589334.96,-485477.1 589306.23,-485419.88 589306.35,-485219.61 589335.64,-485162.4 589350.17,-485148.15 589379.01,-485133.9 589436.7,-485076.68 589436.81,-485091.15 589465.65,-485105.4 589479.96,-485119.76 589494.38,-485119.87 589523.23,-485105.62 589580.8,-484991.19 589595.45,-484962.58 589609.98,-484948.22 589581.14,-484919.5 589552.41,-484890.89 589523.68,-484862.06 589466.1,-484862.06 589437.26,-484876.19 589408.41,-484847.58 589394.1,-484733.04 589379.91,-484718.79 589351.18,-484689.96 589293.6,-484661.35 589264.87,-484632.52 589178.45,-484618.04 589120.88,-484589.43 589135.3,-484560.83 589149.83,-484546.47 589120.99,-484531.99 589063.42,-484503.38 589048.99,-484388.84 589049.22,-484331.62 589063.86,-484331.4 588977.45,-484302.79 588963.02,-484245.57 588963.14,-484216.96 588963.14,-484131.02 588934.52,-484102.3 588905.78,-484016.36 588877.17,-483987.75 588877.28,-483959.14 588877.28,-483930.53 588877.39,-483873.32 588891.92,-483887.79 588949.61,-483902.04 588963.92,-483916.4 588978.34,-483930.76 588992.65,-483988.09 589021.27,-484045.42 589050,-484059.78 589064.42,-484074.36 589237.26,-484045.75 589251.68,-483988.64 589280.63,-483931.42 589309.59,-483874.21 589338.54,-483759.77 589367.61,-483645.33 589382.37,-483659.81 589439.94,-483688.53 589497.51,-483688.75 589555.09,-483688.86 589612.78,-483688.86 589641.62,-483688.97 589670.35,-483689.08 589728.04,-483674.83 589785.72,-483628.59 589900.08,-483467.46 590050.48,-483377.71 590118.12,-483203.62 590247.78,-482903.72 590608.55,-482817.9 590637.61,-482732.07 590666.57,-482647.03 590687.84,-482620.65 590702.11,-482595.92 590709.97,-482585.24 590730.8,-482566.08 590747.05,-482552.73 590774.24,-482543.83 590806.71,-482543.38 590835.64,-482547.83 590860.57,-482565.19 590907.31,-482560.11 590951.04,-482555.29 590992.5,-482550.95 591004.36,-482552.29 591011.04,-482546.35 591019.64,-482545.89 591030.82,-482548.56 591045.61,-482554.02 591065.99,-482553.6 591100.54,-482547.06 591113.65,-482518.67 591229.02,-482518.78 591286.71,-482533.36 591430.71,-482476.15 591445.13,-482418.93 591445.35,-482247.16 591445.69,-482218.55 591445.69,-482161.22 591445.91,-482104.12 591474.75,-482075.51 591503.71,-482046.9 591532.55,-481989.79 591561.51,-481932.57 591576.04,-481918.32 591604.89,-481889.83 591662.58,-481861.22 591691.53,-481847.08 591777.95,-481789.86 591778.06,-481775.72 591835.75,-481747.23 591922.29,-481718.73 591951.13,-481690.12 591980.09,-481661.84 592124.2,-481633.23 592153.04,-481604.96 592325.99,-481605.07 592383.68,-481605.4 592527.79,-481591.27 592614.21,-481534.38 592787.28,-481534.6 592902.55,-481506 592902.55,-481491.75 592931.39,-481463.81 593248.46,-481435.31 593306.15,-481406.81 593363.95,-481378.31 593450.37,-481364.06 593508.06,-481306.85 593522.6,-481249.74 593551.44,-481221.13 593580.4,-481135.3 593609.36,-481078.08 593609.47,-480906.21 593581.07,-480877.6 593552.34,-480734.44 593552.56,-480705.83 593567.1,-480705.72 593509.52,-480648.39 593495.21,-480619.78 593495.21,-480533.95 593524.16,-480505.34 593524.28,-480476.74 593524.39,-480390.91 593553.34,-480362.3 593567.88,-480347.83 593481.46,-480333.36 593423.88,-480304.75 593423.88,-480290.61 593452.72,-480290.72 593510.41,-480304.97 593539.14,-480133.2 593525.06,-479932.72 593496.66,-479818.17 593468.15,-479732.23 593453.95,-479717.98 593425.11,-479703.51 593367.53,-479560.35 593367.86,-479560.24 593310.18,-479502.91 593295.86,-479445.58 593267.13,-479416.97 593238.4,-479359.64 593224.2,-479359.53 593166.51,-479273.71 593181.04,-479245.1 593181.16,-479187.77 593181.27,-479159.16 593181.38,-479101.94 593181.49,-479044.72 593210.45,-478987.5 593239.29,-478815.74 593239.74,-478729.8 593211.01,-478643.97 593196.92,-478629.61 593168.08,-478600.89 593139.34,-478586.42 593081.77,-478557.81 593067.34,-478500.48 593053.14,-478500.37 592995.45,-478443.15 592995.57,-478428.79 592966.83,-478414.32 592880.41,-478385.6 592865.99,-478328.27 592851.79,-478313.91 592794.1,-478285.3 592765.37,-478256.58 592736.64,-478256.47 592678.95,-478256.36 592650.21,-478227.64 592592.64,-478198.92 592535.06,-478170.2 592506.22,-478155.72 592448.64,-478127.12 592434.22,-478098.39 592405.48,-478069.67 592376.75,-477983.74 592348.13,-477955.02 592319.4,-477811.86 592290.89,-477668.7 592262.38,-477640.09 592262.38,-477611.48 592291.22,-477582.87 592320.18,-477525.77 592349.02,-477497.16 592377.98,-477468.55 592377.98,-477439.94 592378.09,-477382.72 592392.63,-477368.47 592421.47,-477339.86 592450.32,-477325.61 592508,-477297.12 592522.43,-477239.9 592537.07,-477225.65 592565.92,-477211.4 592623.61,-477154.18 592638.03,-477125.57 592666.87,-477097.08 592695.83,-477039.86 592724.67,-477011.25 592753.63,-476982.75 592782.47,-476925.53 592797.01,-476925.64 592883.54,-476868.43 592883.65,-476868.54 592941.23,-476811.32 592955.77,-476754.1 592970.3,-476739.85 592999.14,-476725.6 593027.99,-476782.82 593042.3,-476797.29 593056.72,-476811.54 593071.03,-476825.9 593085.45,-476826.12 593143.03,-476826.24 593200.72,-476840.48 593215.03,-476854.84 593229.45,-476883.68 593315.88,-476883.79 593344.72,-476855.18 593402.41,-476826.68 593431.26,-476812.43 593488.95,-476755.1 593474.64,-476697.88 593474.75,-476640.67 593489.28,-476626.31 593460.55,-476626.31 593431.7,-476640.44 593402.86,-476611.83 593388.44,-476525.9 593374.24,-476525.78 593316.66,-476354.02 593331.31,-476296.91 593360.26,-476268.3 593389.11,-476211.08 593418.06,-476182.59 593446.91,-476153.98 593475.87,-476068.15 593504.82,-476039.54 593504.93,-475953.6 593476.31,-475839.05 593462.11,-475838.94 593404.54,-475781.61 593390.11,-475695.68 593361.49,-475638.46 593347.29,-475638.35 593289.6,-475609.63 593275.29,-475552.3 593246.56,-475495.08 593232.36,-475480.72 593203.52,-475466.25 593145.94,-475409.03 593146.05,-475394.67 593117.21,-475380.2 593059.63,-475294.37 593059.85,-475279.9 593002.16,-475251.29 592973.43,-475222.57 592944.7,-475193.85 592915.96,-475165.13 592887.23,-475165.13 592829.54,-475165.01 592800.7,-475164.68 592656.59,-475193.18 592598.9,-475221.68 592541.21,-475250.29 592483.52,-475250.17 592454.68,-475221.45 592397.1,-475192.73 592368.37,-475164.01 592339.63,-475135.29 592282.06,-475106.68 592253.32,-475077.96 592224.48,-475049.24 592195.75,-475020.63 592167.01,-475020.41 592080.59,-475034.55 592022.9,-475091.77 592022.79,-475105.9 591878.68,-475105.79 591849.84,-475091.32 591763.42,-475033.99 591763.53,-475034.1 591821.22,-474948.28 591821.33,-474934.03 591850.18,-474905.53 591879.02,-474891.28 591936.71,-474862.67 591951.13,-474776.73 591951.35,-474748.12 591922.62,-474662.18 591922.73,-474604.97 591951.69,-474576.36 591951.69,-474547.75 591937.49,-474547.86 591995.07,-474519.25 592009.49,-474462.03 592024.13,-474447.89 592081.71,-474419.29 592110.67,-474405.04 592168.24,-474319.21 592182.78,-474176.16 592197.54,-474175.94 592139.96,-474118.72 592125.65,-474032.78 592125.76,-473947.07 592154.72,-473889.85 592183.67,-473861.24 592212.52,-473832.74 592241.47,-473804.13 592270.32,-473775.53 592270.43,-473746.8 592270.43,-473689.59 592270.54,-473660.98 592241.81,-473575.04 592227.61,-473574.93 592170.03,-473546.21 592155.61,-473517.6 592126.88,-473488.88 592098.03,-473431.55 592083.84,-473417.3 592054.99,-473388.58 591997.41,-473359.75 591911.11,-473331.03 591882.26,-473302.31 591824.68,-473273.59 591795.95,-473244.75 591709.53,-473216.03 591623.22,-473201.45 591536.8,-473258.67 591522.16,-473273.03 591507.74,-473273.03 591479,-473244.2 591421.43,-473215.48 591363.85,-473186.65 591277.43,-473157.92 591219.85,-473129.2 591162.28,-473129.2 591133.43,-473129.09 591104.59,-473100.37 591075.86,-473071.54 590960.71,-473071.54 590931.86,-473085.68 590874.18,-473142.9 590874.06,-473128.54 590845.22,-473099.82 590787.64,-473085.46 590758.91,-473142.67 590758.8,-473156.81 590672.27,-473171.06 590657.85,-473185.42 590643.43,-473213.92 590585.74,-473228.17 590571.32,-473242.53 590556.9,-473256.78 590542.36,-473271.03 590527.94,-473285.27 590513.52,-473342.49 590498.98,-473356.63 590383.72,-473370.88 590369.3,-473385.24 590354.88,-473399.49 590340.34,-473413.85 590326.03,-473427.99 590311.5,-473442.35 590297.08,-473456.59 590282.66,-473470.95 590268.24,-473484.98 590181.82,-473542.31 590181.59,-473556.45 590095.18,-473556.34 590037.49,-473556.34 590008.76,-473556.23 589979.91,-473541.75 589922.34,-473513.15 589907.92,-473341.27 589879.41,-473255.33 589865.21,-473241.19 589894.05,-473212.58 589922.9,-473198.33 589980.58,-473112.51 589980.81,-473112.62 590038.38,-473084.01 590052.8,-473055.4 590081.76,-472940.96 590096.4,-472926.6 590038.83,-472926.38 589952.3,-472940.52 589894.72,-472797.47 589909.37,-472711.64 589938.33,-472654.43 589952.86,-472640.07 589924.13,-472611.35 589866.55,-472611.01 589722.45,-472625.26 589707.91,-472639.62 589693.6,-472653.76 589635.92,-472596.54 589636.03,-472596.43 589578.34,-472539.1 589564.03,-472481.88 589549.84,-472481.99 589607.41,-472453.38 589621.83,-472424.77 589650.79,-472396.17 589650.79,-472367.56 589650.9,-472338.95 589679.74,-472310.45 589708.58,-472253.23 589723.12,-472253.34 589809.65,-472224.73 589824.07,-472110.3 589824.29,-472024.36 589810.1,-472010 589781.25,-471995.53 589723.68,-471966.92 589709.26,-471938.2 589680.52,-471919.38 589656.26,-471895.12 589579.8,-471866.17 589406.96,-471837.34 589320.54,-471837.34 589291.7,-471837.01 589118.87,-471836.9 589090.02,-471836.78 589003.61,-471836.67 588974.76,-471836.56 588917.08,-471836.56 588888.35,-471819.5 588777.7,-471807.17 588542.57,-471807.06 588484.88,-471806.84 588344.85,-471806.73 588312.05,-471781.9 588273.18,-471768.16 588253.14,-471741.08 588242.24,-471680.02 588244.88,-471662.8 588260.86,-471648.17 588297.4,-471631.77 588364.78,-471640.85 588389.99,-471648.93 588415.97,-471670.4 588467.6,-471681.73 588503.05,-471692.74 588542.79,-471696.09 588561.39,-471703.51 588593.31,-471721.78 588641.64,-471750.18 588686.78,-471750.4 588773.2,-471764.87 588888.46,-471707.65 588888.57,-471722.24 588974.99,-471750.96 589061.4,-471751.07 589090.25,-471751.07 589118.98,-471780.01 589263.08,-471780.01 589291.81,-471780.12 589320.65,-471808.95 589435.92,-471837.9 589608.75,-471852.26 589623.06,-471873.2 589676.05,-471895.45 589723.9,-471924.17 589781.48,-471938.39 589811.01,-471953.55 589861.33,-471909.92 589867.89,-471924.5 589954.31,-471924.62 589983.16,-471924.62 590040.84,-471939.31 590242.52,-471853.48 590242.63,-471839.23 590271.48,-471810.85 590386.85,-471782.35 590444.54,-471782.35 590473.38,-471796.71 590487.69,-471882.54 590487.58,-471939.76 590458.63,-472111.52 590443.87,-472125.99 590501.44,-472140.46 590616.71,-472054.64 590631.24,-471882.87 590646.11,-471868.96 590819.06,-471840.46 590905.48,-471826.32 590963.17,-471768.99 590977.7,-471721.68 590982.28,-471726.13 590963.39,-471725.91 590876.97,-471711.44 590819.28,-471654.22 590804.97,-471625.5 590790.66,-471611.36 590819.51,-471611.59 590934.77,-471625.83 590949.08,-471640.19 590963.61,-471654.55 590977.92,-471702.09 591002.07,-471711.88 591021.08,-471654.67 591035.5,-471540.12 591035.72,-471454.18 591021.53,-471439.93 590992.79,-471425.46 590935.11,-471396.85 590949.53,-471339.63 590949.75,-471310.91 590935.44,-471296.77 590964.28,-471268.16 590993.13,-471239.56 591021.97,-471211.17 591137.35,-471182.67 591195.04,-471154.17 591252.72,-471154.29 591310.3,-471168.65 591339.14,-471140.04 591353.57,-471025.6 591382.63,-470911.05 591382.86,-470853.72 591368.55,-470868.31 591483.81,-470868.53 591541.5,-470839.92 591570.34,-470811.31 591599.19,-470782.81 591685.72,-470754.31 591714.56,-470740.07 591772.25,-470654.24 591786.79,-470625.63 591815.63,-470511.19 591844.7,-470482.58 591844.81,-470368.04 591845.03,-470253.6 591874.1,-470224.99 591902.94,-470167.77 591917.48,-470153.63 591946.32,-470125.03 591975.17,-470110.78 592032.86,-469996.23 592033.08,-469982.09 592090.77,-469953.48 592119.61,-469924.98 592177.3,-469910.85 592263.83,-469853.63 592278.26,-469796.41 592292.9,-469782.27 592350.48,-469753.77 592408.17,-469725.17 592465.97,-469696.67 592494.81,-469682.42 592552.5,-469653.7 592552.5,-469653.59 592437.23,-469624.87 592451.66,-469510.43 592480.72,-469481.82 592480.72,-469281.45 592452.33,-469252.73 592423.6,-469138.18 592394.97,-469080.85 592366.24,-469052.13 592337.51,-468966.19 592308.89,-468908.97 592294.58,-468908.86 592237,-468765.7 592222.8,-468708.37 592208.6,-468708.26 592150.92,-468650.93 592136.61,-468564.99 592107.98,-468507.78 592079.25,-468393.23 592079.48,-468364.62 592079.48,-468335.9 592050.74,-468307.29 592022.01,-468278.57 592022.01,-468192.74 592051.08,-468164.24 592079.92,-468107.03 592108.77,-468021.2 592137.83,-467906.76 592152.48,-467892.51 592181.32,-467863.9 592210.28,-467849.65 592267.86,-467821.05 592282.28,-467763.83 592311.24,-467735.22 592311.24,-467620.78 592311.46,-467534.84 592311.68,-467506.23 592311.68,-467449.02 592340.64,-467420.41 592340.75,-467334.47 592312.02,-467305.75 592283.29,-467248.53 592254.55,-467191.2 592225.93,-467162.48 592197.09,-467133.76 592168.36,-467076.54 592154.16,-467062.18 592125.31,-467047.71 592067.74,-467019.1 592053.31,-466961.77 592024.58,-466875.83 592024.81,-466818.61 592024.92,-466790 592024.92,-466761.4 592025.03,-466732.67 591996.3,-466675.35 591967.56,-466618.13 591938.83,-466589.41 591910.1,-466532.08 591895.79,-466517.83 591867.06,-466503.36 591809.37,-466474.64 591794.95,-466417.42 591780.75,-466403.06 591723.17,-466374.23 591665.6,-466345.51 591608.02,-466316.9 591579.17,-466288.18 591550.44,-466273.7 591492.87,-466216.49 591492.98,-466216.26 591406.56,-466187.65 591392.14,-466101.72 591363.4,-466044.39 591334.78,-465929.84 591320.58,-465915.59 591349.43,-465887.43 591580.07,-465858.82 591608.91,-465844.68 591695.45,-465758.85 591709.98,-465701.63 591738.82,-465615.81 591753.47,-465615.7 591695.78,-465587.09 591710.31,-465415.32 591710.54,-465243.44 591682.14,-465157.5 591653.41,-465042.96 591624.79,-465014.24 591596.06,-464985.63 591596.17,-464842.47 591596.39,-464670.7 591567.88,-464642.09 591553.57,-464627.85 591582.53,-464613.6 591640.1,-464584.99 591654.53,-464556.38 591683.37,-464499.27 591712.33,-464470.66 591741.17,-463869.43 591742.4,-463840.82 591728.09,-463826.57 591756.93,-463812.32 591814.51,-463755.1 591829.05,-463669.27 591858,-463612.06 591872.53,-463597.81 591901.38,-463569.31 591930.34,-463540.7 591988.02,-463512.31 592074.56,-463512.42 592160.98,-463541.15 592218.55,-463569.98 592276.13,-463584.23 592290.44,-463598.59 592304.86,-463612.95 592319.17,-463727.49 592347.79,-463784.71 592362.22,-463799.18 592419.79,-463828.13 592563.79,-463842.38 592578.21,-463856.85 592592.64,-463871.1 592606.95,-463885.46 592621.37,-463899.82 592635.68,-463914.18 592650.1,-463928.43 592664.41,-463942.79 592678.95,-463957.15 592693.26,-463971.51 592707.68,-464000.34 592822.83,-464014.92 592966.95,-464158.08 592966.72,-464172.66 593110.72,-464187.02 593125.03,-464201.38 593139.45,-464215.74 593197.14,-464129.8 593182.83,-464043.86 593168.63,-464029.62 593139.79,-464000.89 593082.21,-463972.17 593053.48,-463943.45 592995.9,-463928.98 592938.32,-463871.65 592923.9,-463843.04 592895.17,-463814.32 592866.44,-463756.99 592852.13,-463756.88 592794.55,-463699.66 592780.13,-463527.9 592780.46,-463470.68 592795.11,-463485.26 592910.26,-463499.51 592924.68,-463513.87 592939.11,-463528.23 592953.42,-463542.59 592967.84,-463571.65 593227.22,-463600.7 593428.8,-463600.81 593486.49,-463586.56 593544.18,-463557.95 593558.6,-463472.13 593573.13,-463457.77 593544.4,-463428.94 593400.4,-463400.1 593313.98,-463371.27 593227.55,-463342.44 593083.44,-463327.97 593025.86,-463299.25 593011.44,-463270.64 592982.71,-463241.92 592953.98,-463184.59 592925.24,-463098.65 592911.04,-463084.4 592882.2,-463069.93 592824.62,-463012.71 592824.73,-462998.35 592796,-462998.24 592767.16,-463012.49 592752.62,-463026.85 592738.31,-463041.1 592723.78,-463098.32 592709.24,-463112.45 592593.98,-463111.9 592277.03,-463083.07 592190.6,-463068.59 592104.18,-463011.26 592089.76,-462954.05 592075.56,-462939.69 592046.72,-462925.1 591931.56,-462867.88 591931.68,-462867.77 591873.99,-462839.16 591888.41,-462781.83 591888.52,-462610.07 591860.01,-462552.74 591831.28,-462495.41 591802.55,-462409.58 591788.35,-462409.47 591730.77,-462294.92 591716.46,-462180.38 591687.95,-462151.66 591659.11,-462094.44 591659.22,-462008.5 591659.45,-461979.89 591659.45,-461922.67 591659.56,-461893.95 591659.67,-461779.51 591688.63,-461750.91 591688.74,-461722.18 591659.89,-461664.97 591660.01,-461579.14 591689.07,-461521.92 591689.18,-461435.98 591674.99,-461421.84 591703.83,-461407.6 591790.25,-461350.38 591804.67,-461321.77 591833.63,-461293.16 591862.47,-461121.39 591862.81,-460978.24 591848.72,-460978.35 591906.3,-460949.74 591920.72,-460863.91 591949.79,-460778.08 591978.74,-460720.87 591978.86,-460634.93 591978.97,-460406.05 592008.26,-460377.45 592037.1,-460320.12 592037.22,-460291.51 592008.48,-460262.79 591979.64,-460205.46 591950.91,-460148.24 591922.17,-460090.91 591893.55,-460062.19 591864.71,-460004.86 591836.09,-459947.53 591807.36,-459918.92 591778.51,-459890.2 591749.78,-459832.87 591721.05,-459775.65 591706.85,-459775.54 591649.16,-459718.21 591634.85,-459575.05 591606.23,-459546.33 591577.5,-459460.51 591548.88,-459431.79 591548.88,-459403.18 591563.41,-459403.07 591476.99,-459288.52 591462.68,-459202.58 591434.06,-459059.42 591434.28,-458944.99 591463.35,-458887.77 591492.2,-458830.55 591506.84,-458816.41 591593.26,-458788.03 591679.79,-458774 591881.59,-458831.22 591867.06,-458945.77 591866.83,-458960.13 591881.26,-458988.85 591938.83,-459003.09 591953.14,-459089.03 591981.76,-459103.5 591996.3,-459117.75 592010.61,-459175.08 592024.92,-459175.19 592082.61,-459289.63 592096.69,-459346.96 592125.43,-459490.12 592125.2,-459504.48 592110.78,-459518.73 592096.36,-459533.09 592081.94,-459532.98 592053.09,-459518.5 591995.51,-459547.11 592009.82,-459561.58 592024.25,-459575.83 592038.56,-459690.38 592067.18,-459747.71 592081.49,-459747.82 592139.18,-459805.04 592139.06,-459805.15 592167.91,-459776.54 592182.33,-459747.82 592182.33,-459661.99 592182.55,-459604.78 592197.09,-459590.64 592254.78,-459562.03 592283.62,-459562.25 592398.89,-459576.5 592413.2,-459748.27 592412.86,-459776.88 592398.44,-459767.3 592475.02,-459719.77 592470.55,-459691.16 592470.66,-459633.94 592499.51,-459605.33 592528.46,-459579.56 592569.83,-459548.23 592600.69,-459523.28 592639.21,-459470.35 592688.9,-459437.71 592750.47,-459466.64 592801.52,-459519.14 592813.23,-459559.29 592800.6,-459608.53 592792.06,-459732.35 592768.62,-459763.41 592801.93,-459792.24 592917.19,-459806.49 592931.5,-459863.82 592945.93,-459863.82 592974.77,-459835.21 592989.08,-459806.71 593018.04,-459749.38 593032.57,-459739.81 593080.31,-459720.88 593090.26,-459720.66 592975,-459692.05 592960.57,-459663.33 592946.26,-459649.19 593003.95,-459620.81 593090.49,-459592.2 593119.33,-459578.06 593234.6,-459635.28 593220.06,-459663.89 593205.64,-459664 593292.06,-459606.67 593277.75,-459463.51 593249.13,-459434.9 593249.24,-459406.29 593278.09,-459349.08 593292.73,-459334.94 593350.31,-459306.33 593379.27,-459277.94 593494.54,-459263.58 593523.38,-459435.35 593508.62,-459521.29 593494.09,-459521.18 593436.51,-459578.39 593436.4,-459592.87 593493.98,-459621.59 593551.55,-459635.83 593565.87,-459664.44 593565.87,-459693.16 593565.75,-459721.77 593580.18,-459721.66 593522.6,-459778.88 593507.95,-459793.24 593493.64,-459821.74 593435.95,-459835.88 593349.42,-459864.48 593349.31,-459879.07 593464.57,-459893.43 593493.42,-459864.82 593507.84,-459807.6 593522.37,-459822.07 593579.95,-459836.43 593666.49,-459893.76 593666.38,-459893.76 593695.11,-459807.93 593709.64,-459722.11 593738.6,-459693.5 593738.71,-459636.17 593709.98,-459521.62 593695.89,-459507.59 593868.74,-459479.1 593897.69,-459479.1 593926.43,-459479.32 594012.96,-459465.07 594070.65,-459436.46 594085.08,-459379.13 594099.61,-459393.6 594157.19,-459422.44 594243.61,-459451.27 594330.04,-459479.99 594387.61,-459508.71 594445.19,-459537.43 594531.62,-459551.9 594589.2,-459554.24 594642.1,-459513.68 594684.36,-459404.8 594734.99,-459346.64 594791.86,-459347.47 594806.29,-459329.05 594818.64,-459308.47 594880.05,-459281.07 594862.37,-459266.13 594847.92,-459232.98 594842.91,-459227.89 594769.9,-459215.06 594758.97,-459217.17 594741.14,-459176.31 594731.11,-459122.65 594748.52,-459065.43 594748.63,-459008.22 594763.16,-458993.86 594705.47,-458965.13 594647.89,-458936.41 594619.16,-458907.81 594590.43,-458879.08 594561.58,-458850.36 594504,-458844.8 594461.68,-458841.41 594415.44,-458828.66 594373.35,-458821.02 594315.01,-458849.81 594244.62,-458878.31 594158.08,-458906.8 594042.81,-458920.72 593898.7,-458863.5 593898.81,-458877.86 593869.97,-458892 593841.12,-458834.78 593841.23,-458834.67 593783.54,-458777.34 593769.23,-458720.12 593754.92,-458705.76 593726.19,-458677.15 593697.34,-458662.68 593668.61,-458748.51 593653.97,-458762.87 593639.54,-458762.76 593581.96,-458734.04 593524.39,-458705.32 593466.81,-458690.84 593437.96,-458748.17 593423.43,-458805.39 593408.9,-458819.64 593351.32,-458848.14 593264.78,-458848.03 593207.09,-458819.31 593149.52,-458790.47 593091.94,-458758.36 593064.97,-458705.37 593036.54,-458667.31 593021.3,-458570.87 593011.35,-458496.39 593006.6,-458493.65 592996.34,-458535.27 592980.59,-458599.91 592963.31,-458672.69 592945.37,-458729.79 592901.36,-458775.67 592846.98,-458790.03 592832.56,-458842.23 592751.42,-458861.11 592663.95,-458824.67 592586.35,-458751.96 592502.37,-458637.81 592429.73,-458497.73 592419.87,-458355.56 592390.83,-458262.69 592341.53,-458174.99 592327.4,-458141.54 592309.75,-458144.91 592268.37,-458123.64 592228.43,-458130.46 592170.93,-458097.17 592088.14,-458009.68 591990.54,-457902.57 591932.9,-457650.64 591814.67,-457645.38 591811.29,-457636.06 591805.42,-457620.84 591801.04,-457607.36 591794.29,-457595.75 591789.42,-457584.29 591785.98,-457575.68 591782.53,-457568.62 591781.9,-457559.51 591782.68,-457546.35 591782.68,-457532.7 591782.21,-457521.57 591781.59,-457511.84 591779.86,-457499.45 591777.19,-457489.25 591775.31,-457481.41 591772.49,-457475.76 591771.7,-457466.2 591769.36,-457460.07 591766.21,-457455.22 591764.81,-457450.04 591764.65,-457440.27 591764.79,-457436.45 591765.21,-457428.55 591766.06,-457417.26 591767.25,-457410.36 591767.94,-457405.03 591766.53,-457395.45 591762.45,-457384.01 591757.11,-457375.38 591752.26,-457367.67 591746.9,-457329.83 591694.9,-457309.87 591661.63,-457233.36 591635,-457179.53 591616.26,-457145.71 591616.75,-457111.72 591577.71,-457068.37 591555.29,-457025.01 591563.37,-456973.68 591550.35,-456920.91 591560.47,-456871.74 591597.34,-456836.19 591628.69,-456763.54 591687.97,-456652.97 591742.22,-456610.26 591807.84,-456513.51 591853.26,-456436.88 591875.97,-456317.52 591886.06,-456281.31 591880.76,-456257.22 591877.23,-456154.54 591857.44,-456125.93 591886.4,-456126.04 591915.13,-456117.76 591957.98,-456062.49 591998.36,-456013.49 591993.31,-455968.26 591966.82,-455914.23 591945.36,-455867.75 591944.11,-455835.09 591984.48,-455793.62 591970.61,-455739.43 591915.91,-455651.58 591868.91,-455618.04 591858.55,-455541.48 591773.89,-455529.45 591738.48,-455489.02 591696.15,-455462.36 591651.24,-455393.55 591576.95,-455345.38 591512.16,-455237.01 591396.42,-455137.19 591311.75,-455031.45 591260.81,-454977.27 591226.25,-454901.58 591161.47,-454665.91 591009.44,-454627.21 590993.9,-454564.42 590938.62,-454527.44 590889.38,-454505.94 590877.28,-454474.97 590878.14,-454444.47 590878.06,-454414.45 590881.17,-454390.82 590872.32,-454363.87 590862.15,-454298.66 590847.91,-454266.08 590849.01,-454232.33 590857.04,-454192.79 590874.88,-454169.69 590878.89,-454140.38 590856.59,-454111.06 590857.93,-454099.52 590866.41,-454090.19 590870.42,-454082.19 590868.64,-454070.64 590858.83,-454054.21 590852.13,-454026.22 590854.37,-454008.01 590865.06,-453989.8 590863.73,-453969.37 590856.59,-453901.41 590835.63,-453868.98 590831.17,-453816.56 590818.23,-453727.73 590809.75,-453653.1 590803.96,-453615.21 590815.16,-453570.66 590838.58,-453532.39 590851.49,-453545.13 590823.74,-453545.13 590808.09,-453562.13 590794.59,-453562.13 590782.49,-453535.23 590765.42,-453510.44 590756.17,-453461.55 590794.59,-453444.56 590786.05,-453439.6 590803.83,-453433.22 590818.05,-453402.07 590823.04,-453259.6 590901,-453206.1 590981.5,-453132.04 590981.5,-453090.48 591020.21,-453059.5 591039.18,-453019.45 591025.52,-453003.58 591031.59,-452982.42 591012.61,-452980.91 590989.85,-452969.58 590973.16,-452931.04 590958.74,-452887.97 590961.77,-452867.57 590975.43,-452851.69 590972.4,-452800.31 590954.19,-452794.26 590957.98,-452751.95 590942.8,-452716.43 590925.35,-452693.01 590939.77,-452683.94 590951.15,-452660.51 591007.3,-452658.25 591055.12,-452689.23 591096.85,-452741.37 591162.12,-452794.26 591209.94,-452864.54 591245.6,-452892.19 591305.42,-452938.54 591502.75,-452940.76 591573.7,-452923.09 591619.14,-452913.16 591655.73,-452919.79 591705.62,-452941.86 591771.02,-452967.24 591782.1,-452974.97 591800.95,-452998.15 591817.57,-453014.71 591815.36,-453020.23 591806.5,-453056.65 591820.91,-453064.38 591832,-453064.38 591853.06,-453068.8 591865.25,-453103.02 591890.75,-453151.59 591906.26,-453178.07 591909.6,-453186.91 591927.33,-453206.77 591932.87,-453237.68 591929.54,-453256.44 591940.63,-453298.38 591955.04,-453330.4 591961.69,-453325.98 591939.53,-453341.44 591931.77,-453378.97 591948.39,-453386.69 591957.26,-453415.39 591967.24,-453434.16 591969.45,-453483.83 592022.67,-453532.4 592038.19,-453580.97 592080.31,-453657.12 592161.23,-453675.89 592235.51,-453646.09 592296.48,-453540.12 592341.94,-453510.32 592344.15,-453483.83 592367.43,-453449.61 592401.79,-453433.06 592449.47,-453447.41 592518.2,-453436.36 592548.13,-453399.94 592561.43,-453367.92 592558.1,-453329.3 592571.41,-453306.12 592600.23,-453263.06 592609.11,-453247.61 592602.45,-453204.56 592559.22,-453191.32 592549.24,-453172.56 592549.24,-453151.59 592523.75,-453143.85 592501.56,-453143.85 592472.74,-453131.72 592447.25,-453096.39 592423.96,-453062.17 592423.96,-452992.63 592445.03,-452977.18 592441.71,-452960.62 592427.3,-452915.37 592425.08,-452907.64 592438.38,-452892.19 592441.71,-452891.08 592458.33,-452883.35 592462.77,-452862.38 592443.92,-452856.87 592407.34,-452824.85 592378.52,-452819.33 592328.63,-452808.3 592306.46,-452791.73 592292.05,-452792.84 592257.68,-452822.65 592194.49,-452825.95 592175.65,-452810.5 592159.02,-452750.9 592137.96,-452719.99 592110.24,-452671.42 592094.72,-452639.42 592074.77,-452618.44 592033.75,-452602.98 591966.13,-452577.6 591938.42,-452577.6 591928.43,-452582.01 591910.7,-452574.28 591874.12,-452546.69 591840.86,-452534.55 591806.5,-452524.61 591776.57,-452510.26 591775.46,-452494.81 591786.54,-452449.56 591822.01,-452433 591846.41,-452440.72 591870.79,-452446.25 591901.3,-452447.35 591916.24,-452428.59 591927.33,-452371.18 591932.87,-452345.8 591926.22,-452330.35 591911.81,-452280.68 591906.26,-452218.86 591917.36,-452204.51 591918.46,-452166.98 591924.01,-452130.55 591921.78,-452090.82 591916.24,-452086.4 591898.51,-452044.46 591900.72,-451982.64 591933.98,-451990.37 591952.83,-451990.37 591972.77,-451970.15 591990.82,-451906.88 591986.26,-451858.31 591970.74,-451846.16 591949.68,-451824.09 591925.28,-451762.27 591896.46,-451744.61 591874.29,-451628.71 591845.47,-451594.49 591829.95,-451571.77 591807.02,-451543.97 591757.8,-451544.44 591746.91,-451475.16 591707.15,-451459.61 591704.31,-451438.4 591695.32,-451413.9 591679.7,-451399.75 591678.75,-451385.61 591683.48,-451358.28 591676.38,-451343.2 591677.8,-451293.72 591666.93,-451283.82 591651.78,-451264.03 591649.88,-451254.13 591655.56,-451185.33 591659.82,-451160.35 591678.75,-451136.78 591685.85,-451100.02 591686.32,-451048.18 591678.28,-451012.84 591665.51,-451011.89 591655.56,-450976.02 591640.5,-450949.21 591629.53,-450918.57 591637.1,-450909.15 591629.53,-450862.02 591629.53,-450812.54 591625.27,-450774.37 591629.06,-450714.51 591615.33,-450688.59 591608.23,-450612.71 591536.29,-450589.16 591504.1,-450579.73 591468.13,-450544.04 591417.69,-450532.72 591409.65,-450513.38 591415.01,-450489.39 591413.67,-450437.41 591395.6,-450406.75 591374.85,-450259.45 591319.96,-450227.46 591299.88,-450211.46 591338.71,-450198.13 591345.39,-450180.8 591346.73,-450157.48 591359.46,-450104.83 591352.09,-450084.83 591346.06,-450074.83 591330,-450052.84 591319.96,-450039.5 591318.63,-450031.51 591331.34,-450010.52 591322.64,-449985.53 591305.91,-449982.85 591289.84,-449967.86 591287.83,-449946.2 591280.81,-449926.54 591287.49,-449916.88 591285.16,-449906.54 591277.45,-449894.88 591262.73,-449881.55 591240.97,-449871.55 591241.64,-449863.55 591267.75,-449848.22 591291.85,-449829.57 591301.22,-449814.23 591304.56,-449793.57 591297.87,-449743.58 591342.05,-449738.92 591372.84,-449723.86 591398.44,-449706.26 591438.44,-449690.93 591498.68,-449679.6 591550.89,-449649.33 591599.09,-449574.3 591684.1,-449557.64 591691.45,-449539.64 591685.43,-449518.97 591675.39,-449486.98 591691.45,-449457.66 591735.64,-449452.33 591753.04,-449439.66 591766.43,-449392.32 591798.77,-449378.34 591811.94,-449354.1 591851.33,-449313.97 591874.26,-448993.89 592132.23,-448881.14 592184.78,-448754.07 592235.42,-448716.81 592266.95,-448597.37 592469.51,-448584.49 592521.43,-448581.73 592571.12,-448582.83 592625.23,-448593.33 592662.77,-448605.48 592677.14,-448623.14 592683.21,-448644.67 592679.34,-448654.61 592666.64,-448678.91 592661.11,-448692.16 592659.46,-448697.13 592651.73,-448750.88 592643.64,-448767.28 592654.56,-448776.64 592668.63,-448770.4 592677.21,-448776.64 592703.77,-448757.91 592709.22,-448766.49 592731.87,-448768.84 592749.83,-448784.46 592763.88,-448786.79 592794.34,-448789.14 592802.15,-448804.76 592807.62,-448839.11 592809.95,-448857.85 592870.08,-448857.07 592899.75,-448866.44 592910.69,-448872.69 592921.62,-448868.78 592951.29,-448879.71 592980.18,-448875.82 593034.84,-448878.15 593055.15,-448878.15 593078.57,-448887.53 593087.15,-448900.8 593085.6,-448910.95 593137.91,-448918.76 593159,-448913.3 593178.52,-448922.66 593218.34,-448921.88 593244.88,-448940.63 593263.63,-448960.14 593270.65,-448972.82 593305.89,-448995.17 593325.57,-449029.77 593342.17,-449056.1 593341.24,-449068.95 593332.64,-449088.56 593332.33,-449114.88 593365.54,-449146.42 593380.3,-449162.34 593409.82,-449177.65 593426.43,-449192.04 593442.73,-449201.22 593463.02,-449202.75 593483.31,-449197.55 593500.23,-449189.28 593507.61,-449185.92 593524.51,-449186.83 593557.11,-449185.92 593577.09,-449188.06 593591.86,-449183.47 593635.52,-449185.31 593657.04,-449199.69 593669.65,-449200.3 593677.65,-449198.16 593689.33,-449195.1 593698.87,-449202.14 593718.54,-449212.86 593736.99,-449213.77 593750.22,-449207.04 593769.28,-449197.85 593776.97,-449188.67 593779.43,-449187.44 593800.64,-449177.34 593821.56,-449204.9 593857.84,-449220.2 593850.46,-449231.84 593864.6,-449248.37 593877.83,-449260.61 593883.66,-449271.65 593894.73,-449294.3 593902.11,-449310.22 593931.02,-449315.42 593967,-449314.8 593999.59,-449307.16 594033.11,-449306.54 594043.26,-449301.95 594054.02,-449307.46 594060.48,-449308.99 594075.54,-449309.6 594112.75,-449322.77 594150.57,-449325.22 594201.92,-449333.79 594240.06,-449345.12 594262.5,-449346.95 594278.49,-449354.3 594292.32,-449367.78 594306.17,-449384.92 594318.15,-449423.2 594343.68,-449430.54 594353.51,-449449.21 594356.9,-449469.11 594367.05,-449484.12 594379.04,-449498.5 594399.03,-449504.94 594403.33,-449508 594427.01,-449508 594461.45,-449501.88 594484.2,-449503.71 594506.35,-449500.04 594519.26,-449501.88 594535.87,-449524.53 594544.47,-449547.81 594536.48,-449555.77 594540.17,-449540.45 594568.46,-449531.26 594571.53,-449525.14 594581.98,-449524.03 594597.03,-449516.75 594634.28,-449498.65 594670.21,-449494.63 594702.11,-449514.33 594771.56,-449524.79 594788.52,-449544.48 594809.11,-449610.41 594851.91,-449613.23 594857.96,-449642.97 594877.35,-449654.64 594878.15,-449668.31 594886.22,-449676.35 594897.13,-449688.4 594929.43,-449703.69 594954.06,-449722.58 594969.41,-449725.8 594975.87,-449723.78 594998.06,-449750.32 595009.38,-449765.99 595020.28,-449772.83 595019.06,-449781.68 595010.6,-449800.57 595009.78,-449817.46 595013.81,-449827.91 595020.28,-449835.95 595035.63,-449843.98 595043.69,-449862.89 595054.19,-449880.97 595059.04,-449889.82 595063.07,-449923.19 595120.81,-449949.31 595145.44,-449975.85 595197.53,-449988.72 595232.26,-449997.96 595243.16,-450031.73 595258.91,-450034.55 595273.05,-450051.84 595296.46,-450073.15 595292.42,-450113.74 595325.14,-450102.49 595348.14,-450111.09 595374.9,-450139.46 595392.56,-450167.82 595394.71,-450180.67 595413.98,-450202.08 595431.1,-450278.61 595429.49,-450284.5 595434.31,-450287.7 595461.07,-450253.98 595477.66,-450194.05 595520.48,-450209.57 595527.97,-450176.92 595575.6,-450187.63 595584.7,-450168.36 595618.42,-450169.96 595642.51,-450181.2 595658.02,-450197.26 595655.35,-450215.99 595640.36,-450232.58 595631.79,-450238.47 595638.76,-450234.18 595646.25,-450223.48 595676.75,-450229.91 595707.8,-450244.89 595739.37,-450248.1 595753.83,-450265.23 595773.09,-450268.43 595787.54,-450264.69 595807.88,-450267.9 595819.65,-450267.9 595834.11,-450259.87 595846.42,-450257.74 595882.27,-450265.23 595889.76,-450265.23 595908.5,-450268.43 595926.69,-450262.56 595948.64,-450262.56 595963.62,-450250.24 595973.8,-450251.31 595981.29,-450261.26 595986.17,-450270.74 595992.36,-450274.52 596009,-450275.28 596042.31,-450271.12 596068.42,-450263.55 596082.05,-450253.71 596092.25,-450252.95 596124.05,-450262.79 596132.75,-450265.82 596149.03,-450264.68 596166.82,-450252.19 596189.89,-450249.92 596216.01,-450252.57 596239.85,-450256.35 596252.34,-450256.35 596265.21,-450243.86 596282.62,-450228.74 596285.65,-450221.92 596292.45,-450197.32 596297.37,-450193.16 596301.91,-450202.62 596309.86,-450208.3 596317.81,-450209.06 596326.14,-450203.38 596337.11,-450205.27 596343.17,-450212.84 596352.63,-450226.47 596380.26,-450232.9 596394.25,-450232.9 596411.66,-450244.62 596434.37,-450251.43 596438.91,-450255.22 596445.35,-450258.25 596456.32,-450264.3 596462.38,-450266.2 596471.08,-450265.44 596480.17,-450258.63 596489.25,-450252.19 596507.03,-450245.76 596538.44,-450248.03 596545.63,-450249.92 596562.67,-450252.95 596568.34,-450263.92 596571.75,-450271.49 596580.08,-450273.39 596596.34,-450269.22 596614.13,-450262.79 596628.89,-450249.99 596644.05,-450226.15 596662.97,-450198.15 596669.78,-450179.6 596686.44,-450164.08 596701.58,-450162.19 596712.17,-450165.22 596714.82,-450172.03 596711.42,-450190.2 596714.07,-450200.8 596717.09,-450208.74 596725.8,-450214.04 596737.14,-450225.02 596737.9,-450235.24 596744.33,-450228.8 596797.7,-450230.7 596817.38,-450229.18 596834.78,-450232.59 596861.27,-450229.18 596876.79,-450230.7 596889.28,-450232.59 596899.88,-450237.51 596905.56,-450247.34 596908.21,-450251.12 596943.39,-450251.12 596959.67,-450253.77 596978.97,-450244.69 596992.22,-450232.97 597021.36,-450224.64 597031.2,-450228.42 597042.93,-450220.1 597068.66,-450211.39 597090.61,-450208.37 597133,-450209.43 597200.65,-450194.49 597271.75,-450172.6 597298.41,-450157.1 597342.87,-450120.61 597352.05,-450092.07 597366.7,-450054.59 597378.36,-450029.78 597370.91,-450022.83 597356.77,-450020.84 597335.92,-450015.08 597326.91,-449995.37 597300.63,-449972.81 597252.37,-449960.43 597233.75,-449955.66 597212.84,-449928.02 597157.47,-449898.97 597140.85,-449874.41 597111.06,-449843.16 597070.44,-449841.65 597057.57,-449844.29 597037.89,-449844.67 597025.79,-449848.84 597013.68,-449847.7 596997.78,-449840.51 596976.21,-449831.05 596962.96,-449831.05 596950.47,-449824.61 596942.53,-449850.35 596912.26,-449860.57 596903.93,-449877.6 596899.77,-449888.57 596893.33,-449904.84 596878.57,-449914.68 596874.79,-449921.87 596863.81,-449926.42 596850.94,-449926.04 596837.32,-449918.09 596810.84,-449918.09 596801,-449923.77 596793.43,-449948.37 596788.51,-449962.75 596788.13,-449983.19 596780.18,-449990.37 596763.53,-449993.02 596752.93,-450003.99 596737.03,-449982.02 596692.86,-449962.95 596693.64,-449952.05 596690.52,-449947.78 596684.65,-449951.27 596680.35,-449949.32 596674.1,-449918.19 596663.54,-449906.12 596638.91,-449896.39 596630.31,-449880.05 596631.49,-449853.97 596648.68,-449847.36 596663.54,-449848.52 596673.7,-449828.68 596667.06,-449826.73 596617.02,-449841.12 596594.73,-449844.24 596576.37,-449839.57 596559.56,-449849.69 596536.49,-449872.66 596529.06,-449897.95 596513.43,-449909.24 596494.28,-449861.76 596494.28,-449841.9 596487.23,-449832.56 596470.82,-449814.66 596466.51,-449806.49 596440.33,-449791.31 596439.55,-449773.41 596395.37,-449763.68 596379.73,-449760.95 596369.18,-449776.51 596316.01,-449787.02 596303.11,-449817 596292.56,-449827.51 596283.17,-449838.8 596266.76,-449847.75 596262.85,-449866.04 596257.77,-449878.88 596246.04,-449891.73 596219.07,-449891.73 596202.26,-449885.49 596183.1,-449883.17 596159.65,-449867.98 596125.64,-449858.25 596110.13,-449853.58 596097.49,-449851.25 596061.53,-449840.74 596050.19,-449829.46 596004.06,-449815.44 595986.47,-449815.44 595971.62,-449808.82 595968.09,-449802.59 595952.46,-449788.58 595941.13,-449785.86 595926.27,-449785.86 595891.47,-449781.97 595880.15,-449774.58 595871.93,-449756.66 595857.47,-449746.55 595837.92,-449734.87 595828.93,-449725.92 595816.42,-449711.52 595809.78,-449708.41 595801.96,-449698.68 595794.53,-449684.27 595792.58,-449675.71 595787.89,-449660.92 595776.16,-449638.34 595717.92,-449638.34 595705.02,-449633.68 595695.24,-449622.39 595683.52,-449613.69 595677.35,-449602.54 595679.99,-449590.86 595667.87,-449587.75 595647.55,-449594.75 595630.35,-449614.61 595615.1,-449642.39 595605.35,-449648.63 595595.97,-449646.29 595590.11,-449634.22 595585.42,-449633.28 595571.71,-449630.44 595559.03,-449613.42 595544.54,-449602.82 595537.53,-449588.64 595531.85,-449578.93 595525.13,-449566.84 595522.15,-449548.92 595520.96,-449535.78 595515.14,-449507.72 595533.05,-449498.61 595531.56,-449488.21 595528.61,-449482.42 595527.56,-449469.8 595536.77,-449449.12 595532.89,-449445.5 595525.65,-449436.45 595518.4,-449423.77 595522.02,-449405.67 595505.73,-449391.19 595503.02,-449380.91 595500.21,-449371.45 595492.81,-449357.65 595489.43,-449339.74 595484.66,-449316.97 595489.44,-449309.89 595481.42,-449303.91 595473.9,-449302.71 595457.19,-449290.36 595442.77,-449275.24 595422.55,-449261.76 595396.21,-449270.47 595386.72,-449269.91 595377.2,-449266.28 595368.15,-449251.35 595365.22,-449247.28 595344.62,-449237.33 595327.42,-449229.18 595317.47,-449220.13 595312.03,-449215.6 595301.18,-449201.11 595291.21,-449194.53 595288.98,-449197.7 595261.59,-449190.69 595248.28,-449186.67 595239.07,-449182.61 595231.35,-449186.6 595224.72,-449172.84 595209.8,-449166.16 595211.23,-449161.81 595214.12,-449149.64 595200.66,-449145.16 595195.71,-449136.46 595178.18,-449131.63 595159.39,-449125.06 595140,-449115.43 595119.63,-449110.45 595112.13,-449114.82 595105.96,-449099.52 595099.95,-449086.92 595094.38,-449082.97 595073.77,-449098.78 595065.77,-449094.69 595052.14,-449091.57 595043.49,-449074.49 595043.19,-449055.43 595042.06,-449050.31 595041.99,-449044.2 595051.3,-449042.83 595041.89,-449039.97 595016.7,-449053.38 595010.89,-449059.46 595000.46,-449053.15 594990.64,-449041.33 594992,-449023.35 595003.38,-449011.97 595019.76,-448997.77 595027.28,-448978.83 595019.31,-448968.51 595005.2,-448957.59 595003.6,-448947.2 594998.59,-448937.74 594997.38,-448934.45 594991.86,-448918.48 594981.91,-448900.86 594965.87,-448893.16 594949.28,-448892.61 594935.46,-448877.2 594922.19,-448865.08 594919.99,-448854.07 594894.01,-448813.01 594857.57,-448787.53 594838.74,-448763.33 594811.71,-448728.93 594805.97,-448686.15 594800.01,-448608.93 594795.89,-448583.18 594784.56,-448575.98 594759.85,-448553.31 594747.49,-448582.15 594684.68,-448608.93 594655.84,-448651.14 594618.77,-448728.37 594646.57,-448751.03 594643.49,-448757.55 594633.58,-448771.11 594605.9,-448769.56 594572.44,-448761.84 594541.55,-448658.86 594402.01,-448641.88 594364.94,-448711.9 594319.11,-448612.01 594169.8,-448567.93 594090.64,-448557.74 594069.07,-448569.61 594060.27,-448570.17 594053.41,-448556.54 594033.29,-448549.16 594032.32,-448518.72 594043.51,-448507.26 594024.4,-448543.57 594001.47,-448514.91 593926.94,-448484.12 593905.4,-448458.62 593888.71,-448450.86 593868.11,-448410.42 593835.29,-448356.12 593779.64,-448340.06 593744.02,-448330.64 593678.92,-448304.04 593595.45,-448290.2 593551.49,-448293.51 593516.44,-448284.1 593463.57,-448279.67 593307.76,-448396.02 593228.75,-448393.8 593194.81,-448406.55 593182.01,-448252.52 592985.02,-448262.49 592928.82,-448250.86 592888.76,-448238.11 592837.01,-448208.8 592773.23,-448189.22 592769.96,-448178.28 592764.49,-448155.46 592736.02,-448166.82 592720.88,-447869.58 592492.74,-447860.93 592506.7,-447855.95 592503.28,-447861.87 592495.52,-447815.63 592462.59,-447797.14 592461.85,-447772.73 592442.99,-447776.06 592439.66,-447752.01 592420.8,-447748.68 592424.49,-447733.89 592412.29,-447737.58 592407.1,-447716.88 592392.68,-447698.26 592384.66,-447635.99 592389.53,-447540.4 592392.96,-447515.07 592365.67,-447440.46 592363.3,-447370.27 592363.19,-447341.75 592364.31,-447330.21 592369.05,-447325.07 592375.61,-447311.9 592380.61,-447252.13 592400.4,-447216.39 592405.42,-447208.98 592418.97,-447174.39 592436.42,-447123.75 592455.54,-447009.1 592531.97,-446951.77 592586.43,-446921.09 592613.91,-446856.22 592679.11,-446822.67 592715.71,-446790.36 592730.46,-446662.73 592768.1,-446607.8 592786.12,-446560.57 592806.38,-446506.86 592836.68,-446446.63 592886.84,-446424.6 592959.12,-446412.85 593047.63,-446420.2 593127.3,-446442.23 593193.69,-446473.07 593249.75,-446525.95 593286.63,-446650.81 593342.68,-446693.71 593366.99,-446751.03 593395.27,-446770.13 593424.56,-446814.38 593466.98,-446845.55 593484.14,-446896.83 593553.82,-446888.8 593590.18,-446908.9 593626.54,-446912.93 593654.82,-446966.22 593717.44,-446995.38 593739.65,-447022.53 593756.82,-447023.54 593769.95,-447015.5 593791.16,-447025.55 593806.31,-447025.55 593821.46,-447062.87 593906.74,-447082.97 593929.3,-447111.33 593943.54,-447129.07 593950.67,-447138.53 593962.54,-447138.53 593986.29,-447131.44 594025.47,-447138.53 594063.46,-447158.62 594096.71,-447200 594118.08,-447235.47 594158.44,-447253.2 594170.33,-447287.49 594177.45,-447308.76 594240.38,-447321.77 594317.55,-447311.13 594393.54,-447309.95 594433.91,-447306.4 594517.02,-447307.58 594587.07,-447295.76 594629.81,-447268.57 594663.06,-447248.74 594700.25,-447227.25 594725.05,-447223.13 594735.61,-447208.95 594744.8,-447208.49 594759.04,-447204.84 594771.89,-447213.53 594777.41,-447224.05 594771.89,-447223.12 594783.99,-447247.96 594831.77,-447247 594871.89,-447260.48 594894.15,-447262.24 594922.44,-447244.14 594955.98,-447219.39 594980.2,-447177.26 594993.24,-447187.37 594955.8,-447203.05 594897.69,-447204.97 594875.72,-447182.72 594868.96,-447186.81 594837.5,-447179.16 594794.5,-447134.81 594764.62,-447112.93 594749.86,-447086.39 594735.69,-447047.54 594714.95,-447028.79 594701.17,-447023.76 594683.26,-447032 594665.35,-447020.56 594657.54,-446989.46 594652.49,-446961.12 594658.46,-446944.31 594679.97,-446925.28 594688.42,-446907.13 594692.86,-446870.38 594681.75,-446836.29 594679.97,-446829.65 594656.85,-446834.08 594624.84,-446838.26 594613.71,-446844.26 594597.72,-446848.69 594582.15,-446829.21 594558.58,-446812.27 594558.51,-446770.23 594561.37,-446680.36 594550.09,-446607.31 594525.49,-446610.74 594502.67,-446622.31 594476.48,-446630.49 594470.71,-446639.14 594468.3,-446642.51 594462.05,-446641.07 594445.2,-446648.77 594428.37,-446679.08 594397.1,-446699.76 594385.56,-446720.45 594379.78,-446746.43 594373.53,-446758.46 594363.9,-446760.87 594351.39,-446757.97 594336.96,-446733.92 594281.64,-446724.3 594265.76,-446707.46 594254.21,-446676.67 594244.58,-446654.53 594227.75,-446638.66 594201.29,-446630.97 594193.11,-446608.35 594175.79,-446561.68 594148.37,-446516.47 594132.49,-446486.15 594116.13,-446466.91 594110.85,-446445.74 594109.4,-446436.6 594104.1,-446426.02 594089.19,-446400.51 594054.07,-446391.85 594030.01,-446362.03 593953.52,-446350.97 593925.62,-446341.34 593909.75,-446318.25 593883.76,-446295.64 593864.04,-446289.38 593861.63,-446276.87 593869.33,-446265.74 593872.48,-446226.57 593870.57,-446180.02 593855.68,-446109.65 593819.62,-446097.37 593796.86,-446051.08 593748,-446036.92 593714.32,-446010.47 593673.05,-446001.97 593651.71,-445965.12 593617.08,-445938.21 593552.09,-445953.98 593515.11,-445934.61 593480.9,-445921.92 593431.24,-445912.57 593420.51,-445883.18 593411.79,-445869.82 593404.41,-445871.16 593398.38,-445833.09 593357.46,-445810.38 593348.74,-445784.98 593331.97,-445788.32 593315.87,-445765.62 593295.07,-445752.92 593293.06,-445744.24 593284.34,-445736.23 593260.86,-445718.19 593253.48,-445709.51 593260.86,-445666.1 593262.2,-445640.05 593256.16,-445611.99 593238.05,-445580.6 593230.67,-445551.21 593217.93,-445472.33 593217.11,-445469.04 593231,-445442.13 593255.26,-445421.11 593264.81,-445412.99 593258.1,-445400.54 593259.82,-445386.72 593269.59,-445316.02 593286.79,-445221.42 593322.14,-445144.03 593392.84,-445077.15 593434.88,-445060.91 593451.12,-445035.1 593456.86,-445019.81 593490.53,-445005.19 593479.4,-444989.06 593478.39,-444973 593487.43,-444946.25 593518,-444928.09 593537.11,-444908.43 593545.19,-444895.84 593540.64,-444892.81 593544.69,-444889.29 593562.91,-444879.21 593576.57,-444856.44 593589.67,-444765.67 593623.11,-444735.39 593642.48,-444711.54 593682.12,-444658.1 593709.36,-444619.53 593721.48,-444584.13 593720.57,-444550.69 593745.41,-444515.97 593760.5,-444498.06 593765.44,-444458.09 593779.68,-444413.85 593788.68,-444378.21 593796.26,-444328.15 593803.21,-444266.38 593836.91,-444256.26 593851.88,-444253.06 593870.07,-444258.38 593878.62,-444266.38 593878.62,-444258.92 593908.04,-444259.45 593943.34,-444254.66 593967.41,-444239.21 594001.64,-444216.69 594027.14,-444196.65 594052.74,-444175.49 594065.92,-444154.35 594104.74,-444133.94 594121.58,-444101.86 594131.83,-444074.87 594137.69,-444054.46 594166.98,-444036.96 594177.23,-444028.94 594213.12,-444009.98 594239.49,-444014.36 594254.13,-444030.4 594262.18,-444050.08 594302.47,-444048.62 594325.9,-444039.15 594368.37,-444027.48 594373.49,-444020.92 594388.88,-444027.48 594409.38,-444034.78 594421.1,-444042.79 594470.16,-444041.33 594485.54,-444034.04 594497.26,-443984.09 594527.5,-443969.21 594525.01,-443946.31 594496.52,-443941.18 594490.14,-443923.17 594494.36,-443908.75 594529.34,-443893.14 594555.88,-443901.55 594599.9,-443926.17 594628.84,-443934.58 594680.1,-443941.78 594691.56,-443921.96 594713.28,-443897.94 594724.74,-443868.91 594746.73,-443814.1 594753.23,-443782.11 594750.32,-443750.93 594719.79,-443782.69 594711.2,-443798.39 594699.52,-443789.67 594677.34,-443764.67 594669.16,-443763.94 594633.4,-443778.8 594627.82,-443784.55 594617.35,-443783.39 594580.75,-443807.04 594556.12,-443823.19 594522.21,-443818.27 594432.11,-443828.04 594408.95,-443823.54 594386.3,-443788.12 594345.73,-443764.39 594266.53,-443734.5 594221.93,-443705.87 594175.68,-443694.13 594128.38,-443665.94 594096.17,-443508.35 594010.82,-443470.07 593998.94,-443432.37 593996.11,-443409.85 593994.43,-443396.35 593975.21,-443381.15 593970.68,-443340.63 593971.81,-443309.11 593945.24,-443278.16 593955.99,-443243.26 593967.85,-443220.74 593966.16,-443201.05 593958.81,-443174.33 593690.31,-443130.09 593684.8,-443087.93 593934.5,-443070.47 593916.98,-443052.53 593922.17,-443040.1 593932.68,-443011.44 593937.45,-442903.18 593947.19,-442872.76 593954.43,-442822.23 593953.39,-442801.23 593960.38,-442779.26 593970.89,-442733.04 593970.49,-442700.04 593962.2,-442642.81 593935.27,-442603.11 593926.99,-442541.24 593941.49,-442517.01 593936.83,-442505.67 593940.97,-442495.87 593939.42,-442477.83 593926.99,-442468.54 593924.92,-442433.48 593945.64,-442433.56 593965.56,-442427.36 593974.44,-442398.03 593976.63,-442386.31 593988.35,-442375.22 593988.61,-442348.93 593985.25,-442323.92 593974.37,-442295.05 593956.25,-442277.78 593940.72,-442270.82 593930.09,-442273.91 593926.22,-442279.83 593926.22,-442281.38 593921.55,-442278.3 593918.44,-442271.33 593918.19,-442251.04 593923.14,-442208.85 593939.36,-442198.38 593949,-442192.96 593964.53,-442193.22 593980.84,-442186.26 594004.92,-442179.81 594019.16,-442169.76 594029.26,-442165.64 594038.58,-442163.57 594056.7,-442155.07 594073.79,-442146.31 594083.89,-442135.33 594088.73,-442120.95 594090.32,-442056.59 594114.7,-442035.2 594117.29,-442014.57 594138,-441995.78 594162.94,-441979.76 594197.76,-441976.17 594244.42,-441944.18 594306.27,-441907.88 594331.11,-441872.53 594331.11,-441811.38 594312.94,-441754.87 594270.56,-441771.12 594228.02,-441783.47 594197.53,-441786.29 594169.88,-441776.4 594151.45,-441760.87 594151.8,-441735.12 594162.79,-441701.23 594211.71,-441708.64 594177.32,-441713.93 594159.25,-441727.35 594143.65,-441729.12 594131.6,-441728.4 594123.45,-441716.06 594124.51,-441702.64 594128.05,-441685.7 594136.56,-441671.93 594158.89,-441662.4 594165.99,-441658.03 594176.52,-441658.71 594191.62,-441664.18 594206.73,-441661.1 594217.36,-441641.96 594237.61,-441623.17 594248.93,-441600.27 594247.22,-441568.84 594240.36,-441547.65 594225.25,-441539.1 594214.27,-441530.57 594212.55,-441526.8 594216.68,-441519.29 594221.14,-441508.36 594219.42,-441495.71 594209.81,-441480.33 594194.36,-441477.6 594183.73,-441447.87 594161.76,-441442.75 594152.49,-441404.81 594124.7,-441391.83 594120.57,-441390.8 594128.81,-441373.37 594133.97,-441358 594132.25,-441333.73 594126.76,-441313.57 594117.96,-441283.37 594095.51,-441267.91 594074.63,-441257.28 594056.19,-441252.44 594051.83,-441237.94 594052.31,-441237.94 594057.16,-441235.05 594060.56,-441225.86 594060.56,-441211.85 594052.8,-441200.25 594036.3,-441180.92 594025.61,-441150.95 594020.27,-441142.26 594026.58,-441133.08 594022.7,-441124.86 594010.08,-441109.4 594002.8,-441101.18 593989.22,-441100.69 593974.17,-441116.65 593953.29,-441085.12 593906.86,-441075.52 593881.61,-441069.57 593855.69,-441073.87 593833.43,-441076.52 593810.84,-441086.77 593805.19,-441087.76 593793.23,-441096.03 593781.59,-441115.56 593775.28,-441125.15 593768.97,-441125.47 593760.66,-441135.07 593723.45,-441148.64 593712.48,-441140.37 593697.86,-441135.4 593680.91,-441134.41 593663.3,-441137.72 593650.68,-441119.85 593599.84,-441109.6 593588.54,-441096.03 593564.62,-441091.4 593552.66,-441080.49 593547,-441060.96 593544.35,-441049.72 593533.39,-441033.5 593534.72,-441020.25 593563.88,-440918.71 593517.11,-440909.65 593519.3,-440890.91 593526.75,-440837.32 593508.8,-440825.41 593511.45,-440769.16 593483.55,-440736.97 593459.65,-440730.57 593431.35,-440697.26 593397.89,-440603.73 593367,-440578.1 593370.87,-440526.85 593333.55,-440492.27 593297.52,-440433.33 593276.94,-440344.75 593232.32,-440291.11 593230.62,-440243.71 593198.44,-440193.74 593186.87,-440170.69 593163.7,-440087.41 593134.11,-440063.06 593118.67,-440044.84 593135.06,-440029.43 593158.75,-440014.15 593183.59,-439984.53 593196.98,-439953.17 593196.44,-439920.71 593225.33,-439899.49 593249.52,-439868.92 593266.72,-439837.38 593272.45,-439780.5 593255.78,-439715.3 593249.65,-439684.23 593253.22,-439661.82 593240.95,-439641.95 593236.34,-439615.98 593238.39,-439594.59 593232.25,-439586.95 593239.92,-439578.8 593257.32,-439561.99 593269.08,-439545.69 593271.64,-439527.86 593285.46,-439502.9 593311.54,-439476.93 593340.7,-439439.75 593343.77,-439409.19 593356.05,-439402.57 593368.32,-439389.32 593375.99,-439368.26 593375.65,-439341.5 593373.73,-439228.14 593400.33,-439167.98 593424.63,-439167.36 593443.31,-439177.91 593451.41,-439184.11 593477.58,-439198.37 593491.9,-439205.81 593496.26,-439207.67 593529.27,-439202.1 593566.65,-439183.35 593599.51,-439163.47 593627.03,-439136.35 593634.61,-439114.02 593630.8,-439075.57 593614.61,-439043.32 593580.34,-439009.21 593571.01,-438988.74 593557.3,-438969.52 593539.86,-438934.17 593519.93,-438891.37 593454.52,-438865.32 593447.05,-438849.83 593435.21,-438810.13 593422.13,-438763 593427.75,-438719.5 593427.24,-438668.72 593415.28,-438644.53 593395.97,-438596.77 593387.25,-438585.62 593381.65,-438557.09 593385.38,-438539.1 593412.8,-438488.25 593419.64,-438462.2 593414.66,-438415.68 593417.16,-438399.56 593412.17,-438362.35 593417.77,-438331.33 593433.97,-438315.21 593448.92,-438242.02 593451.41,-438213.5 593462,-438168.05 593469.08,-438125.58 593479.45,-438064.12 593480.34,-438031.56 593488.39,-438012.21 593498.9,-437983.35 593565.4,-437971.37 593571.51,-437945.5 593577.07,-437930.28 593582.98,-437910.22 593590.62,-437885.38 593602.09,-437869.13 593612.6,-437850.98 593637.44,-437768.81 593662.28,-437739.01 593666.68,-437708.62 593687.13,-437690.71 593696.16,-437684.39 593711.45,-437680.68 593725.64,-437659.86 593751.01,-437637.95 593778.62,-437634.61 593787.58,-437639.44 593800.64,-437634.97 593828.25,-437637.2 593837.96,-437633.49 593861.84,-437624.2 593870.43,-437625.78 593892.31,-437625.78 593922.49,-437622.21 593948.58,-437610.49 593959.83,-437606.93 593973.64,-437616.61 593993.6,-437610.49 594015.08,-437594.71 594038.61,-437587.06 594051.4,-437574.84 594065.72,-437557.65 594093.19,-437530.9 594122.81,-437525.44 594132.22,-437521.36 594156.77,-437507.1 594175.2,-437489.78 594195.15,-437459.57 594253.28,-437454.64 594308.71,-437464.82 594315.87,-437477.56 594314.85,-437507.42 594334.99,-437507.42 594357.09,-437515.07 594378.25,-437526.56 594385.94,-437533.26 594379.21,-437563.88 594399.39,-437576.33 594425.35,-437619.88 594453.7,-437652.9 594463.8,-437706.5 594461.39,-437762.97 594494.55,-437817.05 594534.46,-437828.54 594534.94,-437889.78 594612.32,-437958.02 594674.56,-437993.68 594714.46,-437999.79 594734.92,-438023.21 594750.26,-438063.97 594794.26,-438093 594829.05,-438117.44 594877.14,-438124.07 594881.73,-438132.22 594880.2,-438194.87 594905.78,-438215.24 594918.57,-438262.6 594947.73,-438297.75 594969.72,-438318.16 594993.26,-438338.89 595005.65,-438347.28 595023.51,-438336.43 595040.37,-438341.85 595058.21,-438339.88 595069.62,-438309.27 595084.01,-438292.98 595085.99,-438236.21 595066.15,-438186.84 595053.75,-438148.82 595074.58,-438128.58 595075.07,-438113.27 595087.47,-438100.43 595089.95,-438082.67 595086.98,-438062.92 595070.61,-437957.93 595027.25,-437949.05 595031.73,-437914.99 595015.36,-437866.6 594975.2,-437830.56 594936.02,-437806.86 594904.78,-437786.62 594895.36,-437753.05 594887.92,-437741.19 594897.35,-437739.71 594913.21,-437747.13 594930.07,-437757.49 594956.85,-437772.3 594964.78,-437808.83 594981.15,-437878.94 595025.77,-437889.31 595046.1,-437886.34 595060.48,-437839.93 595088.75,-437826.12 595104.12,-437802.42 595114.04,-437791.07 595135.85,-437695.82 595231.36,-437593.8 595317.82,-437563.07 595362.86,-437525.03 595386.16,-437515.76 595400.6,-437478.19 595445.8,-437467.05 595468.61,-437462.42 595494.24,-437472.63 595514.75,-437468.91 595538.5,-437455.46 595563.2,-437456.85 595592.08,-437450.35 595633.55,-437435.51 595646.13,-437429.01 595662.44,-437406.29 595686.2,-437385.41 595691.79,-437363.14 595687.6,-437354.79 595671.75,-437333.45 595673.15,-437290.78 595658.71,-437234.19 595628.43,-437169.7 595584.63,-437155.33 595563.2,-437154.4 595547.36,-437149.3 595539.9,-437136.77 595540.37,-437117.75 595525.46,-437113.58 595512.88,-437116.83 595480.73,-437126.1 595468.16,-437159.51 595449.05,-437184.08 595419.7,-437189.65 595391.28,-437185.02 595374.51,-437188.73 595347.95,-437198.47 595330.71,-437210.52 595326.05,-437223.98 595326.52,-437249.03 595304.62,-437251.36 595288.78,-437268.05 595275.27,-437292.18 595241.26,-437301.92 595210.51,-437311.19 595169.05,-437342.74 595123.85,-437350.62 595087.52,-437358.04 595043.25,-437350.01 595001.19,-437321.29 594943.61,-437292.57 594886.03,-437263.85 594857.19,-437216.18 594808.88,-437178.86 594761.91,-437172.56 594733.91,-437172.56 594677.01,-437169.42 594589.86,-437163.12 594574.95,-437173.91 594565.92,-437182.46 594514.89,-437194.6 594491.4,-437197.3 594448.5,-437194.15 594421.4,-437178.86 594329.28,-437178.17 594293.77,-437176.87 594270.13,-437169.89 594253.5,-437170.77 594235.99,-437198.42 594190.17,-437229.8 594167.85,-437239.39 594145.53,-437239.39 594107.44,-437225.01 594029.52,-437221.52 594001.07,-437193.62 593952.04,-437198.42 593937.59,-437178.81 593913.95,-437156.58 593903.44,-437145.25 593886.82,-437090.52 593819.88,-437061.8 593791.15,-437028.52 593789.78,-437001.69 593770.53,-436903.56 593728.18,-436865.99 593727.41,-436832.26 593692.76,-436777.84 593684.3,-436739.5 593672.75,-436714.97 593661.2,-436689.67 593651.95,-436652.1 593661.2,-436629.87 593659.66,-436609.94 593653.5,-436589.24 593658.88,-436580.81 593670.43,-436571.61 593713.56,-436527.14 593765.14,-436497.24 593776.69,-436497.24 593789.78,-436468.88 593822.12,-436426.71 593841.37,-436387.62 593867.54,-436346.98 593877.56,-436324.75 593868.31,-436304.06 593850.6,-436283.35 593788.24,-436267.26 593735.11,-436242.72 593702.78,-436227.39 593660.43,-436179.09 593601.91,-436151.5 593588.05,-436092.46 593582.66,-436034.2 593606.53,-435932.24 593627.32,-435742.89 593645.03,-435627.06 593649.64,-435590.69 593648.4,-435559.87 593665.74,-435516.41 593709.07,-435484.66 593722.39,-435443.36 593741.27,-435412.85 593772.53,-435343.8 593837.86,-435318.53 593851.79,-435266.13 593885.22,-435178.9 593943.11,-435107.39 593967.26,-435052.52 593972.21,-435009.37 593981.19,-434963.75 594003.78,-434935.7 594041.24,-434906.11 594062.29,-434880.22 594074.36,-434876.83 594085.51,-434868.82 594097.57,-434857.11 594105.94,-434830.59 594144.32,-434815.18 594154.24,-434766.48 594156.39,-434769.57 594188.91,-434764.63 594205.93,-434751.38 594216.77,-434733.2 594220.17,-434680.18 594211.5,-434655.22 594209.96,-434617.61 594219.86,-434604.97 594240.91,-434562.13 594263.51,-434539.62 594268.15,-434522.98 594266.3,-434501.41 594257.93,-434495.86 594273.72,-434433.9 594293.84,-434396.91 594312.73,-434383.04 594323.56,-434373.49 594335.32,-434360.54 594342.76,-434348.52 594364.74,-434331.57 594387.33,-434328.8 594403.75,-434323.86 594409.32,-434317.08 594426.34,-434309.69 594447.08,-434303.21 594456.06,-434284.72 594469.06,-434282.56 594478.35,-434285.96 594484.23,-434283.49 594492.59,-434285.34 594497.24,-434289.96 594497.85,-434293.04 594493.51,-434294.59 594478.04,-434296.44 594474.94,-434321.7 594458.23,-434395.69 594431.3,-434411.09 594422.63,-434418.19 594413.96,-434424.35 594397.55,-434437.91 594385.79,-434448.39 594379.28,-434466.26 594375.57,-434481.06 594378.36,-434491.54 594386.09,-434506.34 594407.77,-434506.95 594424.17,-434504.8 594437.18,-434499.25 594442.13,-434488.46 594443.67,-434481.99 594448.94,-434479.52 594462.57,-434485.38 594484.23,-434490 594510.86,-434520.82 594549.86,-434528.84 594560.38,-434552.88 594575.24,-434593.57 594597.54,-434635.18 594616.42,-434698.98 594631.89,-434739.98 594632.21,-434776.04 594627.87,-434800.39 594618.89,-434846.01 594587.32,-434850.94 594580.2,-434853.71 594564.1,-434863.89 594557.91,-434883.61 594550.48,-434898.72 594544.91,-434922.14 594541.5,-434928.31 594544.28,-434942.18 594539.96,-435044.47 594557.89,-435101.8 594589.82,-435135.44 594618.9,-435180.53 594648.17,-435258.41 594685.22,-435356.34 594748.81,-435428.37 594819.82,-435460.97 594865.92,-435484.92 594905.34,-435486.25 594944.11,-435501.55 595008.25,-435491.57 595073.06,-435502.88 595091.11,-435509.53 595147.9,-435556.1 595271.51,-435560.76 595351.03,-435512.19 595476.64,-435484.25 595524.75,-435465.62 595522.75,-435456.97 595510.06,-435435.02 595507.39,-435430.36 595496.03,-435442.34 595477.98,-435442.34 595429.87,-435458.31 595395.8,-435451.65 595291.56,-435431.97 595205.8,-435403.25 595119.37,-435374.53 595061.79,-435345.7 594975.37,-435312.97 594927.03,-435227.16 594842.17,-435149.98 594797.41,-435110.06 594789.38,-435047.52 594750.63,-434994.96 594735.93,-434957.04 594736.6,-434918.45 594767.33,-434890.51 594808.77,-434862.57 594838.16,-434847.93 594878.92,-434845.94 594918.35,-434851.26 594944.41,-434897.83 595012.56,-434933.09 595074.03,-434963.03 595156.89,-434977.67 595241.75,-434982.99 595325.27,-434976.34 595404.11,-434945.73 595484.97,-434899.02 595583.55,-434887.04 595637.68,-434883.72 595703.83,-434892.37 595732.55,-434919.65 595773.32,-434910.33 595787.35,-434924.97 595860.18,-434939.61 595887.58,-434942.93 595926.33,-434959.57 595949.05,-434977.52 595950.4,-435018.11 595966.43,-435034.07 595961.74,-435072.67 595930.35,-435091.96 595919.65,-435111.95 595917.95,-435133.87 595928.34,-435145.18 595956.4,-435140.52 596003.18,-435122.3 596037.01,-435084.63 596072.01,-435030.74 596100.07,-435005.46 596096.73,-434992.16 596075.34,-434966.88 596059.98,-434924.3 596057.96,-434847.79 596052.62,-434795.9 596023.23,-434756.04 596010.27,-434671.36 595992.79,-434627.14 595975.31,-434604.09 595989.95,-434602.69 596015,-434596.1 596025.39,-434615.86 596049.49,-434618.94 596078.68,-434628.56 596118,-434674.19 596184.15,-434697.71 596202.57,-434724.05 596211.08,-434755.1 596211.08,-434792.26 596223.84,-434823.78 596246.98,-434881.64 596296.12,-434912.7 596343.37,-434928.69 596399.13,-434928.69 596435.04,-434907.04 596519.14,-434918.34 596538.99,-434944.68 596605.13,-434971.97 596698.69,-434973.85 596725.15,-434965.97 596729.42,-434961.72 596736.98,-434964.08 596749.26,-434962.2 596757.29,-434970.66 596768.64,-434985.73 596777.85,-435003.12 596794.86,-435011.13 596808.8,-435010.65 596836.44,-434994.19 596839.98,-434977.02 596826.99,-434967.85 596824.15,-434961.02 596827.7,-434944.79 596826.04,-434926.68 596820.61,-434918.45 596812.81,-434914.68 596798.17,-434908.57 596786.11,-434894.93 596776.2,-434882.23 596759.66,-434861.29 596745.95,-434853.05 596726.33,-434820.78 596715.98,-434810.48 596728.34,-434797.83 596728.67,-434776.21 596706.96,-434747.94 596696.6,-434729.97 596700.94,-434717.33 596711.3,-434701.36 596723.32,-434670.76 596737.03,-434673.42 596758.41,-434662.44 596770.78,-434664.44 596785.47,-434655.13 596799.17,-434653.46 596823.22,-434639.49 596849.29,-434611.88 596880.36,-434603.23 596892.72,-434600.24 596904.41,-434604.23 596915.11,-434600.57 596925.46,-434590.26 596941.16,-434575.96 596948.85,-434563.98 596942.16,-434556 596937.49,-434552.34 596926.13,-434554.01 596911.43,-434560.32 596904.74,-434568.63 596895.4,-434567.31 596881.36,-434560 596875.35,-434533.04 596867.66,-434516.08 596852.63,-434503.79 596821.28,-434489.43 596792.54,-434491.8 596745.05,-434496.79 596711.96,-434507.1 596696.6,-434507.76 596669.53,-434501.44 596662.19,-434497.79 596636.13,-434502.78 596615.74,-434513.42 596609.4,-434519.07 596612.08,-434526.06 596625.1,-434539.03 596630.78,-434553.34 596632.12,-434552.34 596620.43,-434537.04 596605.05,-434517.08 596594.03,-434431.25 596576.66,-434309.69 596564.85,-434272.07 596543.12,-434248.55 596548.79,-434212.79 596570.53,-434038.73 596627.23,-433946.52 596672.59,-433902.31 596662.19,-433855.26 596647.07,-433798.8 596618.72,-433758.35 596581.87,-433673.01 596534.27,-433607.81 596496.81,-433582.41 596465.63,-433543.84 596465.63,-433485.51 596476.97,-433449.75 596458.07,-433421.52 596474.14,-433373.54 596451.45,-433361.31 596426.89,-433314.26 596398.54,-433220.18 596254.9,-433225.82 596216.16,-433211.72 596195.37,-433171.25 596182.14,-433127.03 596116.93,-433103.51 596074.41,-433108.22 596043.23,-433134.56 596014.87,-433156.94 596001.74,-433194.77 596012.04,-433237.12 596032.83,-433255.93 596038.5,-433302.98 596018.66,-433390.47 596018.66,-433449.75 596001.65,-433488.32 595971.41,-433532.55 595895.81,-433586.07 595813.79,-433615.34 595806.04,-433629.45 595774.86,-433637.92 595651.07,-433651.09 595595.31,-433668.03 595514.04,-433678.38 595443.17,-433661.45 595429,-433664.26 595403.49,-433681.21 595379.86,-433700.02 595372.31,-433757.41 595388.36,-433791.28 595412.94,-433795.04 595435.61,-433810.1 595474.36,-433841.15 595505.54,-433907.95 595535.78,-433928.65 595543.33,-433972.86 595498.92,-433977.57 595471.52,-433956.88 595387.42,-433913.6 595343.95,-433900.43 595319.39,-433860.91 595293.87,-433800.03 595208.25,-433771.31 595179.52,-433721.48 595154.16,-433683.86 595124.87,-433644.34 595067.22,-433627.93 595035.63,-433626.46 595023.76,-433644.34 595011.48,-433701.72 594998.24,-433813.94 595020.87,-433871.27 595049.6,-433937.85 595107.64,-433994.22 595125.22,-434066.14 595126.19,-434114.73 595105.7,-434139.99 595102.77,-434154.57 595075.43,-434195.39 595046.16,-434216.76 595018.82,-434210.93 594949.53,-434148.74 594885.11,-434070.99 594836.3,-433890.24 594734.8,-433860.11 594699.66,-433833.87 594654.76,-433791.11 594619.63,-433779.45 594599.12,-433779.45 594579.6,-433792.08 594554.23,-433820.27 594556.18,-433830.95 594537.64,-433821.23 594507.38,-433793.06 594496.64,-433752.24 594417.59,-433741.55 594380.49,-433730.85 594260.45,-433719.2 594214.57,-433696.85 594176.51,-433716.28 594147.23,-433707.53 594123.8,-433671.58 594118.92,-433626.87 594018.39,-433584.11 593958.85,-433476.24 593840.75,-433416.97 593762.67,-433400.45 593713.87,-433290.63 593617.24,-433277.03 593629.93,-433181.78 593572.35,-433134.17 593528.42,-433061.28 593480.59,-432987.42 593452.3,-432924.05 593393.69,-432896.07 593367.38,-432811.52 593316.63,-432751.28 593246.36,-432674.5 593188.77,-432645.34 593139.97,-432605.5 593116.55,-432551.36 593048.45,-432526.79 593013.09,-432374.21 592895.96,-432346.03 592859.85,-432330.48 592844.23,-432297.44 592832.53,-432258.51 592803.56,-432222.55 592794.28,-432047.76 592679.84,-432026.39 592655.93,-432015.69 592649.58,-432005 592651.04,-431920.94 592699.36,-431873.32 592752.06,-431861.18 592771.58,-431870.4 592780.37,-431830.07 592850.64,-431817.44 592885.78,-431815.01 592925.79,-431811.13 592943.85,-431799.95 592960.44,-431779.06 592977.52,-431779.06 592991.18,-431735.32 593039.5,-431724.15 593059.02,-431716.86 593077.56,-431720.26 593083.42,-431718.8 593101.97,-431702.77 593125.39,-431702.77 593130.26,-431711.52 593129.78,-431716.37 593135.15,-431723.66 593164.43,-431729.98 593172.73,-431750.87 593186.39,-431760.59 593196.64,-431765.93 593211.77,-431777.11 593219.09,-431792.66 593216.16,-431833.48 593243.98,-431865.06 593283.99,-431890.81 593302.05,-431901.51 593317.67,-431905.97 593350.77,-431926.85 593389.32,-431926.85 593412.26,-431950.67 593487.41,-431950.67 593502.54,-431962.33 593516.7,-432017.24 593562.57,-432043.47 593579.65,-432086.24 593592.82,-432144.55 593612.83,-432183.42 593639.19,-432202.37 593658.71,-432213.55 593690.42,-432225.7 593807.65,-432222.26 593835.95,-432208.53 593846.99,-432200.97 593864.24,-432209.22 593924.29,-432198.91 593968.45,-432198.91 593991.24,-432208.53 594004.34,-432237.38 594007.1,-432256.63 594089.23,-432249.76 594107.87,-432233.26 594129.27,-432215.4 594132.71,-432193.41 594123.05,-432147.37 594123.75,-432121.94 594116.16,-432108.19 594115.46,-432102.02 594125.12,-432087.23 594131.5,-432063.91 594131.5,-432049.33 594137.85,-432039.61 594147.11,-432019.21 594152.97,-431993.94 594149.56,-431978.87 594154.44,-431973.04 594163.71,-431973.04 594177.38,-431940 594191.52,-431929.32 594203.73,-431925.43 594218.37,-431922.99 594274.97,-431834.56 594326.7,-431789.38 594376,-431771.4 594393.08,-431760.22 594423.34,-431750.98 594430.66,-431733 594425.29,-431640.69 594445.29,-431629.02 594440.9,-431585.29 594452.12,-431568.19 594466.7,-431565 594488.45,-431571.03 594534.78,-431568.19 594575.42,-431575.29 594593.95,-431576.71 594618.54,-431589.13 594639.93,-431621.78 594662.02,-431626.75 594673.79,-431626.75 594695.17,-431615.39 594709.44,-431603.33 594720.84,-431596.94 594749.71,-431584.51 594771.46,-431566.77 594786.07,-431532.71 594768.96,-431516.02 594757.55,-431515.66 594745.79,-431523.12 594732.61,-431537.67 594719.41,-431535.9 594696.96,-431521.7 594672.72,-431503.25 594657.75,-431493.31 594630.66,-431499.7 594624.25,-431496.5 594614.26,-431475.21 594598.95,-431461.37 594604.29,-431445.04 594589.32,-431438.31 594572.92,-431409.91 594552.6,-431386.84 594541.91,-431380.1 594533.36,-431377.26 594521.95,-431368.39 594516.6,-431364.84 594506.27,-431352.77 594500.21,-431346.39 594488.09,-431346.03 594469.2,-431353.84 594467.42,-431362.71 594459.22,-431363.78 594447.45,-431355.26 594438.19,-431341.41 594432.49,-431350.64 594418.58,-431361.3 594410.03,-431379.39 594402.55,-431408.14 594365.12,-431422.69 594357.28,-431435.11 594341.24,-431439.36 594313.79,-431455.34 594282.07,-431483.02 594254.27,-431489.4 594239.3,-431497.22 594232.89,-431508.93 594231.82,-431557.19 594194.74,-431569.25 594179.77,-431579.91 594156.96,-431594.1 594150.19,-431619.12 594115.64,-431662.29 594092.82,-431719.09 594047.96,-431749.38 594038.06,-431790.27 594047.96,-431808.44 594049.48,-431822.83 594025.14,-431855.39 594017.54,-431877.35 593987.11,-431923.54 593974.18,-431947.77 593951.37,-431968.22 593889.77,-431972.76 593860.11,-431970.49 593826.64,-431950.04 593758.19,-431917.48 593723.2,-431885.68 593691.26,-431837.98 593664.64,-431759.98 593622.82,-431725.9 593610.64,-431681.22 593580.22,-431669.11 593559.69,-431659.27 593522.43,-431634.27 593488.96,-431585.05 593444.85,-431560.06 593400.75,-431535.83 593349.79,-431502.51 593312.52,-431401.79 593213.65,-431364.69 593177.9,-431323.04 593152.8,-431318.49 593135.32,-431287.45 593112.5,-431267.01 593074.48,-431262.46 593044.81,-431285.93 592977.13,-431307.9 592939.1,-431345.12 592906.47,-431393.47 592875.97,-431423 592859.25,-431444.96 592832.63,-431458.59 592768.75,-431451.02 592700.29,-431431.33 592666.83,-431391.2 592567.2,-431386.65 592531.46,-431350.3 592445.52,-431342.73 592408.26,-431322.28 592393.04,-431285.93 592348.94,-431253.37 592331.44,-431211.73 592258.43,-431175.38 592209,-431138.27 592185.43,-431070.12 592115.94,-431053.46 592103.29,-431033.02 592107.09,-430967.89 592082.75,-430922.45 592075.91,-430876.27 592076.67,-430798.26 592101.01,-430787.67 592114.69,-430793.72 592135.23,-430803.56 592147.39,-430816.44 592181.62,-430818.71 592221.17,-430809.63 592247.03,-430814.17 592260.71,-430805.83 592303.3,-430818.71 592351.22,-430805.83 592456.16,-430785.4 592472.9,-430772.52 592503.32,-430742.23 592532.98,-430730.11 592568.72,-430706.64 592592.3,-430714.96 592614.36,-430708.15 592650.1,-430686.19 592679,-430664.24 592701.82,-430622.58 592704.1,-430593.05 592697.25,-430573.37 592713.99,-430536.26 592707.14,-430437.81 592669.87,-430351.48 592669.11,-430293.17 592693.45,-430235.63 592688.89,-430091.75 592658.47,-430068.41 592641.14,-430029.86 592634.15,-430014.33 592639.53,-429989.16 592638.99,-429972.03 592633.61,-429965.61 592616.93,-429973.63 592602.96,-430012.73 592592.74,-430071.64 592582.06,-430126.15 592564.56,-430172.35 592559.24,-430238.98 592569.13,-430266.25 592566.84,-430296.54 592532.62,-430412.4 592500.68,-430475.25 592490.04,-430486.6 592502.96,-430502.51 592497.64,-430506.3 592477.1,-430518.41 592443.64,-430503.41 592388.38,-430474.8 592330.8,-430417.36 592244.38,-430388.75 592215.65,-430347.95 592187.79,-430335.63 592143.69,-430350.63 592105.51,-430337.78 592074.86,-430305.65 592061.96,-430298.68 592049.58,-430298.68 592033.45,-430297.62 592006.56,-430270.84 591963.54,-430248.36 591931.27,-430231.23 591925.9,-430219.98 591900.08,-430206.59 591892.56,-430174.46 591879.11,-430160.54 591868.35,-430122.52 591857.06,-430114.5 591864.05,-430099.5 591863.51,-430093.08 591853.29,-430049.16 591839.86,-430022.92 591829.1,-429982.24 591844.16,-429912.09 591852.76,-429861.76 591846.84,-429813.03 591844.7,-429773.4 591852.22,-429741.27 591867.28,-429706.48 591903.31,-429675.42 591934.51,-429659.35 591967.84,-429656.14 592008.72,-429658.29 592033.98,-429664.71 592032.91,-429665.78 592011.94,-429678.64 592015.17,-429691.48 592021.08,-429705.94 592054.96,-429702.72 592084,-429680.24 592152.84,-429634.19 592245.33,-429591.88 592306.63,-429572.07 592318.47,-429515.56 592317.72,-429458.35 592332.25,-429458.46 592418.68,-429544.4 592432.99,-429558.76 592447.41,-429577.42 592497.54,-429633.65 592546.47,-429683.44 592571.22,-429737.53 592576.59,-429762.16 592592.19,-429808.75 592601.87,-429827.49 592619.61,-429832.31 592636.82,-429826.41 592650.81,-429822.14 592677.69,-429781.44 592698.13,-429738.6 592689.52,-429717.19 592700.28,-429682.38 592726.63,-429642.22 592778.8,-429598.31 592829.89,-429580.64 592849.24,-429544.95 592850.9,-429487.62 592851.01,-429502.09 592908.59,-429530.81 592995.01,-429545.17 593009.43,-429559.53 593023.85,-429559.53 593052.7,-429531.04 593139.12,-429502.43 593167.96,-429473.82 593196.92,-429445.32 593283.34,-429416.82 593341.03,-429388.33 593456.41,-429359.83 593514.1,-429345.47 593571.79,-429316.86 593586.1,-429288.25 593615.06,-429259.64 593615.06,-429173.81 593615.17,-429145.09 593615.17,-429059.15 593586.55,-429001.94 593557.82,-428916 593529.08,-428887.28 593500.24,-428801.34 593471.62,-428715.4 593442.88,-428686.79 593414.15,-428658.07 593385.31,-428486.3 593356.68,-428314.54 593357.02,-428285.82 593357.02,-428085.44 593328.51,-428056.72 593299.67,-427799.02 593271.16,-427455.48 593271.72,-427398.16 593286.25,-427383.91 593257.4,-427355.19 593228.67,-427326.58 593199.83,-427297.86 593171.09,-427269.14 593113.52,-427240.53 593084.67,-427240.42 593055.83,-427254.66 593041.4,-427311.99 593012.45,-427326.24 592998.14,-427340.49 592983.6,-427354.85 592969.18,-427369.1 592954.76,-427483.65 592954.65,-427569.59 592954.42,-427583.95 592940.11,-427598.09 592882.42,-427569.48 592868,-427540.76 592839.27,-427454.82 592824.96,-427454.71 592767.38,-427426.1 592781.69,-427311.66 592781.92,-427225.72 592753.18,-427111.17 592738.98,-427096.81 592710.14,-427114.6 592663.69,-427128.85 592649.15,-427196.89 592609.07,-427254.11 592580.23,-427268.47 592565.8,-427282.72 592551.38,-427419.4 592605.78,-427433.87 592663.36,-427448.12 592677.78,-427534.05 592706.41,-427820.37 592706.07,-427877.59 592677.11,-427891.95 592662.8,-427906.2 592648.27,-427920.56 592633.96,-427934.8 592619.42,-427949.16 592605,-427963.41 592590.58,-427977.77 592576.16,-427992.02 592561.74,-428049.24 592547.31,-428035.1 592662.58,-427984.36 592680.18,-427984.48 592737.75,-428013.2 592795.44,-428027.44 592809.75,-428041.8 592824.18,-428041.8 592853.02,-428041.92 592881.86,-428142.1 592924.91,-428199.43 592939.22,-428214.02 593141.02,-428228.38 593155.33,-428285.59 593169.75,-428285.71 593227.33,-428457.47 593212.68,-428486.08 593212.57,-428743.79 593241.08,-428801.12 593269.81,-429030.1 593269.48,-429116.04 593240.52,-429173.26 593211.68,-429187.5 593197.26,-429216.11 593139.57,-429230.36 593125.14,-429316.19 593110.61,-429301.94 593053.03,-429273.22 592995.45,-429258.42 592707.23,-429344.24 592692.59,-429401.46 592663.74,-429415.82 592649.32,-429429.96 592562.9,-429372.74 592548.48,-429344.02 592519.74,-429315.41 592490.9,-429258.08 592462.17,-429200.75 592433.43,-429143.53 592419.12,-429129.17 592361.55,-429100.45 592332.7,-429100.45 592275.12,-429128.95 592217.44,-429143.2 592202.9,-429157.56 592188.59,-429171.81 592174.06,-429186.17 592159.75,-429200.42 592145.21,-429214.67 592130.79,-429228.92 592116.37,-429286.25 592087.41,-429343.46 592087.41,-429362.39 592111.56,-429372.18 592130.57,-429400.79 592130.57,-429400.68 592101.72,-429381.98 592091.89,-429357.49 591842.46,-429328.77 591813.62,-429300.16 591784.88,-429271.44 591756.04,-429242.72 591669.62,-429228.25 591583.2,-429199.64 591568.78,-429170.92 591568.78,-429142.42 591597.73,-429113.81 591626.58,-429085.09 591626.58,-428999.26 591597.85,-428884.6 591569.22,-428827.39 591554.91,-428813.03 591526.18,-428798.67 591468.49,-428769.95 591454.07,-428741.34 591425.34,-428626.79 591396.61,-428512.24 591367.99,-428483.52 591353.68,-428469.27 591382.52,-428440.77 591411.37,-428426.52 591526.63,-428483.74 591526.63,-428483.85 591555.36,-428455.25 591569.78,-428426.64 591598.63,-428369.42 591627.58,-428283.48 591627.7,-428197.54 591613.5,-428197.54 591555.81,-428082.99 591570.34,-428054.38 591570.34,-428025.77 591570.45,-427997.17 591570.45,-427939.84 591541.72,-427853.9 591541.83,-427825.4 591570.68,-427768.07 591599.63,-427682.24 591628.48,-427625.02 591643.01,-427639.38 591614.17,-427639.27 591585.44,-427624.91 591527.75,-427682.13 591527.75,-427696.38 591470.06,-427710.63 591455.53,-427724.99 591441.22,-427739.24 591426.68,-427796.46 591397.84,-427853.67 591368.88,-427910.89 591340.04,-427968.11 591311.08,-427982.47 591296.66,-427996.72 591239.08,-428053.94 591224.55,-428168.38 591210.02,-428154.24 591238.86,-428154.24 591267.7,-428168.49 591282.01,-428225.82 591296.32,-428240.06 591238.75,-428240.06 591181.06,-428211.23 591094.64,-428196.76 591008.22,-428168.15 590993.8,-428139.43 590964.96,-428110.82 590936.22,-428082.1 590907.49,-428053.49 590878.65,-427938.95 590878.76,-427853.01 590878.98,-427767.18 590879.09,-427738.57 590907.94,-427709.96 590936.78,-427681.35 590965.63,-427624.13 590994.58,-427566.92 591009.12,-427581.39 591066.69,-427610.11 591124.27,-427610.11 591153.11,-427595.86 591210.8,-427538.53 591210.91,-427524.28 591239.75,-427495.89 591355.02,-427467.28 591383.86,-427438.68 591412.71,-427424.43 591470.39,-427338.49 591470.51,-427338.6 591528.19,-427309.99 591542.5,-427195.44 591542.73,-427166.72 591513.88,-427080.89 591499.69,-427066.53 591470.84,-427037.93 591442.11,-427023.34 591298,-427080.56 591312.31,-427109.28 591312.31,-427123.64 591297.89,-427123.31 591096.09,-427108.84 590980.83,-427166.05 590980.83,-427151.69 590951.99,-427123.08 590923.25,-427108.61 590865.57,-427051.4 590865.68,-427051.28 590807.99,-426965.46 590793.68,-426908.13 590779.37,-426908.02 590721.8,-426879.41 590707.37,-426822.08 590678.53,-426764.75 590649.8,-426678.92 590621.18,-426650.2 590592.33,-426621.59 590592.45,-426564.37 590606.98,-426578.73 590664.56,-426607.45 590722.13,-426621.81 590750.98,-426564.48 590751.09,-426564.6 590837.51,-426535.99 590851.93,-426507.49 590880.77,-426450.16 590880.88,-426392.94 590880.88,-426249.78 590881.11,-426221.06 590852.38,-426163.84 590823.53,-426049.19 590794.91,-425963.36 590780.71,-425963.47 590895.98,-425906.25 590910.4,-425877.64 590939.24,-425820.42 590953.78,-425806.18 590982.62,-425777.57 591011.46,-425763.32 591069.15,-425706.1 591083.57,-425620.16 591083.68,-425448.39 591055.06,-425419.67 591055.18,-425076.14 591055.62,-425047.53 591026.78,-425018.81 591026.89,-424904.38 591041.43,-424890.13 591070.27,-424890.24 591127.96,-424904.49 591142.27,-424918.85 591156.8,-424918.96 591214.38,-424919.07 591329.64,-424933.43 591343.95,-424962.04 591343.95,-425019.26 591343.95,-425033.62 591358.37,-425062.34 591415.95,-425062.45 591444.79,-425033.84 591473.64,-425019.59 591588.9,-425134.14 591574.37,-425334.51 591545.19,-425477.67 591545.08,-425492.03 591559.5,-425520.75 591617.07,-425535 591631.38,-425549.36 591645.92,-425549.47 591674.65,-425549.47 591732.34,-425563.83 591746.65,-425578.19 591761.07,-425606.91 591818.76,-425621.16 591833.07,-425678.49 591861.8,-425692.85 591876.22,-425707.1 591890.65,-425764.43 591904.96,-425778.79 591962.65,-425793.15 591976.96,-425807.51 591991.38,-425821.76 592005.69,-425836.12 592020.11,-425864.95 592164.22,-425865.17 592279.49,-425836.68 592423.71,-425822.54 592596.66,-425736.71 592582.24,-425707.99 592553.51,-425679.38 592524.66,-425622.05 592510.46,-425636.41 592481.62,-425636.3 592452.77,-425607.69 592423.93,-425607.58 592366.35,-425621.83 592308.66,-425707.66 592294.13,-425722.02 592279.71,-425736.27 592265.17,-425793.49 592236.33,-425807.85 592221.91,-425807.73 592135.49,-425779.01 592106.75,-425764.54 592020.22,-425564.17 592006.02,-425449.62 591991.82,-425435.26 591963.09,-425406.65 591934.25,-425392.18 591876.67,-425363.57 591862.25,-425334.85 591833.41,-425249.02 591833.52,-425105.86 591862.58,-424934.1 591877.23,-424919.85 591934.92,-424919.96 591992.61,-424934.21 592006.92,-424948.68 592021.34,-424962.93 592035.65,-424991.54 592035.65,-425039.07 592031.07,-425034.62 592107.65,-425006.01 592136.61,-424977.4 592165.45,-424977.51 592194.29,-424977.51 592223.03,-424977.62 592251.87,-425006.23 592309.45,-425020.59 592338.29,-424963.26 592323.87,-424877.33 592295.25,-424820.11 592266.4,-424762.78 592252.21,-424762.78 592194.52,-424734.06 592180.1,-424705.45 592151.36,-424619.51 592122.63,-424562.18 592108.32,-424562.07 592050.74,-424504.85 592050.74,-424490.49 592022.01,-424461.88 591964.32,-424433.16 591935.59,-424404.55 591906.75,-424390.08 591878.01,-424504.63 591863.37,-424518.99 591848.95,-424533.24 591834.52,-424547.6 591820.1,-424561.85 591805.68,-424576.1 591791.26,-424590.01 591474.2,-424647.23 591459.66,-424661.59 591445.35,-424675.84 591430.82,-424690.2 591416.4,-424690.09 591387.66,-424661.48 591358.82,-424632.76 591301.24,-424632.65 591214.82,-424632.65 591185.98,-424632.31 590984.18,-424632.31 590926.5,-424603.59 590868.92,-424589.12 590811.35,-424560.51 590796.92,-424503.18 590796.92,-424474.57 590811.46,-424460.32 590782.61,-424445.85 590725.04,-424388.63 590725.15,-424374.27 590696.31,-424345.55 590638.73,-424316.72 590408.21,-424302.25 590350.52,-424273.53 590336.1,-424244.92 590307.36,-424101.76 590293.17,-424101.65 590235.59,-423901.28 590221.39,-423872.67 590221.39,-423786.73 590250.35,-423700.9 590250.46,-423529.02 590221.84,-423500.41 590193,-423443.09 590164.27,-423414.48 590164.38,-423357.15 590164.38,-423299.93 590150.07,-423299.82 590092.49,-423242.6 590078.07,-423185.27 590049.34,-423156.55 590020.61,-423099.33 589991.76,-423013.39 589963.14,-422984.78 589963.14,-422898.84 589963.26,-422841.63 589963.37,-422698.47 589978.01,-422698.36 589920.33,-422612.53 589906.02,-422526.59 589877.28,-422497.87 589862.97,-422483.62 589891.82,-422469.49 590064.77,-422412.27 590064.77,-422412.49 590180.14,-422297.94 590180.25,-422297.83 590122.57,-422269.22 590136.99,-422240.61 590136.99,-422097.46 590108.37,-422068.73 590079.64,-422011.52 590065.33,-421997.05 589950.06,-421982.57 589834.8,-422039.79 589820.27,-422054.15 589805.85,-422068.4 589791.43,-422125.62 589791.31,-422182.95 589805.74,-422197.2 589748.05,-422197.09 589690.36,-422197.09 589661.63,-422211.22 589603.94,-422182.61 589589.52,-422154.01 589560.68,-422125.29 589531.95,-422039.46 589532.06,-422010.85 589560.9,-421982.24 589589.75,-421953.63 589618.59,-421925.02 589618.59,-421896.41 589618.7,-421810.47 589647.66,-421724.65 589676.61,-421696.04 589676.61,-421638.71 589662.3,-421624.46 589633.46,-421595.74 589604.73,-421567.13 589575.88,-421538.41 589547.15,-421524.05 589489.47,-421638.04 589114.73,-421652.4 589057.04,-421680.79 588912.94,-421695.04 588898.41,-421723.64 588898.41,-421738.12 588912.83,-421752.36 588927.14,-421780.97 588927.14,-421795.33 588912.72,-421823.83 588855.03,-421838.19 588840.61,-421852.44 588826.19,-421866.69 588811.77,-421881.05 588797.34,-421880.94 588682.08,-421852.22 588653.24,-421823.61 588595.67,-421809.14 588538.09,-421751.81 588523.67,-421723.2 588494.94,-421637.26 588466.21,-421551.32 588437.48,-421494.1 588423.17,-421479.74 588394.33,-421451.13 588365.6,-421436.66 588308.02,-421408.05 588293.6,-421379.33 588264.76,-421121.63 588265.09,-421064.41 588293.94,-420978.58 588322.89,-420806.82 588323.12,-420720.88 588323.23,-420663.77 588352.18,-420606.55 588381.02,-420577.94 588409.87,-420549.34 588438.71,-420520.73 588467.55,-420492.12 588496.4,-420434.9 588511.04,-420434.9 588568.61,-420406.29 588554.19,-420377.68 588554.19,-420320.46 588568.73,-420306.21 588597.57,-420277.6 588626.41,-420263.36 588712.94,-420206.14 588713.05,-420191.89 588741.89,-420177.64 588828.31,-420149.03 588842.73,-420005.87 588842.96,-419891.33 588814.23,-419805.39 588814.34,-419776.78 588814.34,-419748.17 588814.45,-419719.56 588814.45,-419662.23 588814.56,-419633.62 588814.56,-419576.29 588785.83,-419547.68 588756.99,-419518.96 588728.26,-419433.13 588713.95,-419418.77 588685.22,-419404.3 588627.53,-419375.69 588613.11,-419347.08 588584.38,-419318.36 588555.53,-419261.15 588526.8,-419203.82 588498.07,-419175.1 588469.23,-419003.33 588440.72,-418802.84 588426.52,-418802.84 588368.95,-418774.23 588383.26,-418745.63 588383.37,-418602.47 588369.17,-418602.36 588311.49,-418430.59 588297.29,-418373.26 588268.56,-418287.32 588239.83,-418230.1 588225.52,-418229.99 588167.83,-418172.78 588153.52,-418115.45 588124.68,-418058.12 588095.95,-418029.51 588067.22,-417886.24 588038.49,-417829.02 588009.76,-417771.69 588009.87,-417657.25 588038.83,-417628.65 588038.83,-417600.04 588038.94,-417514.1 588067.78,-417342.33 588096.85,-417256.5 588125.8,-417227.9 588125.8,-417199.29 588125.8,-417170.68 588154.64,-417084.85 588154.75,-417027.52 588126.02,-416998.91 588126.14,-416827.15 588126.25,-416626.66 588112.16,-416626.66 588054.48,-416569.33 588068.9,-416311.74 588098.08,-416139.97 588112.72,-416125.72 588141.56,-416111.47 588199.25,-416082.86 588213.67,-415997.04 588242.51,-415968.43 588271.47,-415882.49 588300.31,-415485.37 588292.07,-415471.12 588320.91,-415442.62 588378.49,-415428.26 588436.17,-415399.65 588450.59,-415371.04 588479.44,-415313.82 588508.28,-415285.21 588537.23,-415228 588566.08,-415170.78 588594.92,-415113.56 588623.87,-415084.95 588652.72,-415056.34 588681.56,-415027.73 588710.4,-414999.12 588739.25,-414970.63 588768.09,-414913.41 588797.04,-414856.08 588811.58,-414870.55 588840.31,-414884.8 588869.15,-414856.19 588883.57,-414827.58 588883.57,-414798.97 588869.26,-414798.97 588926.84,-414741.75 588926.95,-414727.5 588955.79,-414698.89 588984.63,-414684.65 589042.32,-414656.04 589056.74,-414598.82 589085.58,-414484.27 589100.23,-414470.02 589129.07,-414441.41 589157.92,-414412.8 589186.76,-414384.19 589215.6,-414355.59 589244.44,-414327.09 589273.29,-414298.48 589302.13,-414269.87 589359.82,-414255.62 589446.35,-414312.84 589446.23,-414298.59 589475.08,-414270.09 589503.92,-414270.43 589792.13,-414299.04 589849.82,-414299.26 590022.65,-414270.76 590109.18,-414270.76 590138.03,-414285.12 590152.34,-414299.48 590166.76,-414328.09 590224.45,-414356.92 590310.86,-414385.64 590397.28,-414711.18 590434.48,-414725.54 590449.01,-414739.9 590463.32,-414754.27 590477.74,-414768.51 590492.05,-414782.87 590506.47,-414811.59 590564.16,-414825.84 590578.47,-414840.2 590592.89,-414868.92 590650.58,-414883.28 590708.16,-414969.22 590722.47,-415055.16 590736.78,-415069.52 590794.46,-415083.88 590808.77,-415141.1 590808.66,-415255.65 590808.55,-415312.87 590808.44,-415398.8 590808.33,-415456.02 590837.17,-415541.96 590865.9,-415656.51 590894.52,-415713.84 590923.25,-415799.78 590951.99,-415814.14 590966.41,-415828.5 591024.1,-415885.72 591038.41,-415900.19 591052.83,-415914.44 591067.14,-415971.77 591095.87,-416028.98 591124.71,-416043.34 591139.14,-416057.7 591153.45,-416114.92 591182.18,-416172.25 591211.02,-416186.61 591225.44,-416200.97 591239.75,-416215.33 591254.18,-416229.58 591268.6,-416243.94 591283.02,-416258.3 591297.33,-416315.52 591326.06,-416372.85 591354.8,-416387.21 591369.33,-416401.46 591383.64,-416601.95 591412.26,-416616.31 591426.68,-416630.67 591440.99,-416659.28 591440.99,-416802.43 591440.77,-416831.04 591440.77,-416888.26 591411.92,-417002.81 591397.39,-417002.81 591454.97,-417060.14 591469.28,-417074.5 591483.7,-417088.75 591498.12,-417103.22 591512.54,-417117.47 591526.85,-417131.83 591541.27,-417146.19 591555.7,-417160.55 591570.12,-417174.8 591584.43,-417189.16 591598.85,-417203.41 591613.27,-417317.95 591641.89,-417375.28 591670.63,-417389.64 591685.16,-417389.75 591713.89,-417389.75 591742.74,-417404 591757.16,-417432.61 591757.05,-417461.33 591757.05,-417518.55 591785.78,-417575.88 591800.2,-417575.99 591857.78,-417661.82 591872.09,-417719.15 591900.82,-417733.51 591915.24,-417762.23 592001.66,-417790.95 592059.35,-417819.89 592261.04,-417848.5 592318.61,-417848.61 592347.46,-417848.61 592405.15,-417848.72 592491.57,-417820.23 592549.26,-417820.34 592693.37,-417820.45 592722.21,-417791.84 592808.75,-417791.95 592837.48,-417792.06 592924.01,-417792.17 593039.28,-417821.01 593240.97,-417849.84 593356.24,-417878.56 593442.66,-417907.39 593615.62,-417936.11 593702.04,-417936.11 593730.89,-417936.22 593759.62,-417950.47 593774.04,-417964.83 593788.46,-417993.55 593846.04,-418007.8 593860.46,-418022.27 593874.89,-418050.88 593932.46,-418050.99 593961.31,-418050.99 593990.15,-418065.24 594004.47,-418079.71 594018.89,-418108.32 594076.58,-418137.04 594134.16,-418165.76 594220.58,-418194.48 594278.16,-418223.2 594335.74,-418251.92 594393.43,-418266.17 594407.74,-418280.53 594422.16,-418294.89 594436.58,-418352.11 594450.89,-418366.58 594508.59,-418380.83 594522.9,-418395.19 594537.32,-418409.55 594551.63,-418423.91 594566.16,-418438.16 594580.48,-418495.49 594609.21,-418509.85 594623.63,-418524.21 594638.05,-418581.43 594666.79,-418810.52 594695.3,-418839.25 594695.3,-418853.49 594680.87,-418867.74 594666.34,-418882.1 594652.03,-418896.35 594637.61,-418982.29 594623.07,-418996.65 594680.65,-419011.01 594695.07,-419068.34 594723.81,-419182.78 594738.12,-419197.25 594795.7,-419197.25 594824.54,-419197.36 594911.08,-419211.72 594925.39,-419226.08 594939.81,-419240.33 594954.12,-419326.27 594954.12,-419383.49 594954.01,-419440.82 594953.9,-419526.64 594924.94,-419583.86 594924.94,-419598.33 594939.37,-419612.58 594953.68,-419669.91 594982.41,-419698.52 594982.41,-419727.13 594982.41,-419784.46 594996.83,-419798.82 595054.41,-419827.54 595111.99,-419841.9 595126.3,-419856.26 595140.84,-419884.98 595227.26,-419913.7 595313.69,-419942.42 595371.27,-419956.67 595385.58,-419652.13 595506.67,-419312.8 595631.44,-419312.69 595516.17,-419283.97 595458.59,-419283.97 595429.74,-419298.1 595372.05,-419240.89 595372.16,-419240.77 595314.47,-419183.56 595300.16,-419154.84 595271.31,-419126.23 595242.58,-419097.51 595213.73,-419011.57 595185,-418954.24 595156.27,-418925.63 595127.53,-418839.69 595098.8,-418753.75 595084.49,-418753.75 595026.91,-418696.42 595012.49,-418639.09 594983.75,-418610.48 594969.44,-418596.23 594998.29,-417422.14 594718.72,-417331.81 594408.25,-417303.09 594379.52,-417274.37 594321.94,-417245.65 594206.67,-417231.18 594148.98,-417173.96 594149.09,-417159.6 594120.25,-417130.99 594091.52,-417102.27 594062.67,-417073.66 594033.94,-417044.94 594005.09,-417016.22 593918.67,-416987.61 593889.94,-416958.89 593832.25,-416930.17 593745.82,-416901.45 593717.09,-416901.45 593688.24,-416915.59 593630.55,-416858.37 593630.67,-416868.17 593582.81,-416886.98 593572.98,-416886.87 593544.13,-416858.26 593544.13,-416848.57 593563.14,-416829.65 593573.09,-416815.18 593400.13,-416815.18 593371.29,-416829.43 593342.44,-416772.1 593342.55,-416757.74 593256.13,-416757.63 593140.75,-416786.12 592996.64,-416786.01 592967.8,-416785.9 592852.53,-416814.51 592794.84,-416842.9 592650.73,-416871.51 592593.03,-416871.39 592506.49,-416856.92 592420.07,-416914.25 592419.96,-416899.89 592362.38,-416899.78 592304.7,-416914.03 592275.85,-416856.81 592275.96,-416842.45 592247.12,-416827.98 592189.54,-416770.76 592175.12,-416656.21 592146.5,-416541.67 592117.77,-416484.34 592089.03,-416455.73 592060.19,-416369.79 592031.46,-416312.46 592002.73,-416255.13 591988.41,-416240.88 591959.68,-416212.16 591930.84,-416183.55 591873.26,-416154.83 591844.53,-416126.11 591758,-416111.64 591642.73,-416054.31 591628.42,-416025.7 591599.58,-415939.76 591570.85,-415825.21 591542.23,-415739.28 591513.49,-415681.95 591484.76,-415309.69 591456.36,-415195.15 591427.63,-414966.05 591399.12,-414908.83 591370.28,-414851.5 591341.55,-414679.63 591312.93,-414593.69 591284.19,-414536.47 591255.46,-414479.14 591226.73,-414278.76 591198.11,-414129.67 591014.75,-414100.95 591014.75,-414072.34 591014.86,-414015.13 591014.86,-413957.8 591014.97,-413900.58 590986.13,-413871.97 590986.24,-413843.25 590986.24,-413814.64 590957.51,-413785.92 590928.67,-413757.31 590899.93,-413699.98 590885.62,-413685.73 590856.78,-413657.01 590828.05,-413628.4 590799.2,-413599.68 590770.47,-413599.68 590712.79,-413599.68 590683.94,-413570.96 590626.37,-413542.02 590424.56,-413542.02 590395.83,-413621.72 590265.06,-413675.06 590186.05,-413646.34 590041.95,-413646.22 589955.53,-413674.72 589897.84,-413703.33 589840.16,-413731.94 589782.47,-413755.87 589677.05,-413774.69 589652.68,-413789.05 589638.37,-413817.54 589580.68,-413846.15 589522.99,-413860.29 589407.62,-413913.75 589155.23,-414079.56 588893.38,-414093.81 588835.69,-414122.42 588778,-414136.66 588763.58,-414151.02 588749.16,-414165.27 588734.63,-414179.63 588720.32,-414193.88 588705.79,-414208.24 588691.48,-414222.38 588676.94,-414236.74 588662.63,-414251.1 588648.1,-414265.35 588633.79,-414279.6 588619.26,-414293.96 588604.84,-414308.21 588590.41,-414322.57 588575.99,-414336.82 588561.57,-414351.18 588547.15,-414351.18 588518.31,-414336.71 588489.58,-414394.04 588489.46,-414408.28 588403.05,-414422.53 588388.51,-414436.89 588374.2,-414465.39 588316.52,-414479.64 588301.99,-414494 588287.57,-414508.25 588273.14,-414522.61 588258.72,-414536.86 588244.3,-414551.22 588229.88,-414565.47 588215.46,-414579.83 588201.04,-414594.08 588186.62,-414651.29 588157.66,-414665.65 588143.35,-414689.7 588124.24,-414737.12 588099.98,-414751.48 588085.55,-414779.98 588027.87,-414794.23 588013.45,-414851.56 587999.03,-414851.45 587941.34,-414908.67 587926.81,-414923.03 587912.5,-414937.27 587897.97,-414951.63 587883.55,-414980.13 587768.29,-415008.74 587710.6,-415008.63 587681.76,-414980.02 587653.03,-414951.3 587595.34,-414951.19 587480.09,-414951.19 587451.24,-414922.25 587249.57,-414907.77 587134.31,-414964.99 587134.2,-414950.74 587076.63,-414922.02 586990.22,-414921.91 586932.53,-414921.8 586817.27,-414892.97 586702.02,-414878.61 586644.45,-414849.89 586629.91,-414821.28 586601.18,-414735.34 586601.29,-414706.73 586615.72,-414720.98 586529.3,-414749.59 586471.62,-414749.59 586413.93,-414749.48 586327.52,-414749.37 586298.68,-414720.65 586241.11,-414706.18 586068.17,-414792 586053.63,-414877.83 586039.21,-414863.58 586010.37,-414863.58 585981.53,-414863.47 585952.69,-414849.11 585895.12,-414934.94 585895.01,-414934.94 585837.32,-414877.61 585837.43,-414863.36 585808.59,-414849 585779.86,-414906.22 585794.06,-414963.43 585794.06,-415020.76 585765.11,-415035.01 585750.8,-415063.62 585664.27,-415092.12 585577.75,-415106.37 585563.33,-415120.73 585548.91,-415149.12 585404.81,-415149.12 585375.97,-415134.64 585289.56,-415106.03 585275.14,-415077.31 585246.29,-415048.71 585217.56,-415019.98 585188.72,-414991.38 585159.99,-414962.66 585131.15,-414934.05 585102.42,-414876.72 585073.69,-414819.5 585059.38,-414819.39 585001.7,-414790.78 584987.28,-414704.84 584958.55,-414647.62 584944.24,-414647.51 584886.67,-414532.96 584872.36,-414504.35 584843.52,-414447.02 584829.21,-414432.77 584771.64,-414404.05 584742.8,-414389.58 584685.23,-414360.97 584670.81,-414303.76 584656.5,-414289.39 584598.82,-414260.67 584541.25,-414232.07 584512.52,-414203.34 584454.84,-414174.62 584397.27,-414145.9 584339.7,-414117.29 584310.85,-414117.29 584282.01,-414117.18 584253.17,-414088.46 584166.76,-414059.74 584051.51,-414031.13 584022.78,-414002.41 583965.21,-413973.69 583907.53,-413944.97 583821.12,-413916.25 583763.55,-413887.64 583734.71,-413858.92 583648.3,-413830.2 583561.89,-413801.48 583504.32,-413772.76 583417.91,-413744.04 583331.5,-413715.32 583302.66,-413686.6 583187.4,-413657.88 583158.68,-413629.27 583129.84,-413600.66 583101.11,-413571.83 582985.86,-413571.72 582841.77,-413571.72 582812.93,-413571.5 582639.99,-413585.52 582438.22,-413642.74 582438.22,-413656.99 582322.86,-413685.6 582265.18,-413714.1 582178.77,-413742.59 582063.41,-413756.84 582048.88,-413771.2 582034.57,-413799.7 581948.05,-413828.31 581890.37,-413842.56 581875.95,-413856.81 581861.53,-413885.42 581803.85,-413899.67 581789.43,-413914.03 581775.01,-413928.27 581760.59,-413971.05 581757.43,-414014.1 581760.48,-414028.46 581774.9,-414042.82 581789.21,-414057.18 581803.74,-414071.43 581818.05,-414128.76 581832.47,-414114.51 581861.31,-414100.15 581890.15,-414186.09 581875.51,-414214.7 581875.51,-414228.95 581832.25,-414200.23 581745.84,-414185.76 581659.43,-414099.93 581645.12,-414071.21 581616.28,-414013.99 581587.55,-413918.51 581344.54,-413870.39 581213.08,-413884.75 581198.66,-413884.64 581141.1,-413870.05 580910.49,-413812.72 580896.18,-413784.12 580867.34,-413755.51 580838.61,-413726.79 580809.77,-413612.24 580781.05,-413555.02 580766.85,-413540.66 580738.01,-413526.19 580593.93,-413468.86 580579.51,-413449.57 580523.67,-413483.11 580449.84,-413483 580392.27,-413483 580363.43,-413511.61 580276.91,-413525.85 580262.5,-413582.96 580233.54,-413597.32 580219.24,-413611.57 580204.7,-413668.9 580190.29,-413683.15 580132.72,-413697.4 580118.19,-413711.76 580103.77,-413726.01 580089.35,-413754.62 580089.35,-413840.44 580089.24,-413954.99 580089.12,-413969.35 580103.54,-413983.71 580117.85,-414012.32 580117.85,-414155.37 580103.32,-414155.48 580161,-414241.3 580146.36,-414441.68 580117.29,-414456.04 580102.98,-414470.29 580088.45,-414484.65 580074.15,-414498.9 580059.61,-414513.26 580045.31,-414527.51 580030.77,-414556.12 580030.77,-414584.73 580045.19,-414584.61 579929.95,-414527.28 579929.95,-414541.64 579901.11,-414541.64 579872.38,-414513.04 579843.54,-414484.32 579785.98,-414455.59 579728.3,-414455.59 579699.57,-414469.84 579685.04,-414484.2 579670.62,-414484.09 579613.05,-414483.98 579497.81,-414483.98 579468.97,-414455.26 579382.56,-414455.15 579296.05,-414455.04 579267.21,-414426.43 579238.48,-414411.96 579180.8,-414354.74 579166.5,-414326.02 579137.66,-414297.41 579108.93,-414240.08 579094.62,-414125.64 579094.73,-414125.53 579037.06,-414096.92 579037.17,-414097.03 579123.57,-414039.82 579109.15,-414011.1 579109.27,-413925.27 579109.27,-413839.33 579080.65,-413810.72 579080.65,-413696.17 579080.76,-413638.96 579052.03,-413610.23 579023.2,-413581.63 578994.47,-413438.47 578965.74,-413238.09 578937.24,-413066.22 578908.62,-413037.61 578879.78,-413009 578879.78,-412980.39 578879.9,-412894.45 578851.17,-412837.12 578822.33,-412808.51 578793.6,-412722.57 578793.71,-412693.96 578808.13,-412693.96 578750.57,-412665.35 578736.15,-412636.63 578707.31,-412608.03 578707.42,-412522.2 578736.26,-412464.98 578736.37,-412407.65 578736.37,-412321.82 578765.32,-412293.21 578794.16,-412236 578794.27,-412092.84 578765.55,-412064.23 578765.66,-412035.51 578765.66,-411921.07 578765.77,-411892.46 578794.61,-411749.31 578823.56,-411720.81 578852.4,-411634.87 578852.51,-411491.71 578823.89,-411434.5 578809.59,-411420.13 578752.02,-411391.53 578723.18,-411362.81 578694.46,-411334.2 578636.78,-411319.72 578550.37,-411291 578535.95,-411262.4 578521.65,-411248.26 578636.89,-411234.01 578694.57,-411090.85 578709.1,-411033.63 578737.94,-410976.42 578766.78,-410861.87 578767,-410833.26 578738.16,-410775.93 578709.43,-410718.71 578680.6,-410661.38 578666.4,-410661.38 578608.72,-410632.77 578594.3,-410604.05 578565.46,-410575.33 578536.74,-410518.11 578522.43,-410503.86 578493.59,-410475.14 578464.86,-410446.42 578378.46,-410432.06 578320.78,-410374.84 578335.2,-410346.24 578364.04,-410289.02 578392.99,-410260.41 578407.41,-410246.05 578378.68,-410145.75 578335.43,-410117.14 578335.54,-410088.53 578306.7,-410031.2 578292.39,-410045.56 578263.55,-410059.81 578249.13,-410088.42 578249.13,-410174.36 578277.75,-410209.58 578264.61,-410255.83 578279.38,-410298.7 578301.89,-410374.73 578277.64,-410489.28 578277.41,-410546.5 578277.41,-410632.33 578262.99,-410632.44 578320.56,-410689.66 578334.87,-410804.2 578334.76,-410890.03 578334.64,-411061.8 578334.42,-411090.41 578334.42,-411262.17 578334.2,-411348.11 578319.78,-411333.86 578348.62,-411333.86 578377.45,-411348.11 578391.76,-411405.44 578391.76,-411419.69 578377.34,-411433.94 578362.92,-411448.3 578348.5,-411462.55 578334.08,-411548.49 578333.97,-411634.31 578362.7,-411648.79 578377.12,-411663.03 578391.43,-411691.64 578391.43,-411806.08 578362.48,-411863.3 578348.06,-411877.77 578405.62,-411906.49 578463.3,-411920.74 578477.61,-411978.07 578492.03,-411992.32 578434.35,-412006.57 578419.82,-412035.18 578405.51,-412049.65 578463.08,-412063.9 578520.75,-412092.5 578506.22,-412106.86 578491.8,-412121.11 578477.38,-412149.72 578477.38,-412164.08 578491.8,-412168.65 578510.69,-412149.83 578520.64,-412149.83 578549.48,-412178.44 578549.37,-412188.24 578530.37,-412207.05 578534.95,-412350.21 578534.73,-412464.65 578534.61,-412493.37 578534.61,-412507.62 578520.19,-412521.98 578505.77,-412536.22 578491.36,-412550.47 578476.94,-412564.83 578462.52,-412579.08 578448.1,-412665.02 578447.99,-412692.34 578440.78,-412714.79 578443.62,-412732.15 578472.13,-412779.46 578476.6,-412765.32 578491.13,-412750.96 578519.97,-412865.51 578534.17,-412879.87 578548.59,-412894.12 578563.01,-412922.73 578562.89,-412979.94 578562.89,-413037.27 578562.78,-413065.88 578562.78,-413123.1 578562.67,-413137.46 578548.36,-413151.71 578533.83,-413237.54 578519.41,-413252.01 578576.98,-413266.26 578591.4,-413323.48 578591.28,-413438.02 578562.33,-413466.63 578562.33,-413480.99 578576.75,-413495.35 578634.43,-413638.51 578648.63,-413652.87 578663.05,-413667.12 578677.35,-413810.28 578677.13,-413896.1 578677.13,-413953.43 578691.44,-413939.18 578720.28,-413910.57 578749.23,-413910.69 578777.95,-413910.69 578806.79,-413896.55 578979.71,-413867.83 578979.71,-413853.58 578950.99,-413839.11 578835.74,-413781.78 578821.32,-413667.34 578821.44,-413581.4 578835.97,-413595.87 578864.81,-413624.48 578922.37,-413653.2 578980.05,-413667.56 579037.62,-414039.71 579022.75,-414054.07 579008.33,-414078.11 578960.49,-414182.75 578950.54,-414182.86 579037.06,-414240.08 579036.94,-414249.99 579075.62,-414297.3 579051.25,-414354.52 579036.83,-414319.03 579023.27,-414295.14 579004.17,-414276.03 578959.26,-414267.43 578925.83,-414267.43 578898.12,-414276.03 578879.96,-414290.36 578847.47,-414299.91 578815.95,-414336.23 578810.21,-414357.24 578815.95,-414369.67 578831.23,-414370.62 578857.03,-414366.8 578879,-414364.89 578897.15,-414360.11 578900.98,-414347.69 578888.56,-414332.4 578891.42,-414334.31 578901.94,-414365.84 578913.4,-414367.75 578924.86,-414385.91 578943.98,-414403.11 578948.75,-414414.57 578940.16,-414427 578932.51,-414448.01 578942.07,-414470.95 578940.16,-414498.65 578955.44,-414496.74 578986.97,-414508.2 579018.5,-414536.87 579056.72,-414582.73 579157.04,-414661.08 579243.99,-414679.24 579254.5,-414693.56 579255.45,-414702.17 579262.15,-414714.59 579258.32,-414726.99 579266.99,-414757.58 579269.79,-414794.84 579290.81,-414805.36 579301.31,-414818.73 579295.59,-414836.89 579303.22,-414853.13 579298.45,-414873.2 579303.22,-414891.34 579295.59,-414970.45 579353.17,-414970.56 579439.57,-414970.67 579554.82,-414970.67 579583.66,-414970.78 579670.06,-414942.28 579756.58,-414942.39 579814.26,-414971.12 579929.5,-414971.12 579958.23,-414971.12 579987.07,-414985.48 580001.49,-414999.84 580015.91,-415014.08 580030.22,-415028.44 580044.64,-415042.81 580059.05,-415057.17 580073.47,-415085.77 580131.04,-415114.61 580217.45,-415128.86 580231.87,-415143.22 580246.29,-415172.05 580447.94,-415186.41 580462.25,-415200.77 580476.78,-415200.88 580563.19,-415200.88 580592.02,-415229.6 580678.43,-415243.85 580692.74,-415258.21 580707.16,-415287.15 580937.76,-415287.15 580966.49,-415258.76 581168.26,-415230.16 581197.1,-415201.66 581283.62,-415187.41 581341.3,-415158.8 581355.72,-415130.19 581384.56,-415101.58 581413.4,-415072.97 581413.4,-415044.25 581399.09,-415044.36 581456.77,-415015.75 581471.08,-414987.15 581500.03,-414958.54 581528.87,-414901.32 581543.4,-414901.43 581600.97,-414844.1 581615.39,-414815.6 581644.23,-414786.99 581673.07,-414758.38 581702.02,-414672.56 581730.86,-414643.95 581730.86,-414615.34 581730.97,-414586.73 581759.81,-414558.12 581788.65,-414529.51 581817.49,-414500.9 581846.33,-414443.68 581875.28,-414415.07 581904.12,-414329.25 581904.23,-414315 581947.49,-414315 581976.33,-414300.75 582033.9,-414272.14 582048.32,-414243.53 582077.16,-414186.31 582106.12,-414157.7 582134.96,-414129.09 582163.8,-414100.49 582192.64,-414071.88 582221.48,-414043.38 582250.32,-413986.05 582264.85,-413972.02 582466.62,-413972.13 582553.03,-413972.25 582581.87,-413972.25 582639.55,-413986.49 582668.28,-413929.28 582668.39,-413943.64 582697.23,-413972.36 582754.8,-413986.72 582812.48,-414015.33 582797.95,-414101.15 582797.83,-414158.48 582826.56,-414172.84 582840.98,-414201.56 582898.66,-414215.81 582912.97,-414330.36 582941.7,-414344.72 582956.12,-414359.08 582970.43,-414416.3 582999.16,-414559.46 583013.47,-414559.57 583071.15,-414588.18 583056.62,-414602.54 583042.31,-414616.79 583027.78,-414674 582998.93,-414731.22 582998.82,-414745.58 583013.24,-414759.94 583027.66,-414960.32 583056.17,-415046.26 583056.17,-415103.47 583056.06,-415132.08 583056.06,-415160.69 583055.95,-415275.24 583055.83,-415475.62 583055.61,-415504.22 583055.61,-415561.55 583055.5,-415590.16 583055.5,-415647.38 583055.39,-415675.99 583055.39,-415704.6 583055.39,-415761.93 583084.12,-415790.54 583084,-415847.76 583069.58,-415847.87 583127.26,-415933.81 583141.46,-415948.17 583155.99,-415962.42 583170.3,-415976.78 583184.72,-415991.02 583199.03,-416019.75 583199.03,-416048.35 583184.72,-416062.71 583242.29,-416077.07 583299.86,-416105.68 583285.44,-416134.29 583271.02,-416134.4 583357.43,-416191.62 583357.43,-416191.73 583443.84,-416306.28 583443.73,-416306.39 583501.41,-416363.61 583515.61,-416449.55 583530.03,-416464.02 583616.44,-416478.27 583645.28,-416421.05 583645.28,-416406.8 583674.12,-416378.19 583702.96,-416349.58 583760.64,-416349.7 583789.48,-416363.94 583803.9,-416449.88 583818.21,-416449.88 583875.89,-416507.1 583861.36,-416564.43 583861.25,-416593.04 583861.25,-416650.26 583832.3,-416707.48 583832.3,-416793.42 583832.18,-416879.24 583817.65,-416893.6 583760.08,-416907.74 583702.4,-416850.52 583687.98,-416793.19 583673.67,-416778.94 583644.94,-416750.22 583616.1,-416735.86 583558.53,-416850.3 583572.73,-416864.77 583587.15,-416879.02 583601.46,-417022.18 583615.77,-417036.65 583673.45,-417050.9 583687.76,-417108.12 583702.18,-417108.23 583788.59,-417165.56 583802.9,-417179.92 583817.32,-417208.64 583903.73,-417222.89 583932.57,-417194.28 583946.99,-417108.45 583947.1,-417022.51 583918.37,-416936.68 583918.48,-416879.35 583933.02,-416879.47 583990.59,-416793.64 584005.12,-416707.7 584019.65,-416707.81 584077.22,-416650.59 584077.33,-416650.59 584135.01,-416679.2 584120.48,-416707.81 584106.06,-416707.92 584163.74,-416822.47 584177.94,-416879.69 584206.67,-416965.63 584235.4,-417051.57 584264.13,-417065.93 584278.55,-417080.17 584292.97,-417137.5 584321.7,-417194.83 584350.43,-417252.05 584379.16,-417266.52 584393.58,-417280.77 584408,-417337.99 584436.73,-417395.32 584465.46,-417409.68 584479.88,-417424.04 584494.3,-417438.4 584508.72,-417452.65 584523.03,-417467.01 584537.45,-417481.26 584551.87,-417495.73 584566.29,-417509.98 584580.6,-417567.31 584609.33,-417624.53 584638.06,-417681.86 584666.78,-417767.79 584695.51,-417968.17 584724.13,-418054.11 584752.86,-418254.6 584781.48,-418311.81 584781.37,-418340.42 584781.37,-418454.97 584809.98,-418512.3 584838.71,-418655.46 584867.44,-418669.82 584881.86,-418684.07 584896.17,-418827.33 584924.79,-419027.71 584953.41,-419228.2 584982.03,-419399.96 585010.64,-419414.32 585025.06,-419428.68 585082.64,-419514.51 585096.94,-419629.06 585111.25,-419643.53 585168.82,-419657.78 585183.13,-419715.11 585211.86,-419729.47 585226.4,-419743.72 585240.7,-419758.19 585255.13,-419786.8 585312.81,-419815.52 585370.38,-419829.88 585384.69,-419844.24 585399.11,-419858.49 585413.53,-419872.85 585427.95,-419901.57 585485.52,-419930.29 585543.09,-419959.01 585600.78,-419987.62 585658.35,-419987.73 585687.19,-419987.84 585831.29,-420016.78 586032.95,-420016.78 586090.64,-420017.01 586205.89,-420017.12 586292.31,-419988.73 586494.09,-419988.73 586522.93,-419988.73 586551.77,-419988.84 586580.61,-420017.56 586667.03,-420017.56 586695.87,-420017.56 586724.6,-420031.92 586782.28,-420089.25 586796.59,-420103.61 586811.01,-420117.86 586825.32,-420261.02 586825.1,-420289.63 586825.1,-420346.96 586853.83,-420547.33 586868.03,-420547.44 586954.55,-420633.38 586968.75,-420661.99 586968.75,-420690.6 586954.33,-420690.71 587012.01,-420747.93 587026.32,-420891.09 587026.1,-420919.7 587026.1,-420934.17 587040.52,-420948.42 587054.83,-420977.02 587069.25,-420962.66 586954,-420948.19 586896.42,-420976.8 586910.73,-420991.27 586925.15,-421005.52 586939.46,-421034.13 586939.46,-421048.49 586925.04,-421062.74 586910.62,-421119.96 586881.78,-421134.32 586867.36,-421134.21 586809.67,-421119.85 586752.1,-421091.24 586766.52,-421062.52 586780.94,-421048.16 586694.53,-421033.8 586636.96,-420976.47 586636.96,-420962.22 586608.23,-420962.22 586579.38,-420976.47 586564.85,-421033.69 586564.85,-421234.06 586564.52,-421262.67 586564.52,-421377.22 586578.82,-421362.97 586549.98,-421348.5 586521.25,-421405.83 586535.56,-421420.19 586549.98,-421434.44 586564.29,-421520.38 586578.71,-421520.49 586636.29,-421606.31 586650.59,-421620.79 586665.02,-421649.39 586722.59,-421678.11 586780.16,-421692.47 586837.84,-421749.69 586823.31,-421778.3 586808.89,-421764.16 586866.57,-421735.56 586924.26,-421735.67 586952.99,-421749.92 586981.83,-421692.7 586981.94,-421707.06 587010.67,-421735.78 587068.36,-421735.78 587097.09,-421735.78 587125.93,-421750.25 587241.19,-421778.86 587226.77,-421793.22 587212.35,-421807.47 587197.92,-421864.69 587168.97,-421950.51 587168.86,-422093.78 587197.48,-422151 587226.21,-422165.36 587240.63,-422179.72 587255.05,-422194.08 587269.47,-422208.33 587283.78,-422265.66 587312.51,-422280.02 587327.04,-422294.27 587341.35,-422308.74 587355.77,-422322.99 587370.08,-422337.35 587384.62,-422351.6 587398.93,-422366.07 587413.35,-422394.68 587470.92,-422409.04 587528.6,-422466.37 587528.49,-422466.37 587586.18,-422523.7 587600.49,-422552.31 587600.37,-422580.92 587600.37,-422609.52 587600.37,-422638.13 587600.26,-422652.61 587614.68,-422666.85 587629.11,-422695.46 587643.53,-422709.71 587557,-422709.71 587528.16,-422709.6 587470.58,-422709.49 587384.06,-422680.77 587268.8,-422666.3 587153.54,-422723.52 587139.01,-422809.34 587110.17,-422866.56 587081.21,-422880.92 587066.9,-422895.17 587052.37,-422909.53 587037.95,-422923.78 587023.53,-422981 586994.58,-423066.83 586994.46,-423181.37 587023.19,-423267.31 587037.5,-423281.89 587239.29,-423310.62 587296.86,-423324.98 587354.43,-423382.19 587354.43,-423368.06 587440.85,-423353.81 587498.53,-423325.2 587512.95,-423182.04 587513.18,-423124.71 587498.87,-423110.57 587556.44,-423081.96 587585.39,-423082.08 587642.97,-423110.8 587729.38,-423125.05 587743.8,-423139.41 587758.23,-423153.77 587772.54,-423168.13 587786.96,-423182.38 587801.38,-423268.31 587815.69,-423268.42 587902.1,-423211.21 587916.52,-423182.6 587945.48,-423153.99 587974.32,-423068.16 588003.16,-423039.55 588017.7,-423039.44 587960.12,-423010.83 587945.59,-422896.28 587945.81,-422781.85 587974.77,-422610.08 587989.41,-422595.83 588018.26,-422567.22 588075.94,-422567.33 588133.63,-422581.58 588147.94,-422596.06 588162.36,-422624.66 588220.04,-422639.02 588234.35,-422653.38 588248.77,-422682.11 588306.35,-422696.35 588320.77,-422753.68 588349.5,-422810.9 588378.23,-422896.84 588406.96,-422954.17 588421.27,-422968.64 588507.8,-422983.22 588738.32,-423040.44 588723.78,-423154.88 588694.83,-423183.49 588694.72,-423212.21 588694.72,-423269.43 588680.3,-423283.68 588622.61,-423297.92 588608.19,-423312.28 588593.77,-423326.53 588579.35,-423340.89 588564.92,-423355.14 588550.39,-423383.75 588550.39,-423398.11 588564.81,-423426.83 588622.39,-423426.94 588680.07,-423427.06 588766.49,-423441.3 588780.91,-423455.66 588795.33,-423470.02 588809.64,-423584.57 588838.37,-423598.93 588852.79,-423613.18 588867.1,-423699.12 588881.41,-423713.48 588939.1,-423727.84 588953.41,-423742.2 588967.83,-423756.45 588982.25,-423813.78 588982.14,-423899.61 588953.19,-423913.97 588938.88,-423942.46 588823.5,-423970.96 588765.82,-423985.21 588751.4,-423999.57 588736.98,-424028.07 588650.45,-424042.32 588636.03,-424056.68 588621.6,-424070.82 588563.92,-424128.15 588549.39,-424156.75 588549.39,-424213.97 588563.81,-424214.08 588621.38,-424271.41 588635.69,-424300.02 588635.69,-424357.24 588606.74,-424471.68 588577.78,-424486.04 588563.36,-424514.65 588505.79,-424528.9 588491.25,-424543.26 588476.83,-424557.39 588462.41,-424571.75 588447.99,-424586 588433.57,-424614.61 588433.46,-424643.33 588433.46,-424657.58 588419.15,-424671.83 588404.61,-424686.19 588390.19,-424700.44 588375.77,-424757.66 588346.82,-424772.02 588332.51,-424786.27 588317.97,-424843.48 588303.55,-424857.84 588245.87,-424872.09 588231.44,-424886.34 588217.02,-424886.34 588188.18,-424857.62 588130.61,-424857.62 588101.76,-424871.87 588087.34,-424929.09 588072.92,-424929.09 588015.24,-424986.31 588000.7,-425072.13 588000.59,-425158.07 588000.48,-425215.29 587971.64,-425272.51 587971.53,-425286.87 587985.95,-425301.34 588101.21,-425358.56 588115.52,-425415.89 588129.94,-425430.36 588216.35,-425444.61 588245.08,-425416 588259.5,-425387.5 588288.35,-425358.89 588317.19,-425273.07 588346.14,-425215.74 588375.1,-425158.52 588389.63,-425144.6 588620.15,-425115.99 588648.99,-425087.5 588706.68,-425087.5 588735.52,-425087.5 588764.37,-425087.5 588793.21,-425101.86 588850.78,-425044.64 588865.2,-424987.42 588865.32,-424958.7 588851.01,-424944.56 588879.85,-424915.95 588908.69,-424915.95 588937.53,-424916.06 589023.95,-424916.18 589052.79,-424930.42 589081.64,-424787.27 589096.17,-424730.05 589110.7,-424715.8 589139.55,-424701.55 589197.23,-424644.22 589197.23,-424658.69 589226.08,-424672.94 589240.39,-424758.88 589269.12,-424844.82 589269.01,-424959.26 589268.89,-424973.73 589283.32,-424987.98 589297.63,-425045.31 589326.36,-425102.52 589355.09,-425117 589369.62,-425131.25 589427.2,-425159.85 589412.66,-425174.21 589398.35,-425202.82 589340.67,-425217.07 589326.13,-425231.43 589311.71,-425259.93 589254.14,-425259.82 589138.76,-425231.1 589081.19,-425230.88 588908.24,-425245.13 588893.82,-425259.49 588879.4,-425273.73 588864.98,-425502.72 588835.8,-425789.03 588835.47,-425803.39 588849.89,-425832.11 588907.46,-425846.36 588921.77,-425860.72 588936.3,-425874.97 588950.61,-425932.3 588965.04,-425918.05 588993.88,-425903.8 589051.45,-425875.19 589065.87,-425846.58 589094.72,-425817.98 589123.56,-425789.37 589152.52,-425760.76 589166.94,-425760.76 589109.36,-425732.15 589109.36,-425717.9 589138.21,-425689.29 589195.89,-425675.15 589311.15,-425789.59 589296.62,-425846.81 589267.66,-425861.17 589253.24,-425875.42 589238.82,-425889.78 589224.4,-425904.03 589209.98,-425918.39 589195.56,-425932.52 589181.13,-426018.46 589152.18,-426075.68 589123.23,-426132.9 589123.23,-426147.26 589137.65,-426175.98 589195.22,-426190.34 589209.53,-426204.7 589224.06,-426218.95 589238.37,-426276.17 589238.26,-426290.53 589223.84,-426304.78 589209.42,-426362.1 589209.31,-426447.93 589238.04,-426505.26 589237.93,-426519.62 589223.62,-426533.76 589137.09,-426590.98 589136.98,-426576.73 589108.24,-426547.9 588992.98,-426547.79 588935.3,-426547.79 588906.57,-426547.79 588877.72,-426576.28 588791.2,-426576.17 588704.78,-426547.45 588675.94,-426518.84 588618.36,-426490.12 588589.52,-426490.01 588531.95,-426490.01 588474.26,-426489.79 588359,-426504.04 588344.58,-426561.26 588315.63,-426575.62 588301.32,-426604.22 588243.63,-426632.72 588185.94,-426646.75 588013,-426732.69 588012.89,-426747.16 588099.31,-426761.41 588113.61,-426818.63 588113.5,-426832.99 588099.19,-426847.24 588084.66,-426861.6 588070.35,-426875.84 588055.82,-426933.06 588026.98,-426990.28 587998.02,-427047.5 587969.18,-427104.72 587940.22,-427190.66 587940.11,-427247.87 587954.53,-427247.99 588012.11,-427190.77 588026.64,-427104.83 588041.17,-427104.94 588127.59,-427047.72 588127.7,-427033.47 588156.54,-427004.86 588185.39,-426976.37 588271.91,-426976.48 588329.49,-426990.73 588358.33,-426904.9 588358.44,-426905.01 588416.13,-426876.4 588430.44,-426819.07 588444.97,-426833.54 588502.66,-426847.9 588560.23,-426790.68 588560.34,-426805.16 588675.6,-426805.27 588762.02,-426776.77 588819.7,-426776.77 588877.39,-426805.49 588963.81,-426819.85 588978.12,-426877.07 589006.96,-426934.4 589035.69,-426948.76 589050.11,-426977.48 589107.69,-426991.84 589122,-427006.2 589136.42,-427034.92 589194.1,-427049.17 589208.41,-427106.5 589237.14,-427120.86 589251.57,-427135.11 589265.88,-427149.47 589280.41,-427178.19 589337.98,-427178.3 589366.83,-427149.69 589424.51,-427121.19 589482.2,-427092.58 589511.04,-427063.97 589568.73,-427049.73 589655.15,-427135.66 589669.46,-427221.6 589698.08,-427307.43 589697.96,-427321.79 589683.65,-427321.79 589654.81,-427321.68 589597.12,-427335.93 589582.7,-427350.29 589568.28,-427364.43 589481.86,-427421.76 589467.33,-427436 589452.91,-427450.25 589438.38,-427593.41 589409.42,-427707.85 589380.47,-427736.46 589380.35,-427765.18 589380.35,-427822.39 589351.51,-427836.75 589337.09,-427836.64 589308.25,-427808.03 589279.51,-427807.92 589221.83,-427836.42 589106.46,-427836.2 588962.46,-427807.48 588933.62,-427807.37 588818.36,-427807.37 588789.52,-427807.25 588760.68,-427835.75 588616.57,-427835.64 588558.89,-427835.53 588472.47,-427849.78 588458.05,-427878.39 588443.63,-427892.86 588530.05,-427921.58 588616.46,-427950.41 588789.3,-427964.77 588803.72,-427979.13 588818.14,-427993.49 588875.71,-428079.32 588861.18,-428165.15 588832.22,-428222.36 588803.38,-428236.73 588788.96,-428265.33 588731.27,-428265.11 588558.33,-428236.39 588500.76,-428236.06 588270.13,-428250.31 588255.7,-428264.67 588241.28,-428278.92 588226.86,-428293.28 588212.44,-428307.52 588198.02,-428364.74 588183.6,-428378.99 588125.91,-428378.88 588039.38,-428350.16 587981.81,-428350.16 587952.97,-428378.66 587895.28,-428392.91 587880.86,-428407.27 587866.44,-428421.52 587852.02,-428478.73 587823.07,-428493.09 587808.76,-428507.34 587794.22,-428535.95 587794.22,-428550.31 587808.64,-428564.67 587822.95,-428579.03 587837.37,-428607.75 587895.06,-428622 587909.37,-428636.36 587923.79,-428641.15 588057.94,-428622.22 588067.89,-428622.22 588096.73,-428650.83 588096.73,-428660.74 588077.73,-428708.16 588067.78,-428722.41 588010.09,-428750.91 587952.41,-428765.16 587937.99,-428879.71 587909.03,-428894.07 587894.61,-428908.32 587880.19,-428965.42 587851.24,-428979.78 587836.82,-429008.39 587779.24,-429022.64 587764.71,-429051.25 587764.6,-429065.61 587779.13,-429079.97 587793.44,-429094.33 587807.86,-429123.05 587865.43,-429137.3 587894.28,-429080.08 587894.39,-429080.19 587980.8,-429137.41 587995.11,-429194.74 588009.54,-429209.21 588067.11,-429237.82 588124.68,-429252.18 588153.52,-429194.96 588167.95,-428994.59 588168.17,-428908.65 588168.39,-428851.43 588182.93,-428837.18 588240.5,-428822.93 588298.19,-428794.32 588312.61,-428765.72 588341.45,-428708.5 588370.4,-428622.67 588370.52,-428536.73 588370.63,-428479.51 588385.16,-428465.26 588414,-428465.38 588442.73,-428494.1 588557.99,-428522.82 588644.41,-428522.93 588673.25,-428522.93 588730.94,-428523.04 588788.51,-428508.79 588875.04,-428451.57 588875.15,-428437.32 588904,-428423.07 588961.57,-428308.53 588976.1,-428279.92 589004.95,-428222.7 589033.9,-428136.87 589048.43,-428122.62 589077.28,-428122.85 589192.54,-428122.96 589279.07,-428122.96 589307.91,-428123.07 589365.48,-428108.82 589452.01,-428051.49 589452.13,-428037.35 589509.7,-428008.85 589625.07,-427994.49 589653.92,-428109.04 589639.27,-428137.65 589639.27,-428252.2 589639.05,-428338.03 589638.94,-428796.22 589652.8,-428810.35 589566.27,-428824.49 589479.85,-428881.82 589479.74,-428896.07 589393.32,-428910.32 589378.79,-428924.68 589364.37,-428938.82 589306.79,-428996.04 589306.68,-429010.4 589248.99,-429024.64 589234.57,-429039 589220.15,-429053.25 589205.62,-429067.5 589191.31,-429081.75 589176.77,-429096.11 589162.47,-429110.36 589147.93,-429124.72 589133.62,-429138.97 589119.09,-429167.58 589119.09,-429282.13 589118.87,-429296.49 589104.56,-429310.74 589090.02,-429325.1 589075.6,-429339.34 589061.18,-429367.95 589061.18,-429396.56 589061.07,-429410.92 589046.76,-429410.59 588844.97,-429410.26 588585.61,-429424.5 588571.07,-429453.11 588571.07,-429481.72 588571.07,-429524.81 588570.98,-429565.12 588593.31,-429606.57 588590.98,-429653.6 588585.27,-429689.93 588623.71,-429706.18 588666.94,-429694.05 588695.31,-429674.46 588724.92,-429650.82 588761.77,-429621.62 588800.46,-429605.38 588850.98,-429616.06 588896.25,-429635.71 588922.46,-429684.98 588972.32,-429734.9 588981.65,-429777.78 589007.56,-429824.72 589030.31,-429872.79 589041.43,-429907.95 589055.28,-429928.38 589033.66,-429954.06 588990.01,-429966.66 588933.4,-429985.77 588916.67,-430004.88 588897.5,-430019.15 588886.4,-430039.58 588871.53,-430070.5 588854.63,-430085.37 588826.38,-430081.73 588783.75,-430068.93 588699.97,-430079.22 588663.24,-430082.96 588584.6,-430068.6 588498.18,-430076.89 588477.82,-430062.57 588422.94,-430043.52 588386.03,-430027.09 588347.52,-430027.09 588302.43,-430037.36 588282.6,-430051.58 588273.05,-430072.36 588259.08,-430090.4 588269.47,-430103.11 588283.62,-430122.82 588312.1,-430169.1 588345.79,-430207.79 588357.78,-430235.86 588358.21,-430272.77 588363.05,-430309.49 588358.92,-430350.82 588375.35,-430366.17 588425.27,-430363.6 588479.97,-430358.4 588535.98,-430378.65 588599.4,-430336 588702.65,-430305.43 588808.23,-430304.72 588861.26,-430295.33 588931.54,-430281.96 588968.75,-430243.03 588992.52,-430193.7 589039.44,-430137.98 589079.52,-430124.37 589102.99,-430145.33 589157.32,-430148.74 589196.74,-430128.54 589231.98,-430103.23 589269.06,-430043.81 589285.72,-429947.73 589279.81,-429862.81 589260.11,-429811.22 589232.52,-429774.26 589222.58,-429744.16 589214.48,-429714.54 589216.86,-429679.78 589245.65,-429617.55 589265.42,-429564.05 589266.74,-429528.28 589257.03,-429498.19 589248.87,-429454.12 589262.75,-429425.51 589291.59,-429368.29 589320.54,-429253.74 589335.07,-429253.85 589392.76,-429225.24 589407.18,-429168.02 589421.72,-429153.89 589508.25,-429125.28 589537.09,-429125.5 589681.18,-429125.5 589710.04,-429125.61 589767.61,-429139.86 589781.92,-429154.22 589796.46,-429168.58 589810.77,-429225.8 589839.5,-429240.27 589853.92,-429254.52 589868.23,-429283.13 589868.23,-429311.74 589868.23,-429326.21 589882.65,-429340.46 589896.96,-429455.01 589925.57,-429534.52 589975.31,-429594.27 589992.69,-429718.1 590037.22,-429776.76 590078.51,-429853.89 590139.33,-429898.42 590141.5,-429954.91 590126.3,-430007.05 590092.63,-430040.72 590040.48,-430046.16 589981.83,-430072.23 589937.29,-430130.88 589878.63,-430190.63 589849.3,-430351.39 589818.88,-430451.34 589817.8,-430478.49 589809.11,-430504.56 589778.69,-430533.89 589766.74,-430602.33 589691.79,-430695.75 589630.95,-430753.31 589603.8,-430823.92 589544.06,-430869.55 589496.26,-430911.91 589363.74,-430911.91 589317.02,-430896.7 589247.51,-430891.27 589206.22,-430904.31 589153,-430921.7 589128.01,-430958.62 589107.37,-430983.61 589106.29,-431020.54 589128.01,-431031.4 589157.35,-431041.17 589224.69,-431059.64 589254.03,-431093.32 589287.7,-431112.88 589315.94,-431112.88 589338.75,-431095.5 589376.78,-431096.58 589409.36,-431109.61 589440.86,-431133.51 589475.63,-431175.88 589500.6,-431237.8 589513.64,-431280.16 589509.3,-431317.09 589478.88,-431345.33 589432.17,-431397.48 589395.23,-431428.98 589393.06,-431473.52 589420.22,-431496.33 589451.72,-431514.79 589520.15,-431512.62 589561.44,-431500.67 589582.08,-431459.39 589594.03,-431401.82 589609.23,-431355.11 589643.99,-431291.02 589665.72,-431235.63 589661.37,-431151.98 589638.57,-431056.06 589633.29,-430989.72 589649.08,-430913.91 589694.35,-430862.32 589736.48,-430849.68 589765.96,-430857.05 589793.34,-430873.91 589824.92,-430919.18 589867.04,-430977.09 589892.31,-431010.78 589893.36,-431060.28 589880.73,-431131.88 589882.83,-431183.46 589910.21,-431203.47 589934.42,-431200.32 589959.7,-431173.99 589987.08,-431110.82 590026.03,-431036.05 590041.83,-430977.09 590051.31,-430926.55 590037.61,-430885.48 590020.76,-430849.68 590006.03,-430799.14 590006.03,-430729.65 590014.45,-430687.54 590012.35,-430607.51 589994.45,-430544.33 589989.18,-430513.8 589996.55,-430474.84 590020.76,-430416.93 590043.93,-430377.97 590047.09,-430355.86 590033.41,-430333.74 590036.56,-430310.57 590125.01,-430350.59 590157.65,-430375.86 590167.13,-430410.61 590180.81,-430502.21 590182.92,-430578.03 590196.61,-430642.25 590213.46,-430754.92 590237.67,-430822.31 590245.05,-430899.18 590232.41,-430926.55 590214.51,-430976.04 590200.82,-431051.85 590206.09,-431121.35 590230.3,-431197.16 590225.04,-431241.38 590228.2,-431280.33 590216.62,-431304.56 590203.98,-431324.56 590209.24,-431413 590256.63,-431441.44 590260.84,-431470.92 590232.41,-431504.61 590225.04,-431543.57 590233.47,-431562.53 590255.57,-431583.58 590272.42,-431628.86 590284,-431664.66 590274.53,-431702.57 590241.89,-431741.53 590241.89,-431798.38 590267.15,-431898.41 590291.38,-431941.58 590317.69,-431954.22 590338.76,-431954.22 590388.25,-431939.48 590412.46,-431911.05 590421.93,-431897.36 590432.47,-431857.35 590435.63,-431814.18 590425.1,-431773.11 590427.2,-431626.76 590425.1,-431537.26 590439.84,-431461.44 590444.05,-431394.06 590428.26,-431337.2 590431.41,-431279.29 590424.05,-431214 590433.52,-431155.03 590425.1,-431059.22 590406.15,-430971.82 590408.25,-430901.17 590435.39,-430834.82 590450.7,-430765.41 590439.47,-430718.47 590425.19,-430634.78 590410.9,-430597.01 590408.85,-430575.58 590393.55,-430567.42 590365.99,-430555.17 590355.78,-430510.26 590375.18,-430462.29 590404.77,-430431.67 590446.62,-430425.54 590470.1,-430402.08 590511.94,-430396.97 590543.58,-430404.12 590576.24,-430424.53 590595.63,-430469.44 590612.98,-430604.16 590649.73,-430675.6 590678.31,-430827.68 590773.22,-430884.84 590829.36,-430912.39 590875.28,-430930.76 590954.89,-430935.87 591019.2,-430918.51 591070.22,-430934.84 591097.78,-430974.65 591111.05,-431014.46 591105.95,-431120.6 591072.27,-431202.25 591064.11,-431333.91 591026.34,-431364.54 591028.38,-431394.14 591042.67,-431556.41 591060.02,-431688.07 591071.25,-431802.39 591114.12,-431912.62 591128.4,-432039.99 591177.45,-432112.88 591175.28,-432130.91 591164.46,-432146.8 591145.69,-432191.54 591133.42,-432308.46 591074.96,-432358.25 591058.36,-432400.11 591048.98,-432450.64 591051.15,-432494.65 591063.42,-432519.91 591056.92,-432542.28 591038.16,-432542.28 591020.84,-432565.38 590978.97,-432638.28 590914.03,-432694.57 590859.17,-432711.17 590852.68,-432758.79 590801.44,-432799.21 590773.3,-432858.39 590755.97,-432897.36 590756.7,-432950.05 590764.64,-432966.65 590780.51,-432994.06 590823.81,-433022.22 590851.96,-433058.3 590875.77,-433142.74 590901.76,-433203.37 590916.92,-433257.49 590943.61,-433279.14 590965.27,-433306.56 590997.75,-433323.16 591007.85,-433364.3 591017.23,-433404.71 591018.67,-433445.85 591010.74,-433484.1 590995.58,-433524.51 590996.3,-433548.33 590988.37,-433564.21 590990.52,-433601.01 590984.03,-433624.83 590975.38,-433637.82 590981.14,-433716.48 590965.27,-433744.64 590945.78,-433767.73 590945.06,-433811.75 590926.3,-433849.28 590895.26,-433922.89 590852.68,-433961.86 590810.82,-434077.34 590683.08,-434100.43 590648.45,-434142.29 590617.41,-434174.76 590607.3,-434203.64 590608.75,-434306.83 590629.68,-434340.04 590641.95,-434360.97 590657.1,-434377.56 590656.38,-434397.77 590647,-434419.42 590645.55,-434491.59 590647,-434510.36 590637.61,-434534.89 590635.46,-434638.1 590584.21,-434675.62 590570.5,-434717.48 590569.77,-434755.02 590577,-434806.97 590591.43,-434858.21 590616.68,-434897.91 590618.85,-434918.83 590610.19,-434936.88 590610.19,-434972.24 590615.97,-435015.55 590607.3,-435031.42 590591.43,-435118.74 590558.23,-435278.24 590504.82,-435320.82 590492.56,-435387.94 590447.81,-435470.93 590379.97,-435558.26 590283.99,-435572.69 590239.24,-435570.53 590219.03,-435553.93 590195.94,-435548.16 590179.34,-435548.88 590146.14,-435542.38 590132.43,-435505.58 590104.29,-435490.43 590081.9,-435476.71 590022,-435483.2 589985.2,-435482.48 589918.81,-435493.31 589859.63,-435486.81 589824.99,-435494.03 589809.11,-435496.19 589747.76,-435503.42 589718.18,-435537.34 589681.36,-435536.61 589665.49,-435501.97 589634.45,-435445.68 589614.25,-435421.14 589614.25,-435395.88 589640.23,-435331.65 589716.01,-435286.18 589745.6,-435227 589759.31,-435153.38 589759.31,-435105.76 589761.48,-435048.02 589789.63,-435006.16 589826.43,-434943.38 589898.59,-434914.5 589930.35,-434870.49 589944.79,-434822.13 589935.41,-434778.83 589911.58,-434748.51 589866.84,-434740.58 589844.47,-434753.26 589794.19,-434747.08 589739.84,-434733.49 589694.14,-434707.55 589660.79,-434625.42 589588.13,-434587.74 589565.89,-434553.16 589558.48,-434482.14 589554.78,-434441.99 589557.25,-434372.2 589572.69,-434328.97 589577.01,-434240.65 589572.07,-434191.86 589559.72,-434106.02 589530.7,-434041.18 589508.46,-433998.57 589499.81,-433967.06 589484.99,-433944.21 589485.61,-433896.04 589473.26,-433851.58 589451.02,-433834.9 589433.11,-433802.17 589412.11,-433765.73 589409.03,-433716.94 589414.59,-433686.06 589431.25,-433664.45 589451.02,-433630.48 589478.2,-433598.36 589484.99,-433580.45 589482.52,-433544.64 589453.49,-433518.08 589422.61,-433455.71 589340.48,-433413.7 589309.6,-433380.35 589315.77,-433334.66 589331.82,-433296.36 589360.86,-433271.66 589390.49,-433271.04 589406.56,-433281.55 589423.84,-433282.78 589441.76,-433273.51 589466.46,-433256.22 589493.02,-433229.05 589512.77,-433200.02 589516.49,-433164.2 589512.77,-433132.7 589505.99,-433103.06 589486.22,-433070.94 589460.29,-433040.06 589423.84,-432999.92 589358.39,-432975.84 589315.15,-432921.48 589234.86,-432901.11 589222.51,-432871.47 589189.78,-432833.79 589165.7,-432810.32 589165.08,-432786.85 589181.13,-432776.97 589193.49,-432779.44 589205.84,-432793.64 589210.16,-432807.24 589206.46,-432820.82 589211.4,-432830.7 589221.9,-432840.59 589248.46,-432840.59 589278.71,-432834.41 589297.86,-432812.18 589329.35,-432787.47 589370.11,-432765.24 589412.11,-432765.24 589429.41,-432752.89 589443.61,-432725.09 589461.52,-432687.42 589472.01,-432655.31 589467.7,-432629.37 589460.29,-432594.78 589438.05,-432578.73 589410.87,-432570.08 589390.49,-432573.79 589368.27,-432568.22 589344.18,-432552.79 589323.8,-432519.44 589300.95,-432492.27 589266.98,-432475.59 589239.8,-432465.1 589211.4,-432466.32 589189.78,-432468.79 589147.17,-432466.32 589117.21,-432451.82 589100.23,-432449.66 589075.52,-432438.22 589066.88,-432427.41 589057.31,-432419.7 589048.36,-432417.23 589035.39,-432399.32 589011.3,-432384.8 589008.83,-432381.09 589012.54,-432384.5 589019.02,-432379.56 589021.49,-432375.23 589019.32,-432366.28 589005.43,-432365.65 588997.71,-432371.52 588995.86,-432380.17 588997.71,-432386.96 588994.93,-432385.11 588986.59,-432370.91 588974.86,-432358.55 588976.72,-432355.47 588984.75,-432344.97 588984.75,-432331.38 588977.33,-432315.94 588982.89,-432313.47 588993.39,-432317.8 589008.21,-432313.47 589065.03,-432320.88 589120.61,-432309.77 589168.78,-432286.29 589208.31,-432255.41 589266.98,-432238.74 589331.82,-432244.92 589359.62,-432236.28 589390.49,-432223.31 589415.2,-432188.1 589433.11,-432145.49 589439.91,-432101.03 589438.67,-432062.73 589426.31,-432034.32 589403.46,-432020.73 589382.47,-432019.5 589342.32,-432025.06 589310.83,-432038.64 589285.51,-432053.47 589241.66,-432055.94 589164.46,-432070.76 589083.56,-432067.67 589046.5,-432046.68 589006.97,-432024.44 588981.66,-431992.95 588947.69,-431967.01 588934.72,-431948.47 588918.66,-431913.9 588910.64,-431896.6 588911.87,-431876.84 588926.69,-431852.75 588946.46,-431804.58 588961.89,-431782.35 588961.89,-431766.91 588952.63,-431740.96 588950.16,-431729.23 588940.27,-431721.2 588923.6,-431702.68 588924.22,-431691.56 588920.51,-431682.91 588904.45,-431645.24 588882.22,-431608.8 588850.73,-431582.87 588792.06,-431572.37 588775.38,-431541.49 588741.41,-431515.55 588702.51,-431509.99 588685.22,-431511.84 588663.59,-431532.84 588622.83,-431546.43 588613.57,-431584.71 588595.04,-431608.8 588567.87,-431663.15 588528.96,-431683.53 588515.38,-431710.09 588507.35,-431740.35 588510.44,-431776.17 588532.05,-431835.46 588575.28,-431856.46 588595.04,-431868.19 588617.89,-431881.78 588639.51,-431905.25 588646.93,-431939.21 588648.77,-431993.56 588640.13,-432016.41 588641.98,-432043.58 588656.18,-432052.85 588668.54,-432063.34 588712.38,-432070.76 588725.98,-432090.53 588734.62,-432125.73 588730.92,-432204.16 588707.44,-432223.31 588688.92,-432269.01 588687.06,-432298.65 588695.1,-432323.98 588709.91,-432346.82 588721.65,-432376.46 588719.18,-432427.11 588699.41,-432472.81 588679.66,-432491.33 588661.12,-432510.48 588624.07,-432536.42 588604.92,-432551.86 588593.81,-432570.39 588598.13,-432579.65 588611.72,-432593.24 588609.25,-432608.06 588598.75,-432627.21 588598.13,-432643.89 588604.31,-432670.44 588637.04,-432674.77 588652.48,-432707.49 588706.82,-432735.29 588746.97,-432747.02 588758.08,-432794.57 588771.68,-432816.81 588774.15,-432855.09 588784.03,-432880.42 588793.91,-432912.53 588801.31,-432918.71 588811.2,-432908.21 588825.4,-432911.91 588835.9,-432931.68 588836.52,-432950.83 588829.11,-432979.24 588825.4,-432999.61 588803.48,-433014.44 588798.84,-433020.93 588790.82,-433037.29 588785.26,-433050.26 588773.22,-433050.56 588759.32,-433059.52 588750.37,-433065.39 588738.94,-433076.51 588735.54,-433086.69 588725.36,-433113.25 588717.95,-433127.15 588718.25,-433148.14 588725.98,-433169.14 588734.62,-433183.96 588726.59,-433200.64 588723.5,-433208.35 588724.43,-433221.02 588724.43,-433242.33 588715.16,-433280.92 588716.09,-433307.17 588713.62,-433328.17 588709.61,-433344.23 588713.62,-433364.61 588726.9,-433383.45 588737.7,-433411.55 588742.03,-433439.33 588743.57,-433444.27 588737.7,-433449.84 588731.84,-433465.89 588729.37,-433471.15 588722.26,-433476.39 588717.02,-433489.98 588716.09,-433493.99 588710.22,-433507.89 588700.04,-433518.69 588697.87,-433544.02 588679.03,-433565.32 588671.01,-433592.18 588669.78,-433601.76 588673.48,-433620.9 588665.76,-433632.34 588669.46,-433642.83 588666.99,-433659.51 588658.35,-433669.38 588662.98,-433678.03 588663.29,-433691.31 588651.24,-433708.6 588649.08,-433716.02 588653.41,-433726.82 588653.41,-433733.93 588646,-433742.88 588640.13,-433759.25 588640.44,-433786.73 588644.46,-433812.66 588648.16,-433865.16 588671.62,-433903.77 588697.26,-433921.37 588708.37,-433937.11 588715.16,-433963.67 588713.62,-433990.84 588693.86,-434038.08 588660.2,-434062.79 588645.38,-434076.69 588646,-434091.2 588639.82,-434109.73 588640.13,-434138.14 588648.77,-434157.9 588658.97,-434173.34 588672.55,-434187.85 588675.02,-434198.04 588678.42,-434213.79 588679.96,-434213.79 588626.23,-434219.05 588602.14,-434230.16 588574.05,-434231.08 588545.64,-434232.01 588515.06,-434226.15 588469.98,-434221.21 588455.17,-434215.03 588390.31,-434207 588366.85,-434192.17 588341.53,-434152.34 588275.45,-434127.94 588239,-434086.56 588197.31,-434064.02 588180.33,-434045.5 588171.07,-434040.24 588161.18,-434024.19 588152.85,-434011.84 588152.23,-433996.1 588156.55,-433988.99 588155.01,-433977.56 588149.14,-433965.52 588161.18,-433948.23 588162.11,-433934.02 588157.8,-433914.88 588150.07,-433896.35 588149.76,-433875.66 588143.59,-433848.49 588142.36,-433820.08 588122.28,-433779.62 588097.57,-433758.02 588087.39,-433733.3 588069.17,-433719.72 588069.48,-433699.65 588077.51,-433658.89 588088.93,-433629.24 588088.93,-433612.27 588082.45,-433586.63 588067.62,-433560.08 588050.94,-433506.66 588037.36,-433484.11 588040.14,-433425.75 588051.87,-433369.54 588047.24,-433292.34 588033.35,-433248.81 588025.94,-433226.27 588016.67,-433209.59 588008.03,-433199.09 588006.48,-433190.44 588013.28,-433179.95 588011.42,-433151.85 587996.29,-433114.49 587995.06,-433069.09 587980.55,-433040.37 587972.82,-433019.99 587950.9,-432993.44 587925.27,-432985.4 587905.5,-432987.87 587893.77,-432986.34 587872.47,-433000.84 587841.28,-433014.12 587796.19,-433026.79 587777.35,-433045 587767.47,-433076.81 587754.5,-433102.13 587748.02,-433124.05 587749.56,-433146.29 587752.66,-433162.35 587740.31,-433181.49 587740.31,-433222.87 587750.19,-433285.55 587765.93,-433298.83 587772.41,-433305.32 587783.54,-433328.17 587787.55,-433339.29 587784.15,-433376.35 587790.95,-433426.67 587787.24,-433448.29 587781.06,-433484.42 587781.37,-433501.09 587781.37,-433504.19 587787.24,-433523.63 587797.43,-433530.12 587797.12,-433538.46 587789.71,-433573.66 587800.2,-433622.45 587801.13,-433646.54 587794.96,-433669.38 587786.31,-433700.89 587787.85,-433710.46 587790.63,-433719.41 587799.9,-433725.28 587803.3,-433744.11 587800.52,-433742.58 587807,-433744.74 587823.05,-433748.74 587829.54,-433757.7 587829.54,-433763.88 587823.98,-433769.13 587809.47,-433766.97 587802.99,-433789.2 587794.65,-433794.14 587789.09,-433820.08 587788.16,-433851.88 587791.56,-433860.53 587800.52,-433879.05 587805.77,-433907.77 587803.92,-433944.83 587809.47,-433970.16 587807,-433999.49 587799.29,-434027.59 587795.26,-434093.37 587794.03,-434109.42 587790.95,-434125.78 587790.95,-434139.69 587794.03,-434177.66 587793.72,-434187.54 587796.82,-434195.27 587802.67,-434211.32 587837.26,-434227.38 587862.9,-434240.65 587876.79,-434258.56 587886.36,-434274.32 587907.67,-434286.67 587912.3,-434299.64 587913.84,-434312.3 587908.9,-434321.56 587898.4,-434324.64 587882.35,-434332.37 587872.15,-434351.52 587862.27,-434359.23 587848.69,-434363.25 587837.26,-434374.98 587836.65,-434387.64 587833.86,-434395.68 587826.15,-434408.33 587826.45,-434416.98 587823.05,-434423.77 587812.87,-434432.42 587811.94,-434445.69 587808.24,-434453.11 587800.83,-434475.96 587796.19,-434483.37 587800.2,-434492.01 587797.43,-434500.66 587786.93,-434504.98 587767.17,-434498.19 587762.84,-434495.41 587757.6,-434499.11 587751.42,-434505.6 587752.96,-434507.76 587760.99,-434522.89 587777.05,-434539.88 587793.72,-434557.79 587819.35,-434572.61 587847.76,-434591.14 587861.97,-434611.51 587890.38,-434643.33 587921.57,-434669.57 587942.87,-434682.24 587962.33,-434688.1 587978.08,-434683.47 587983.32,-434683.77 587995.06,-434693.66 588007.1,-434694.28 588014.2,-434682.24 588031.19,-434679.76 588045.39,-434685.94 588058.36,-434701.38 588076.89,-434715.59 588090.47,-434732.56 588098.2,-434769.93 588131.23,-434827.36 588180.33,-434871.83 588222.33,-434885.11 588245.18,-434903.64 588268.96,-434905.49 588282.23,-434913.52 588296.75,-434920 588302.61,-434922.47 588314.04,-434918.15 588316.51,-434915.37 588322.06,-434916.3 588333.19,-434904.56 588332.57,-434895.61 588338.43,-434882.33 588348.94,-434872.45 588362.52,-434854.85 588363.14,-434842.19 588372.09,-434841.88 588381.05,-434835.7 588381.67,-434831.99 588372.71,-434826.75 588371.48,-434811 588386.3,-434803.9 588398.96,-434806.68 588407.3,-434819.96 588414.39,-434827.06 588429.84,-434825.83 588448.06,-434815.94 588458.87,-434807.29 588461.34,-434802.97 588467.21,-434804.82 588474.92,-434792.16 588478.93,-434787.53 588467.51,-434773.94 588463.19,-434766.23 588466.89,-434758.5 588481.4,-434755.1 588500.24,-434758.2 588524.63,-434768.7 588543.78,-434773.64 588570.34,-434774.88 588625.62,-434769.01 588680.58,-434751.1 588724.12,-434748 588742.03,-434731.03 588767.66,-434733.8 588773.22,-434733.19 588786.19,-434723.92 588796.38,-434725.46 588810.27,-434722.99 588833.74,-434734.72 588848.87,-434760.05 588869.25,-434767.77 588874.19,-434782.9 588883.46,-434803.28 588883.15,-434815.94 588881.29,-434853.3 588893.34,-434884.18 588910.94,-434892.52 588913.72,-434898.38 588910.01,-434909.5 588910.32,-434938.84 588919.28,-434948.1 588926.38,-434959.22 588925.76,-434968.17 588928.55,-434974.05 588938.42,-434982.37 588950.16,-434995.66 588958.5,-435004.62 588962.51,-435023.14 588960.97,-435045.37 588978.26,-435094.47 589010.99,-435131.53 589032.6,-435157.77 589041.25,-435181.86 589054.84,-435195.75 589057.31,-435210.27 589066.27,-435249.17 589072.75,-435287.47 589085.72,-435315.88 589093.44,-435338.11 589106.1,-435368.69 589129.26,-435380.11 589134.2,-435395.55 589136.67,-435436 589135.75,-435481.39 589139.13,-435527.41 589156.13,-435569.4 589172.8,-435599.35 589188.23,-435625.6 589212.63,-435649.68 589245.99,-435659.56 589267.28,-435665.12 589288.29,-435678.09 589308.04,-435686.43 589333.68,-435696.62 589342.02,-435709.28 589358.39,-435729.66 589378.77,-435737.38 589394.51,-435743.24 589396.98,-435750.97 589397.91,-435762.39 589407.79,-435775.06 589423.54,-435778.45 589437.44,-435778.45 589450.72,-435782.46 589459.67,-435783.4 589483.14,-435777.53 589508.15,-435775.98 589551.69,-435765.17 589593.38,-435752.2 589635.98,-435738.31 589687.25,-435731.51 589715.04,-435723.48 589737.27,-435709.9 589759.82,-435691.99 589788.23,-435680.56 589810.45,-435669.14 589820.65,-435648.44 589861.72,-435639.49 589882.72,-435636.71 589900.01,-435638.88 589946.02,-435638.88 589973.19,-435631.16 589980.61,-435621.89 589982.76,-435617.88 589991.41,-435620.97 590016.11,-435633.32 590047.62,-435639.49 590085.91,-435648.14 590102.26,-435671.92 590133.45,-435690.71 590142.99,-435711.92 590148.2,-435728.33 590157,-435739.94 590168.2,-435766.75 590179.41,-435835.58 590216.23,-435890.41 590235.43,-435930.83 590246.65,-435988.06 590252.65,-436008.07 590251.05,-436033.69 590240.24,-436063.7 590209.03,-436076.5 590189.82,-436084.5 590176.61,-436103.72 590164.2,-436126.93 590155.8,-436170.96 590154.2,-436210.57 590159.4,-436246.2 590172.61,-436273.4 590183.82,-436320.62 590196.62,-436358.65 590207.82,-436396.27 590220.63,-436437.49 590239.05,-436499.51 590271.05,-436516.72 590284.66,-436609.58 590331.09,-436721.63 590394.72,-436744.84 590413.93,-436754.05 590417.13,-436764.05 590417.13,-436782.07 590410.73,-436807.28 590409.12,-436832.88 590416.33,-436846.9 590419.13,-436889.71 590423.13,-436924.13 590435.14,-436976.96 590456.36,-437003.37 590459.55,-437050.2 590486.77,-437103.42 590528.39,-437119.83 590550.8,-437137.84 590558,-437150.24 590558,-437157.85 590551.19,-437158.65 590541.59,-437155.45 590521.58,-437171.86 590476.76,-437195.07 590451.55,-437215.08 590417.93,-437241.89 590366.71,-437267.51 590343.09,-437311.13 590274.26,-437354.35 590223.43,-437386.76 590191.42,-437446.8 590151.8,-437509.23 590129.79,-437559.25 590128.98,-437639.29 590136.99,-437738.95 590148.99,-437790.58 590160.6,-437832.59 590185.42,-437865 590198.22,-437898.22 590199.43,-437909.83 590208.63,-437930.24 590212.23,-437949.85 590212.63,-437960.26 590203.82,-437960.26 590193.81,-437967.46 590176.21,-437969.07 590155,-437980.66 590150.59,-437997.07 590139.39,-438007.48 590104.17,-438004.28 590066.56,-438004.68 590021.74,-437994.28 589987.31,-437983.47 589968.11,-437958.66 589960.1,-437946.16 589948.45,-437933.73 589927.12,-437908.13 589898.02,-437874.39 589830.52,-437860.42 589806.08,-437836.36 589784.75,-437802.62 589734.7,-437789.43 589735.48,-437769.64 589723.06,-437755.29 589700.57,-437747.53 589694.74,-437735.12 589695.14,-437671.88 589636.16,-437635.03 589584.57,-437610.2 589560.13,-437581.11 589553.14,-437561.7 589536.86,-437539.98 589530.65,-437478.69 589470.91,-437412.36 589416.6,-437358.04 589383.24,-437295.97 589316.12,-437231.18 589244.75,-437166.59 589190.24,-437107.54 589119.52,-437056.51 589049.54,-437013.5 588973.72,-436972.68 588884.78,-436947.15 588793.66,-436936.22 588711.29,-436942.79 588687.95,-436931.85 588660.98,-436920.91 588635.47,-436918 588588.08,-436926.01 588544.34,-436974.14 588451.76,-437025.89 588391.25,-437036.1 588355.52,-437082.03 588311.79,-437094.42 588287.73,-437031 588174.01,-436985.79 588108.39,-436945.71 588058.1,-436909.98 588025.29,-436870.61 587948.74,-436848.75 587931.25,-436815.21 587869.28,-436801.36 587858.35,-436791.88 587844.5,-436792.61 587830.64,-436804.27 587819.71,-436836.35 587827.74,-436874.26 587859.07,-436909.98 587924.68,-436947.89 587977.18,-437017.14 588079.24,-437054.32 588147.03,-437077.65 588184.93,-437084.21 588216.29,-437100.97 588240.34,-437125.76 588259.3,-437156.38 588258.57,-437165.86 588291.38,-437181.17 588308.87,-437205.22 588326.37,-437206.68 588352.62,-437214.7 588367.92,-437235.11 588378.86,-437258.45 588380.32,-437286.88 588358.44,-437291.98 588336.58,-437276.67 588320.53,-437260.63 588303.04,-437252.61 588290.65,-437269.38 588233.05,-437282.5 588220.67,-437310.2 588214.11,-437334.25 588206.07,-437358.31 588206.07,-437417.37 588222.85,-437463.29 588240.34,-437473.49 588249.1,-437484.44 588250.55,-437498.28 588244.73,-437513.59 588259.3,-437528.17 588288.46,-437545.66 588293.57,-437572.63 588323.45,-437582.84 588356.26,-437609.09 588420.41,-437634.61 588467.06,-437673.97 588506.43,-437717.71 588556,-437770.93 588602.66,-437823.42 588639.11,-437862.78 588651.5,-437899.48 588658.32,-437926.45 588663.8,-437935.93 588670.72,-437952.33 588677.65,-437975.3 588685.66,-437988.78 588717.01,-438000.08 588734.86,-438002.63 588747.99,-438001.17 588763.3,-438005.19 588768.03,-438015.39 588768.4,-438029.6 588766.95,-438039.09 588777.51,-438037.63 588784.07,-438028.88 588785.9,-438023.04 588778.61,-438012.84 588778.61,-438014.66 588787.72,-438028.51 588803.76,-438040.9 588806.31,-438053.3 588802.67,-438064.6 588807.76,-438070.79 588818.71,-438061.32 588826.36,-438064.23 588830.37,-438077.36 588832.92,-438107.6 588854.06,-438139.68 588878.12,-438141.51 588892.69,-438148.43 588899.98,-438162.65 588902.54,-438185.62 588936.44,-438187.07 588963.4,-438200.92 588975.08,-438211.13 588986.38,-438224.61 588995.12,-438229.35 589010.42,-438249.76 589019.55,-438269.45 589016.99,-438278.92 588991.84,-438290.59 588975.8,-438300.06 588969.24,-438300.06 588959.4,-438316.83 588961.22,-438323.03 588956.48,-438325.58 588945.55,-438335.05 588941.91,-438341.25 588931.7,-438327.77 588927.69,-438327.04 588920.77,-438350.37 588907.64,-438358.75 588897.8,-438376.61 588893.79,-438414.15 588886.87,-438438.58 588891.24,-438507.46 588921.49,-438526.79 588928.05,-438607.25 588936.74,-438628.9 588934.67,-438652.31 588921.47,-438715.01 588914.18,-438751.08 588906.17,-438781.16 588887.7,-438811.14 588868.21,-438824.63 588861.72,-438854.12 588858.22,-438870.61 588846.72,-438890.59 588816.74,-438922.07 588780.27,-438954.05 588749.79,-438981.04 588726.8,-438985.53 588704.82,-438988.53 588669.34,-438999.52 588625.87,-439005.52 588620.88,-439024.51 588620.88,-439034 588613.88,-439038 588594.39,-439053.48 588582.4,-439070.97 588546.42,-439086.96 588507.95,-439106.95 588408.02,-439115.95 588389.03,-439138.93 588372.54,-439166.91 588336.56,-439190.4 588300.59,-439212.38 588281.61,-439241.36 588280.6,-439280.33 588261.11,-439293.32 588250.13,-439346.29 588235.64,-439363.28 588226.13,-439380.76 588221.14,-439393.75 588207.66,-439418.24 588207.15,-439435.23 588202.66,-439449.73 588189.67,-439478.2 588192.66,-439511.69 588192.66,-439579.64 588205.65,-439631.6 588221.14,-439676.57 588220.14,-439748.03 588227.63,-439773.01 588224.14,-439844.95 588230.14,-439890.43 588225.64,-439946.89 588206.16,-439974.88 588206.65,-439983.87 588200.15,-439993.86 588183.17,-440044.33 588176.17,-440090.29 588161.18,-440143.26 588158.68,-440185.74 588152.18,-440216.22 588136.7,-440231.2 588137.7,-440259.69 588134.7,-440276.17 588125.71,-440309.15 588127.21,-440354.12 588125.71,-440375.1 588136.2,-440407.59 588165.68,-440419.07 588171.68,-440429.57 588167.68,-440471.05 588130.7,-440492.53 588095.22,-440503.54 588030.56,-440493.05 588004.58,-440490.55 587972.11,-440485.05 587947.12,-440491.55 587934.13,-440491.55 587914.65,-440487.56 587889.16,-440474.57 587858.68,-440456.58 587825.2,-440439.59 587818.2,-440420.6 587799.72,-440410.1 587772.74,-440393.11 587755.74,-440387.61 587742.75,-440377.13 587740.75,-440367.13 587746.76,-440356.65 587745.26,-440356.14 587736.26,-440383.62 587725.27,-440400.12 587714.28,-440400.12 587697.29,-440386.12 587677.8,-440361.14 587652.31,-440342.15 587650.82,-440324.16 587642.82,-440298.68 587645.33,-440284.69 587658.32,-440283.19 587681.3,-440268.7 587678.29,-440244.21 587653.32,-440203.74 587624.83,-440171.77 587610.35,-440145.78 587586.36,-440114.8 587577.87,-440085.33 587559.87,-440058.34 587552.89,-440022.36 587548.38,-439989.88 587537.89,-439969.9 587538.4,-439942.41 587534.4,-439930.43 587526.4,-439928.92 587510.42,-439899.45 587503.42,-439875.96 587491.42,-439842.98 587497.41,-439813.01 587498.42,-439791.52 587494.42,-439778.53 587505.42,-439773.53 587518.41,-439749.01 587526.21,-439737.35 587533.98,-439714.03 587536.11,-439705.56 587544.23,-439688.95 587550.24,-439684 587545.64,-439684 587533.28,-439676.23 587531.51,-439636.31 587562.6,-439608.75 587579.57,-439576.95 587588.04,-439537.02 587614.19,-439490.03 587631.15,-439477.67 587637.15,-439458.59 587641.75,-439433.85 587641.04,-439419.73 587649.17,-439391.81 587650.94,-439369.55 587650.94,-439357.54 587642.81,-439327.85 587644.22,-439323.97 587655.18,-439309.13 587655.18,-439303.13 587647.05,-439296.06 587644.58,-439286.88 587655.18,-439276.98 587661.88,-439261.43 587661.88,-439244.82 587658.35,-439215.83 587637.87,-439198.34 587633.87,-439189.35 587621.88,-439182.86 587620.88,-439162.87 587632.87,-439131.4 587628.38,-439085.42 587621.38,-439068.94 587635.87,-439038.46 587635.87,-439016.97 587633.38,-438990.99 587635.37,-438971.5 587643.37,-438953.01 587647.36,-438924.39 587654.94,-438885.35 587654.25,-438848.36 587677.54,-438773.01 587694.66,-438669.59 587702.2,-438599.72 587702.2,-438539.44 587686.44,-438488.07 587663.16,-438441.49 587631.65,-438337.38 587563.15,-438243.53 587526.17,-438227.1 587506.98,-438227.1 587483.7,-438239.43 587464.51,-438271.62 587436.43,-438313.41 587413.83,-438327.1 587394.66,-438362.72 587387.12,-438393.55 587387.8,-438461.35 587376.15,-438644.24 587339.85,-438793.56 587319.31,-438831.93 587320.67,-438881.92 587303.56,-438940.15 587301.5,-438969.59 587278.89,-439020.29 587267.94,-439090.15 587250.81,-439131.93 587242.6,-439161.39 587252.87,-439199.06 587250.13,-439240.85 587239.85,-439262.76 587246.7,-439323.72 587241.22,-439389.48 587233.69,-439429.89 587218.62,-439485.37 587226.83,-439568.63 587217.78,-439616.43 587226.41,-439698.09 587227.74,-439734.61 587209.15,-439769.8 587223.76,-439801.67 587214.46,-439864.75 587208.49,-439951.72 587222.43,-440018.78 587233.72,-440047.33 587241.02,-440081.86 587266.25,-440125.01 587265.58,-440149.58 587265.58,-440201.37 587299.44,-440237.89 587309.4,-440264.45 587317.37,-440277.06 587324.01,-440306.27 587361.2,-440334.16 587374.48,-440347.44 587371.16,-440364.04 587370.49,-440433.76 587403.69,-440460.31 587399.04,-440537.33 587410.33,-440605.06 587431.57,-440716.6 587451.49,-440759.76 587460.12,-440794.28 587505.93,-440853.38 587553.74,-440863.33 587567.02,-440884.58 587576.98,-440886.57 587591.59,-440899.85 587605.53,-440979.52 587652.67,-441026.67 587693.17,-441073.14 587707.11,-441106.34 587707.11,-441155.47 587736.33,-441193.31 587766.87,-441231.16 587776.17,-441239.79 587792.76,-441229.84 587810.03,-441241.78 587825.96,-441265.68 587853.84,-441318.13 587972.03,-441323.44 587997.26,-441319.47 588033.11,-441304.2 588082.25,-441283.61 588101.5,-441274.98 588114.12,-441274.98 588159.93,-441279.63 588173.21,-441277.64 588193.12,-441286.26 588223,-441294.23 588231.63,-441302.2 588261.52,-441328.45 588284.32,-441369.71 588314.07,-441441.03 588369.5,-441500.19 588354.44,-441527.88 588391.82,-441546.46 588395.82,-441582.95 588469.22,-441580.56 588498.4,-441554.22 588492.68,-441524.71 588499.01,-441501.81 588526.41,-441480.43 588524.31,-441468.69 588533.22,-441451.96 588553.82,-441376.07 588563.32,-441352.88 588573.86,-441281.19 588599.16,-441251.1 588612.1,-441233.25 588592.27,-441210.87 588557.33,-441188.11 588542.97,-441142.07 588555.65,-441114.05 588578.32,-441100.37 588626.8,-441104.85 588663.54,-441068.42 588709.81,-440994.81 588740.91,-440959.4 588742.39,-440925.46 588756.65,-440893.48 588753.48,-440869.94 588762.08,-440856.7 588759.66,-440856.7 588751.27,-440838.74 588743.05,-440810.94 588746.34,-440784.45 588762.64,-440742.67 588752.45,-440719.24 588757.55,-440645.98 588743.57,-440565.28 588718.92,-440495.64 588725.15,-440463.33 588723.33,-440445.13 588714.68,-440400.98 588728.33,-440400.07 588739.26,-440389.61 588748.36,-440388.25 588756.55,-440362.3 588773.39,-440352.75 588783.4,-440330 588790.22,-440316.34 588790.22,-440284.49 588796.6,-440276.3 588804.33,-440274.93 588819.8,-440284.49 588828,-440274.47 588839.83,-440258.09 588848.02,-440252.17 588860.77,-440234.43 588873.51,-440225.78 588886.25,-440216.67 588889.89,-440202.11 588888.07,-440182.54 588878.06,-440157.06 588876.7,-440142.96 588879.42,-440118.38 588895.35,-440091.98 588900.81,-439990.5 588899.9,-439969.11 588898.54,-439943.63 588885.8,-439904.94 588883.07,-439885.37 588860.31,-439870.81 588828.46,-439858.52 588762.46,-439854.43 588704.67,-439847.15 588702.4,-439812.56 588661.44,-439794.82 588650.06,-439776.62 588642.78,-439772.98 588646.42,-439776.62 588655.98,-439774.33 588664.62,-439749.77 588683.28,-439733.84 588697.39,-439723.83 588704.67,-439700.16 588706.95,-439647.82 588727.43,-439616.43 588731.06,-439586.84 588742.9,-439565.91 588746.99,-439543.61 588746.53,-439497.19 588758.37,-439496.74 588766.11,-439504.47 588783.4,-439518.58 588796.15,-439520.86 588806.15,-439519.95 588827.09,-439528.16 588845.46,-439532.87 588854.5,-439537.77 588857.32,-439562.05 588861.66,-439570.14 588866.74,-439573.35 588874.27,-439578.06 588878.23,-439588.79 588879.92,-439592.93 588883.87,-439593.31 588891.22,-439590.67 588907.96,-439590.67 588925.66,-439603.09 588953.15,-439610.99 588967.08,-439610.99 588974.99,-439603.28 588987.42,-439602.14 588999.46,-439595.38 589010.57,-439595.93 589015.47,-439601.21 589022.05,-439602.33 589026.76,-439601.21 589033.16,-439604.04 589049.16,-439611.56 589060.64,-439612.13 589067.43,-439611.75 589075.33,-439605.26 589081.83,-439601.97 589092.46,-439601.97 589108.28,-439598.19 589113.92,-439592.55 589115.05,-439578.99 589106.77,-439574.85 589096.99,-439568.07 589095.1,-439564.31 589103.76,-439568.07 589114.67,-439569.21 589154.96,-439566.95 589162.5,-439553.77 589172.28,-439550.38 589180.94,-439545.86 589205.42,-439527.78 589229.89,-439481.85 589260.77,-439463.4 589264.53,-439449.85 589275.83,-439436.67 589287.5,-439431.02 589293.9,-439434.41 589304.82,-439432.91 589310.47,-439413.7 589313.86,-439403.54 589321.76,-439400.52 589333.43,-439388.32 589346.4,-439374.75 589352.53,-439370.49 589365.84,-439367.03 589380.22,-439359.05 589390.07,-439343.07 589390.86,-439331.62 589399.65,-439322.83 589406.31,-439329.22 589411.37,-439324.96 589426.28,-439324.96 589435.86,-439334.28 589454.23,-439340.4 589464.35,-439340.93 589477.93,-439324.16 589517.86,-439326.29 589528.52,-439340.67 589542.62,-439346.52 589577.24,-439355.85 589627.29,-439365.96 589644.86,-439366.23 589651.78,-439358.78 589654.98,-439338.27 589667.49,-439316.98 589680.8,-439284.49 589713.29,-439274.11 589735.92,-439262.13 589760.41,-439219.26 589799.55,-439205.42 589825.9,-439187.05 589845.87,-439176.73 589869.28,-439173.9 589889.11,-439165.96 589900.45,-439165.96 589918.02,-439144.99 589939.55,-439136.5 589934.46,-439119.49 589957.13,-439107.02 590002.46,-439097.96 590028.53,-439061.12 590067.07,-439036.75 590077.84,-438989.14 590091.44,-438966.48 590106.73,-438961.38 590128.28,-438977.24 590216.69,-438996.51 590237.09,-439017.48 590243.89,-439055.45 590244.46,-439069.05 590272.79,-439073.59 590305.1,-439054.32 590322.1,-439052.05 590344.2,-439056.58 590360.07,-439073.02 590381.04,-439088.32 590386.14,-439101.35 590396.33,-439110.99 590430.91,-439122.32 590491.55,-439133.09 590497.78,-439140.46 590529.52,-439150.1 590548.22,-439150.1 590581.09,-439142.73 590632.09,-439120.62 590680.26,-439120.62 590697.27,-439114.39 590718.8,-439100.22 590734.1,-439080.96 590730.14,-439066.22 590753.94,-439054.32 590761.31,-439043.54 590781.71,-439050.35 590799.28,-439042.42 590828.18,-439022.01 590853.68,-439002.18 590859.92,-438999.35 590869.56,-438993.67 590889.39,-438978.94 590907.53,-438967.61 590909.22,-438959.11 590917.72,-438955.7 590934.73,-438932.47 590957.4,-438905.83 590974.4,-438876.36 590976.66,-438865.03 590987.44,-438822.12 590983.69,-438793.45 591003.25,-438777.62 591013.84,-438759.11 591028.48,-438736.27 591044.01,-438745.83 591063.11,-438708.06 591079.54,-438715.37 591096.41,-438697.31 591113.42,-438699.1 591143.14,-438696.71 591157.47,-438667.15 591191.8,-438658.93 591215.84,-438642.07 591229.28,-438609.82 591254.66,-438621.32 591266.6,-438625.05 591283.91,-438613.85 591288.4,-438579.4 591305.37,-438566.93 591314.44,-438518.76 591318.4,-438470.59 591322.37,-438454.15 591330.3,-438407.12 591335.4,-438371.98 591343.34,-438339.1 591345.04,-438275.07 591356.37,-438260.33 591369.98,-438235.4 591380.74,-438194.59 591381.87,-438158.89 591379.04,-438102.2 591378.7,-438088.91 591384.08,-438072.19 591384.37,-438058.61 591376.16,-438024.71 591343.76,-438008.74 591362.13,-437966.2 591417.01,-437947.5 591428.92,-437933.33 591450.45,-437923.14 591480.49,-437924.26 591512.79,-437929.94 591526.39,-437924.26 591543.39,-437926.53 591591.56,-437928.38 591598.62,-437945.15 591616.76,-437963.89 591623.42,-437966.43 591627.93,-437975.21 591630.68,-437975.41 591636.56,-437976.97 591640.08,-437988.48 591646.35,-437995.31 591655.57,-437992.97 591658.71,-437994.72 591673.6,-437996.87 591676.54,-438002.14 591677.13,-438005.47 591683.2,-438003.71 591689.29,-438003.71 591696.15,-438007.42 591701.05,-438007.42 591719.66,-438000.97 591730.06,-437981.46 591737.69,-437965.84 591736.91,-437944.76 591733.58,-437936.18 591738.29,-437935.59 591749.66,-437937.35 591755.73,-437920.56 591762.2,-437915.3 591762.39,-437906.31 591774.35,-437897.73 591778.47,-437879.97 591778.08,-437873.92 591774.35,-437867.68 591776.12,-437861.43 591780.03,-437856.41 591780.47,-437834.49 591782.39,-437815.37 591781.41,-437802.88 591785.13,-437784.73 591779.45,-437767.67 591784.06,-437724.33 591778.51,-437713.02 591790.16,-437704.74 591790.99,-437689.91 591757.4,-437661.96 591773.46,-437648.28 591777.63,-437654.82 591794.87,-437630.43 591801.41,-437605.46 591779.41,-437558.47 591799.03,-437586.61 591835.62,-437586.05 591842.27,-437569.22 591859.45,-437550.17 591871.65,-437529.74 591883.02,-437515.39 591896.05,-437485.3 591916,-437454.67 591956.47,-437453.85 591972,-437446.12 591989.75,-437436.46 592004.98,-437435.36 592019.69,-437443.9 592037.7,-437464.05 592073.18,-437476.2 592083.99,-437490.56 592091.75,-437502.15 592093.14,-437526.98 592090.36,-437536.92 592087.31,-437612.88 592142.63,-437632 592160.66,-437642.54 592177.13,-437642.15 592184.58,-437644.49 592191.64,-437652.29 592196.34,-437660.89 592199.09,-437675.33 592216.34,-437692.11 592252.8,-437702.6 592267.21,-437710.6 592269.98,-437716.4 592266.93,-437719.99 592259.72,-437756.7 592227.57,-437779.05 592220.63,-437819.57 592212.05,-437851.87 592221.57,-437896.99 592213.7,-437908.99 592203.76,-437927.62 592211.22,-437942.94 592203.35,-437957.82 592212.99,-437964.04 592217.01,-437976.88 592212.46,-438032.35 592204.59,-438041.87 592207.08,-438068.77 592202.11,-438090.3 592179.76,-438122.59 592166.93,-438172.27 592128.43,-438206.21 592129.67,-438212.42 592125.54,-438219.46 592116.01,-438225.67 592093.24,-438238.08 592091.17,-438243.04 592085.79,-438261.27 592081.24,-438272.86 592071.3,-438290.24 592073.78,-438315.9 592065.1,-438329.97 592040.26,-438353.99 592025.77,-438384.21 592024.53,-438405.73 592010.04,-438411.94 591983.14,-438424.77 591983.55,-438434.7 591969.48,-438452.09 591965.74,-438459.96 591968.24,-438473.62 591967.41,-438489.76 591956.23,-438489.76 591950.01,-438513.36 591932.63,-438531.99 591927.25,-438538.2 591931.8,-438546.48 591928.9,-438565.52 591903.23,-438591.6 591891.24,-438594.9 591897.03,-438637.96 591881.71,-438652.86 591889.58,-438660.31 591886.68,-438662.39 591879.23,-438694.67 591875.92,-438714.13 591867.64,-438721.99 591867.22,-438727.79 591853.98,-438733.59 591853.56,-438738.96 591858.95,-438748.48 591856.88,-438765.46 591869.29,-438772.9 591872.19,-438776.63 591880.06,-438773.32 591888.76,-438782.01 591911.11,-438789.47 591922.29,-438792.36 591956.64,-438786.15 591983.14,-438770.83 591998.44,-438741.03 592019.15,-438718.68 592025.77,-438693.42 592023.7,-438687.63 592031.16,-438687.63 592046.89,-438676.04 592075.85,-438676.04 592144.16,-438681.01 592154.5,-438680.19 592162.79,-438662.8 592173.97,-438660.73 592181,-438646.64 592176.45,-438627.61 592203.76,-438645 592215.77,-438644.59 592242.68,-438630.92 592255.93,-438622.64 592256.76,-438604.01 592296.08,-438582.9 592310.15,-438579.17 592323.4,-438572.14 592337.48,-438573.8 592344.92,-438587.46 592355.27,-438615.61 592420.68,-438615.61 592429.79,-438606.91 592449.24,-438611.06 592464.56,-438619.33 592470.35,-438633.82 592474.49,-438644.59 592469.11,-438658.66 592482.36,-438687.63 592495.19,-438761.73 592552.72,-438764.62 592562.66,-438790.29 592583.36,-438796.92 592579.63,-438803.13 592583.36,-438845.35 592655.39,-438936.83 592690.99,-438961.26 592694.71,-438971.19 592703,-438984.43 592703,-438989.82 592695.54,-438991.47 592675.26,-439010.51 592664.49,-439032.46 592641.73,-439058.53 592633.86,-439077.57 592635.52,-439085.02 592628.07,-439082.95 592614.4,-439099.93 592589.57,-439122.69 592571.78,-439145.88 592561.01,-439160.36 592561.84,-439181.89 592573.43,-439204.24 592566.8,-439215.01 592557.7,-439236.94 592561.01,-439273.79 592535.75,-439277.09 592540.73,-439284.55 592540.31,-439310.21 592524.17,-439324.7 592541.56,-439354.09 592540.31,-439369.82 592524.58,-439388.03 592518.78,-439409.15 592520.44,-439419.08 592522.09,-439427.36 592514.65,-439456.75 592506.77,-439467.1 592511.34,-439479.1 592501.81,-439494.42 592499.74,-439504.35 592478.63,-439515.95 592469.94,-439532.92 592467.45,-439542.02 592470.76,-439555.27 592465.8,-439573.9 592467.04,-439573.9 592466.63,-439587.97 592469.52,-439597.08 592459.59,-439611.15 592458.76,-439647.17 592467.87,-439652.96 592473.25,-439681.53 592482.36,-439688.56 592490.22,-439691.46 592508.03,-439694.36 592513.4,-439703.88 592517.95,-439712.16 592517.95,-439716.71 592512.58,-439716.3 592503.88,-439720.02 592499.74,-439729.13 592501.4,-439756.46 592515.06,-439762.24 592517.13,-439773.42 592511.34,-439784.19 592510.92,-439788.74 592515.06,-439806.13 592513.4,-439817.3 592522.92,-439830.96 592527.89,-439848.76 592521.68,-439855.39 592523.34,-439863.67 592533.27,-439870.29 592533.27,-439877.33 592517.95,-439884.36 592517.54,-439896.36 592523.34,-439902.99 592520.44,-439916.23 592521.68,-439922.86 592527.48,-439927.83 592541.56,-439938.59 592553.14,-439947.28 592557.7,-439955.15 592557.7,-439987.02 592535.75,-440019.73 592524.17,-440031.73 592526.65,-440080.57 592512.16,-440112.03 592477.39,-440117.42 592479.46,-440126.11 592478.22,-440132.31 592471.59,-440131.9 592461.25,-440140.19 592462.9,-440148.47 592454.62,-440149.7 592444.69,-440154.67 592443.86,-440159.64 592450.07,-440170.82 592448.41,-440175.79 592435.17,-440189.44 592434.75,-440196.48 592427.31,-440199.8 592414.47,-440195.66 592410.74,-440218.42 592367.28,-440230.42 592330.02,-440232.49 592301.88,-440228.34 592263.07,-440217.57 592214.23,-440210.13 592186.9,-440211.79 592147.99,-440192.74 592126.46,-440172.87 592128.95,-440149.69 592115.7,-440153.83 592095.83,-440140.59 592074.31,-440079.32 592036.22,-440068.55 592016.35,-440009.77 591965.85,-439954.3 591885.55,-439956.79 591850.78,-439938.57 591792.82,-439930.29 591767.15,-439960.93 591736.52,-439959.27 591705.89,-439972.52 591697.61,-439990.73 591698.44,-439967.55 591638.83,-439956.79 591621.45,-439912.08 591580.87,-439937.75 591551.07,-439953.48 591561.01,-439973.17 591539.68,-439973.19 591495.56,-439963.88 591435.68,-439952.79 591407.66,-439959.07 591378.63,-439970.83 591397.47,-439987.5 591459.42,-440003.4 591508.97,-440007.31 591538.59,-440003.01 591583.46,-440022.45 591626.78,-440053.03 591660.79,-440072.1 591673.05,-440098.02 591670.39,-440127.77 591660.68,-440160.37 591645.47,-440218.73 591594.55,-440274.38 591550.68,-440317.77 591531.55,-440377.54 591499.07,-440514.6 591461.17,-440601.2 591445.55,-440699.23 591433.67,-440836.43 591424.6,-440901.78 591432.38,-441149.92 591465.05,-441295.66 591476.48,-441468.15 591479.56,-441494 591477.66,-441830.24 591452.91,-441864.06 591447.84,-441881.4 591443.1,-441882.96 591442.68,-441900.71 591438.61,-441915.34 591435.27,-442027.36 591408.04,-442108.26 591394.04,-442159.6 591370.7,-442272.39 591340.37,-442354.44 591310.43,-442387.51 591297.59,-442458.3 591279.69,-442536.09 591279.69,-442563.32 591287.47,-442591.33 591282.81,-442652 591283.58,-442739.13 591323.26,-442844.14 591384.71,-442883.81 591434.5,-442916.48 591492.83,-442938.27 591547.29,-442945.27 591590.06,-442944.49 591957.23,-442952.26 591986.01,-443039.39 592125.26,-443055.48 592128.69,-443084.52 592118.44,-443144.3 592124.42,-443178.46 592124.42,-443312.56 592073.17,-443354.41 592067.2,-443427.86 592086.84,-443536.33 592150.04,-443565.37 592187.62,-443627.72 592228.62,-443705.45 592259.37,-443787.45 592263.64,-443799.4 592281.58,-443846.38 592264.49,-443865.17 592238.02,-443986.44 592188.48,-444000.11 592211.53,-444029.15 592227.77,-444053.92 592230.33,-444082.95 592217.51,-444108.58 592287.56,-444139.33 592336.23,-444129.93 592354.18,-444199.12 592403.71,-444255.49 592425.06,-444282.82 592425.06,-444308.44 592434.46,-444359.68 592434.46,-444385.31 592403.71,-444398.98 592402.01,-444450.22 592448.97,-444456.2 592485.7,-444463.89 592536.95,-444439.98 592553.18,-444476.24 592614.85,-444460.71 592633.81,-444450.92 592621.49,-444442.12 592608.66,-444429.88 592604.33,-444411.07 592604.62,-444402.33 592612.02,-444388.3 592625,-444381.66 592640.45,-444385.24 592658.67,-444394.19 592667.33,-444409.28 592676.14,-444429.28 592685.39,-444420.17 592733.32,-444413.15 592746.75,-444398.68 592742.27,-444393.75 592759.29,-444391.29 592765,-444375.06 592801.73,-444375.98 592810.95,-444362.54 592837.07,-444358.07 592843.64,-444353.29 592842,-444351.35 592847.97,-444339.7 592843.79,-444337.32 592854.38,-444348.51 592857.67,-444334.93 592900.97,-444344.63 592906.34,-444357.02 592908.59,-444349.55 592920.83,-444347.47 592932.77,-444352.69 592946.65,-444360.54 592964.01,-444381.89 592987.92,-444422.89 593008.41,-444444.61 593001.22,-444487.8 593011.83,-444519.4 593008.41,-444568.06 593015.72,-444607.4 593003.19,-444637.89 592982.53,-444694.94 592940.24,-444702.57 592953.03,-444743.64 592925.48,-444760.6 592907.28,-444820.9 592863.22,-444835.36 592836.46,-444837.33 592853.42,-444894.38 592831.79,-444891.43 592819.25,-444969.63 592801.04,-444986.1 592792.69,-444994.28 592784.64,-445021.76 592773.75,-445071.44 592745.96,-445094.21 592723.14,-445112.5 592707.85,-445120.7 592707.77,-445155.71 592665.92,-445142.91 592653.96,-445146.31 592628.33,-445157.42 592606.13,-445198.82 592612.68,-445205.95 592599.15,-445207.82 592566.84,-445200.98 592530.12,-445185.61 592481.43,-445187.38 592455.82,-445180.48 592365.28,-445170.23 592292.68,-445144.39 592213.78,-445115.87 592186,-445029.3 592118.86,-444999.79 592112.22,-444991.19 592090.33,-444987.5 592068.94,-444989.96 592010.48,-444960.39 591976.87,-444930.82 591973.22,-444907.16 591933.96,-444919.98 591904.06,-444916.56 591891.25,-444896.92 591886.13,-444866.18 591824.63,-444832.21 591772.27,-444821.86 591716.39,-444823.15 591707.28,-444820.57 591688.44,-444808.27 591678.69,-444810.22 591667.64,-444819.28 591666.34,-444829.63 591653.34,-444830.14 591631.07,-444828.98 591614.35,-444834.81 591608.5,-444841.92 591615.65,-444844.51 591644.24,-444849.04 591659.19,-444860.69 591675.44,-444888.52 591664.39,-444893.69 591652.69,-444886.21 591631.89,-444894.99 591626.7,-444915.05 591642.94,-444917.24 591647.67,-444938.99 591634.49,-444936.4 591608.5,-444945.59 591600.68,-444945.46 591613.05,-444947.21 591646.87,-444952.23 591657.25,-444960.43 591677.71,-444975.66 591696.82,-444998.65 591682.11,-445017.38 591727.05,-445029.24 591756.8,-445047.59 591778.81,-445092.62 591802.62,-445096.14 591817.62,-445123.68 591841.58,-445132.86 591855.72,-445170.19 591872.93,-445219.14 591884.6,-445268.1 591906.72,-445346.76 591925.96,-445363.83 591934.21,-445375.84 591931.04,-445388.49 591922.79,-445427.04 591925.33,-445446.01 591927.24,-445466.23 591923.43,-445494.7 591926.15,-445525.07 591939.32,-445545.78 591953.2,-445556.82 591973.3,-445563.04 592007.28,-445563.04 592039.86,-445559.59 592064.14,-445541.64 592107.81,-445509.88 592218.05,-445514.71 592250.64,-445505.74 592280.46,-445505.05 592303.33,-445518.16 592321.37,-445547.85 592356.03,-445556.82 592384.47,-445554.06 592428.84,-445562.35 592446.86,-445581.68 592463.5,-445640.36 592491.93,-445656.93 592528.68,-445679.02 592550.87,-445704.57 592547.4,-445746.68 592556.41,-445772.92 592554.33,-445786.47 592564.74,-445847.47 592528.68,-445878.54 592527.29,-445894.42 592511.35,-445896.49 592494.7,-445927.55 592476.68,-445948.27 592473.91,-445964.83 592449.63,-446010.41 592444.09,-446025.59 592431.61,-446045.61 592439.24,-446073.91 592444.09,-446094.63 592439.24,-446169.18 592433.68,-446225.78 592419.29,-446281.65 592389,-446429.14 592372.84,-446469.43 592345.86,-446528.04 592340.95,-446566.65 592319.74,-446598.91 592314.25,-446652.87 592286.86,-446677.01 592275.94,-446752.72 592262.47,-446768.59 592246.53,-446781.74 592205.85,-446799.12 592190.11,-446809.27 592167.1,-446898.08 592129.25,-446936.17 592089.01,-447236.65 591980.18,-447264.74 591993.35,-447382.72 591993.35,-447435.29 591994.89,-447493.85 592015.19,-447524.88 592007.55,-447568.86 591993.94,-447594.15 591966.03,-447614.72 591944.05,-447614.7 591930.18,-447622.36 591922.96,-447634.44 591922.04,-447663.04 591888.86,-447742.87 591880.48,-448017.26 591614.75,-448321 591322.24,-448318.98 591319.56,-448312.44 591325.38,-447987.73 591169.46,-447988.6 591145.4,-447703.16 591014.32,-447528.28 590912.93,-447380.65 590808,-446742.8 590264.22,-446726.99 590280.47,-446617.42 590188.53,-446591.05 590221.17,-446513.96 590157.11,-446501.37 590171.98,-446452.87 590126.94,-446385.51 590040.79,-446388.85 590020.28,-446387.89 589913.56,-446437.96 589914.81,-446436.13 589900.43,-446559.23 589900.37,-446674.51 589612.24,-446765.65 589399.06,-446399.51 589247.46,-446406.2 589229.31,-446397.6 589223.56,-446448.53 589101.65,-446763.62 589106.86,-446771.01 588320.99,-446778.65 587508.12,-446773.59 587503.38,-446576.79 587507.04,-446574.46 587481.76,-446538.57 587481.18,-446538.46 587484.83,-446526.33 587484.83,-446514.58 587491.08,-446506.85 587503.01,-446312.58 587627.62,-446275.93 587653.95,-446111.69 587771.93,-445905.45 587926.42,-445887.09 587944.04,-445823.35 588033.65,-445812.09 588043.4,-445792.97 588049.4,-445768.6 588070.4,-445760.73 588084.27,-445756.3 588099.86,-445770.7 588134.33,-445775.79 588181.57,-445764.89 588220.82,-445765.62 588252.81,-445783.06 588305.15,-445777.97 588331.32,-445775.07 588356.77,-445751.08 588359.67,-445740.9 588372.02,-445723.46 588411.28,-445711.83 588494.87,-445691.48 588503.59,-445681.29 588517.4,-445679.12 588537.03,-445686.39 588548.66,-445686.39 588566.84,-445695.11 588591.55,-445695.83 588611.9,-445686.39 588667.88,-445688.56 588736.2,-445706.74 588753.66,-445707.46 588787.82,-445703.1 588824.16,-445714.01 588847.42,-445738.72 588882.31,-445735.09 588933.92,-445682.03 588947,-445654.4 588960.09,-445636.95 588984.09,-445649.31 589000.07,-445649.31 589015.33,-445641.32 589025.52,-445615.88 589029.88,-445615.88 589044.41,-445585.34 589048.04,-445570.08 589063.31,-445565 589088.03,-445569.35 589112.74,-445551.9 589152,-445500.3 589213.78,-445474.13 589197.07,-445436.33 589237.04,-445417.43 589221.78,-445399.99 589234.86,-445398.53 589248.67,-445403.62 589261.76,-445346.2 589332.27,-445296.04 589328.64,-445200.81 589348.26,-445218.26 589406.41,-445191.36 589438.4,-445157.92 589472.56,-445120.13 589491.47,-445051.79 589500.91,-444995.82 589498.01,-444947.85 589487.82,-444924.66 589471.15,-444898.41 589465.3,-444896.97 589439.12,-444887.52 589436.94,-444880.25 589443.48,-444875.88 589474.74,-444878.79 589484.92,-444870.8 589540.16,-444822.09 589536.53,-444822.82 589525.62,-444821.41 589525.32,-444795.92 589519.81,-444788.31 589513.75,-444793.84 589466.75,-444774.11 589464.57,-444766.12 589541.62,-444750.13 589576.51,-444734.86 589573.6,-444707.25 589585.23,-444663.63 589594.69,-444630.19 589615.76,-444604.74 589596.87,-444603.3 589580.87,-444590.94 589571.42,-444601.11 589551.79,-444564.04 589539.44,-444477.54 589552.52,-444481.9 589633.94,-444447.74 589640.48,-444393.21 589625.93,-444380.13 589637.57,-444380.13 589649.2,-444370.68 589650.65,-444364.87 589627.39,-444315.43 589612.85,-444223.85 589586.68,-444171.51 589567.06,-444098.09 589527.08,-444027.58 589487.82,-443997.05 589486.37,-443956.35 589474.02,-443946.17 589458.03,-443899.64 589420.22,-443840.77 589364.26,-443779.71 589289.39,-443725.92 589220.33,-443664.86 589114.19,-443639.34 589054.36,-443618.21 588978.93,-443600.03 588946.22,-443581.14 588935.31,-443541.15 588872.79,-443514.26 588814.65,-443497.54 588777.58,-443496.81 588720.15,-443471.37 588659.82,-443453.92 588638,-443443.75 588617.66,-443438.66 588594.39,-443409.58 588553.69,-443406.68 588540.6,-443410.31 588526.79,-443407.4 588517.35,-443390.68 588502.8,-443377.6 588469.36,-443378.32 588362.51,-443386.32 588323.99,-443413.22 588298.54,-443413.22 588279.64,-443401.59 588256.39,-443418.31 588246.93,-443419.03 588229.49,-443409.58 588214.94,-443397.95 588213.49,-443353.61 588220.04,-443324.53 588169.88,-443302.73 588152.44,-443280.92 588104.46,-443294 588086.28,-443279.46 588056.49,-443268.56 588023.05,-443200.24 587904.56,-443181.33 587884.2,-443163.17 587884.2,-443142.08 587871.12,-443121.73 587840.59,-443079.57 587784.62,-443073.03 587757,-443042.5 587693.75,-443003.24 587663.95,-442974.89 587631.97,-442880.39 587568,-442811.34 587541.1,-442708.85 587492.41,-442664.5 587490.95,-442615.62 587481.45,-442568.85 587462.83,-442498.13 587432.41,-442463.53 587425.57,-442419.81 587428.61,-442376.46 587444.57,-442334.26 587453.69,-442312.21 587450.65,-442301.55 587454.07,-442290.53 587447.23,-442269.6 587430.06,-442138.83 587482.97,-442147.56 587511.87,-442119.81 587541.53,-442105.74 587548.37,-442079.13 587550.27,-442054.79 587562.82,-442002.33 587596.28,-441963.16 587629.74,-441965.45 587642.67,-441960.5 587656.73,-441948.34 587673.46,-441931.23 587686.39,-441913.74 587687.53,-441897.01 587677.27,-441857.47 587700.08,-441860.88 587711.49,-441833.51 587726.69,-441802.71 587755.97,-441750.24 587794.75,-441703.86 587835.05,-441640.74 587878.02,-441601.95 587889.81,-441561.66 587918.7,-441546.44 587940.37,-441513.75 587959.01,-441489.03 587964.33,-441463.17 587963.57,-441440.45 587951.64,-441384.47 587882.2,-441349.49 587830.11,-441302.73 587736.58,-441312.99 587717.95,-441317.18 587679.17,-441314.13 587640.77,-441309.95 587589.81,-441290.56 587510.35,-441282.96 587463.21,-441282.09 587447.5,-441303.7 587422.59,-441311.4 587410.7,-441327.53 587405.87,-441332.37 587395.65,-441331.3 587364.46,-441336.9 587343.38,-441358.33 587307.65,-441368.35 587258.2,-441398.66 587219.18,-441400.78 587184.1,-441402.78 587156.66,-441429.39 587151.43,-441446.09 587101.43,-441453.6 587081.76,-441467.21 587078.56,-441502.41 587073.01,-441595.53 587028.46,-441660.99 587016.71,-441696.29 587032.33,-441748.7 587011.05,-441761.39 586979.86,-441807.56 586933.91,-441878.53 586876.22,-441909.66 586848.97,-441923.17 586827.18,-441948.64 586841.82,-441987.9 586791.28,-442014.89 586799.11,-442046.05 586787.97,-442114.12 586740.02,-442169.85 586706.78,-442248.2 586668.1,-442299.74 586672.81,-442341.33 586685.15,-442371.34 586698.55,-442421.82 586710.41,-442461.62 586673.55,-442490.83 586630.7,-442481.25 586590.84,-442461.69 586548.98,-442449.42 586487.55,-442441.59 586410.95,-442439.31 586334.15,-442443.88 586143.28,-442441.59 586071.04,-442452.44 586003.71,-442478.44 585978.39,-442543.64 585989.04,-442569.35 586007.92,-442589.88 586052.02,-442609.65 586125.78,-442608.13 586171.42,-442569.35 586313.61,-442547.29 586404.66,-442547.4 586462.34,-442560.24 586532.35,-442576.91 586593.65,-442588.74 586611.4,-442612.94 586628.07,-442638.21 586638.29,-442662.41 586637.2,-442708.11 586610.33,-442733.38 586601.72,-442762.96 586601.72,-442839.32 586610.33,-442900.61 586630.22,-443040.41 586691.52,-443047.94 586709.8,-443104.4 586764.11,-443140.97 586770.02,-443182.9 586770.02,-443197.43 586772.17,-443203.34 586781.31,-443224.31 586792.07,-443272.17 586782.38,-443318.41 586777.01,-443366.27 586778.09,-443394.77 586779.17,-443414.12 586790.99,-443429.72 586809.81,-443435.63 586834.01,-443450.68 586907.68,-443442.62 586915.2,-443458.75 586976.5,-443471.65 586993.7,-443493.16 587095.33,-443511.99 587144.8,-443557.69 587221.15,-443599.09 587282.46,-443677.06 587360.42,-443673.3 587374.95,-443694.27 587421.72,-443702.33 587435.17,-443751.8 587467.43,-443812.03 587473.88,-443827.62 587466.89,-443847.51 587447.53,-443860.96 587413.12,-443866.87 587368.5,-443870.63 587348.6,-443931.39 587275.46,-443969.04 587239.98,-443993.23 587230.3,-444031.5 587190.26,-444070.03 587161.55,-444102.01 587147.37,-444158.71 587140.81,-444200.88 587141.92,-444246.67 587149.55,-444271.02 587167.72,-444265.21 587200.43,-444279.01 587211.34,-444291.01 587226.97,-444309.18 587235.32,-444321.9 587266.22,-444336.07 587275.31,-444360.06 587282.57,-444373.51 587296.02,-444395.68 587311.65,-444400.05 587326.55,-444409.5 587342.18,-444438.58 587346.91,-444462.2 587371.26,-444460.02 587391.97,-444463.29 587402.51,-444488.37 587420.32,-444509.44 587455.94,-444551.61 587483.56,-444593.77 587498.82,-444654.46 587497.74,-444687.54 587510.46,-444711.16 587542.44,-444732.6 587574.06,-444746.05 587600.23,-444743.87 587624.22,-444738.41 587638.4,-444738.78 587690,-444744.6 587702.72,-444740.96 587732.89,-444742.78 587757.97,-444737.69 587763.42,-444710.43 587781.96,-444686.81 587787.05,-444663.55 587812.49,-444642.47 587825.57,-444619.94 587847.01,-444594.86 587860.83,-444572.33 587864.09,-444557.05 587877.91,-444544.34 587905.89,-444531.25 587929.88,-444528.34 587990.94,-444533.8 588013.11,-444532.34 588030.56,-444525.22 588044.19,-444530.47 588064.84,-444539.56 588077.93,-444541.01 588091.01,-444539.92 588113.91,-444527.2 588141.53,-444515.93 588167.33,-444499.58 588183.33,-444497.76 588196.41,-444504.67 588207.68,-444526.47 588222.22,-444527.83 588242.48,-444530.8 588265.4,-444518.54 588269.34,-444517.77 588283.07,-444521.02 588304.36,-444526.12 588318.9,-444511.02 588338.99,-444507.38 588355.74,-444506.56 588376.56,-444504.67 588389.33,-444490.63 588395.17,-444491.2 588411.59,-444503.93 588428.79,-444555.61 588458.37,-444601.79 588450.62,-444624.53 588452.65,-444646.33 588459.06,-444663.88 588454.47,-444685.32 588448.86,-444706.09 588463.6,-444714.23 588462.6,-444724.2 588448.72,-444738 588432.66,-444762.36 588411.95,-444779.08 588407.22,-444796.88 588409.03,-444822.33 588416.31,-444831.41 588411.22,-444902.29 588364.69,-444991.04 588334.52,-445020.36 588326.66,-445067.29 588274.15,-445118.49 588239.61,-445124.8 588254.21,-445223.02 588197.6,-445278.16 588172.87,-445405.66 588085.62,-445425.81 588081.91,-445588.61 587986.46,-445655.95 587961.54,-445690.42 587942.97,-445713.11 587926.79,-445742.35 587900.54,-445751.72 587888.92,-445798.22 587858.17,-445803.84 587866.05,-445866.08 587822.17,-445884.08 587799.31,-445939.57 587758.81,-446002.95 587728.06,-446054.42 587696.14,-446094.65 587669.06,-446124.05 587635.8,-446157.32 587617.23,-446182.43 587600.78,-446206.83 587577.77,-446238.13 587550.75,-446239.65 587545.07,-446295.89 587501.36,-446299.15 587507.17,-446505.3 587386.28,-446511.65 587375.85,-446558.07 587368.12,-446604.49 587364.25,-446637.75 587367.34,-446660.19 587357.28,-446691.13 587341.81,-446731.36 587336.4,-446737.55 587328.66,-446760.76 587320.92,-446772.27 587385.91,-446790.69 587383.46,-446789.89 587380.26,-446813.73 587378.91,-446813.15 587375.27,-446828.61 587372.69,-446873.93 587365.79,-446945.68 587361.59,-446951.74 587366.05,-446954.95 587374.09,-446965.13 587373.56,-446965.43 587368.7,-447012.29 587362.57,-447067.24 587353.58,-447075.53 587355.61,-447079.89 587359.6,-447084.65 587379.4,-447059.78 587385.19,-447061.73 587399.32,-447148.8 587382.16,-447145.55 587367.36,-447121.58 587371.73,-447117.6 587346.76,-447121.33 587340.82,-447197.4 587326.17,-447213.33 587318.39,-447228.65 587320.46,-447239.79 587317.55,-447243.44 587328.83,-447241.13 587329.87,-447245.69 587354.8,-447251.04 587354.26,-447250.25 587349.94,-447403.15 587326.6,-447399.14 587308.22,-447401.64 587308.44,-447421.94 587297.96,-447440.09 587282.99,-447448.47 587291.27,-447458.14 587293.2,-447461.47 587288.4,-447458.28 587284.64,-447448.54 587276.13,-447447.13 587268.76,-447453.09 587258.86,-447457.87 587259.58,-447462.24 587249.76,-447484.52 587259.92,-447498.64 587232.6,-447494.42 587231.32,-447517.36 587181.73,-447525.22 587183.29,-447532.55 587179.11,-447531.5 587148.2,-447523.65 587117.3,-447647.85 586981.03,-447779.28 586836.82,-447804.16 586845.96,-447839.2 586849,-447863.06 586843.42,-447902.16 586818.03,-447929.58 586801.28,-447924.72 586771.94,-447936.68 586745.94,-447955.47 586732.74,-447983.39 586723.59,-448002.18 586709.39,-448026.55 586700.74,-448064.63 586696.69,-448108.29 586694.15,-448140.66 586690.73,-448147.54 586669.36,-448156.45 586654.18,-448176.87 586646.85,-448261.2 586636.36,-448269.22 586620.23,-448278.63 586616.46,-448296.83 586613.95,-448362.73 586618.97,-448433.03 586610.82,-448495.16 586610.82,-448538.46 586605.16,-448557.29 586594.5,-448636.37 586577.55,-448653.94 586569.39,-448665.87 586551.82,-448678.42 586518.56,-448693.48 586485.29,-448749.33 586412.49,-448802.05 586362.91,-448805.82 586339.69,-448835.95 586317.1,-448895.56 586289.48,-448962.72 586271.9,-449011.05 586262.49,-449047.45 586251.2,-449093.89 586253.71,-449226.32 586268.77,-449272.76 586271.9,-449309.78 586278.81,-449347.36 586297.68,-449390.36 586311.77,-449393.6 586339.79,-449418.32 586354.45,-449479.88 586376.17,-449510.9 586389.36,-449543.51 586408.02,-449610.41 586459.99,-449641.65 586484.53,-449747.65 586562.2,-449848.83 586615.77,-449883.62 586635,-449928.94 586650.56,-449955.04 586651.02,-449976.1 586644.61,-449992.13 586630.42,-450001.73 586611.65,-450005.4 586589.21,-450007.95 586535.41,-450021.52 586494.64,-450069.49 586447.29,-450112.07 586412.95,-450156.48 586389.61,-450194.48 586378.62,-450235.53 586373.99,-450324.45 586384.18,-450380.31 586399.74,-450485.61 586445.53,-450550.16 586472.53,-450597.2 586484.97,-450660.49 586512.82,-450685.21 586534.8,-450709.48 586567.76,-450727.79 586604.85,-450737.41 586632.78,-450739.69 586661.16,-450732.3 586690.55,-450708.68 586749.51,-450697.02 586800.65,-450698.32 586862.81,-450704.79 586901.01,-450716.45 586932.73,-450735.43 586972.14,-450770.58 587000.3,-450791.6 587006.81,-450824.07 587004.45,-450855.74 587002.15,-450907.2 587015.18,-450921.72 587024.74,-451002.46 587069.99,-451052.96 587037.27,-451113.39 587015.75,-451163.3 587004.76,-451222.12 587000.2,-451307.95 586999.97,-451416.01 587007.97,-451456.3 587018.04,-451481.94 587018.5,-451528.64 587007.97,-451571.22 586992.4,-451612.65 586964.06,-451669.91 586946.01,-451676.6 586931.27,-451708.58 586912.89,-451737.19 586912.89,-451851.74 586883.82,-451908.96 586883.71,-451947.84 586892.34,-451981.84 586903.21,-452013.02 586922.1,-452042.78 586949.49,-452081.97 586991.52,-452126.24 587059.95,-452142.21 587083.91,-452170.29 587114.8,-452200.53 587141.25,-452226.98 587153.53,-452249.64 587153.53,-452263.81 587145.5,-452281.18 587124.04,-452297.26 587109.87,-452313.42 587058.84,-452336.09 587025.79,-452362.54 587005.94,-452396.07 586996.97,-452435.37 587004.12,-452459.16 587011.06,-452506.09 587036.64,-452536.17 587076.07,-452564.25 587136.24,-452573.39 587162.65,-452581.03 587234.26,-452593.75 587283.76,-452590.25 587349.88,-452561.76 587432.02,-452549.07 587527.53,-452549.07 587570.94,-452557.75 587603.67,-452574.45 587633.73,-452591.82 587657.11,-452604.51 587673.81,-452628.55 587687.84,-452672.63 587641.08,-452797.4 587516.23,-452914.41 587448.13,-452922.57 587446.02,-452945.46 587439.98,-452983.59 587438.77,-453021.32 587441.18,-453061.46 587455.69,-453109.64 587487.95,-453140.14 587523.01,-453169.65 587544.4,-453195.55 587556.07,-453221.63 587559.3,-453257.76 587554.86,-453287.46 587555.27,-453316.77 587566.96,-453360.12 587594.37,-453384.61 587624.2,-453401 587633.28,-453419.44 587654.37,-453438.46 587685.44,-453467.41 587718.22,-453487.28 587736.75,-453503.59 587744.35,-453526.74 587745.3,-453555.12 587739.88,-453581.8 587723.64,-453623.25 587668.33,-453658.75 587607.94,-453717.26 587518.62,-453737.64 587475.35,-453765.36 587410.43,-453786.06 587348.36,-453827.63 587221.74,-453856.13 587135.32,-453843.21 587094.73,-453776.37 586999.34,-453730.11 586964.94,-453683.3 586934.36,-453626.93 586837.87,-453645.09 586763.34,-453689.04 586728.95,-453721.52 586696.46,-453769.3 586689.77,-453797.95 586670.66,-453831.4 586649.64,-453868.66 586645.82,-453898.28 586656.33,-453918.34 586668.75,-453956.97 586711.97,-453963.25 586852.2,-453987.14 586914.22,-454019.45 586938.27,-454041.81 586962.04,-454091.83 586985.21,-454130.54 587034.66,-454157.51 587086.49,-454163.38 587123,-454151.65 587153.62,-454142.55 587221.18,-454131.71 587327.92,-454099.92 587423.07,-454052.1 587501.91,-454035.54 587555.22,-454040.24 587589.37,-454056.66 587618.82,-454090.67 587631.78,-454166.76 587620.39,-454281.42 587592.68,-454352.12 587564.97,-454408.49 587573.58,-454501.18 587566.88,-454569.97 587563.06,-454607.23 587550.64,-454644.49 587525.8,-454670.3 587479.94,-454701.04 587436.38,-454715.4 587421.95,-454730.49 587398.72,-454750.56 587383.43,-454765.84 587376.75,-454792.59 587367.19,-454826.03 587364.33,-454880.5 587386.3,-454942.6 587411.14,-454969.36 587431.21,-455018.39 587457.1,-455039.38 587488.07,-455062.21 587476.25,-455104.07 587444.58,-455155.67 587440.76,-455197.7 587457.96,-455239.75 587444.58,-455262.68 587431.21,-455291.35 587410.18,-455331.48 587386.3,-455406.01 587354.77,-455580.86 587379.62,-455618.11 587401.59,-455658.27 587420.65,-455681.18 587424.53,-455703.04 587415.78,-455715.57 587392.99,-455751.88 587382.48,-455784.36 587364.33,-455820.67 587360.5,-455855.29 587375.4,-455878.28 587400.31,-455901.89 587395.85,-455930.55 587400.64,-455962.08 587412.09,-455983.1 587399.67,-456026.1 587375.8,-456044.24 587366.24,-456068.13 587363.38,-456087.25 587363.38,-456117.82 587357.64,-456145.52 587356.68,-456175.15 587352.86,-456216.23 587345.22,-456267.83 587328.02,-456311.78 587333.75,-456351.91 587353.82,-456459.21 587314.37,-456579 587292.03,-456830.51 587272.41,-456962.16 587201.84,-457105.32 587201.5,-457276.97 587172.44,-457477.35 587172.1,-457534.68 587200.72,-457735.05 587229.23,-457820.99 587257.84,-458021.37 587257.51,-458078.59 587228.67,-458135.8 587199.71,-458307.57 587170.53,-458364.68 587141.69,-458450.5 587112.74,-458507.72 587083.78,-458593.55 587054.83,-458736.71 587025.65,-458750.96 587011.34,-458765.2 586996.81,-458908.25 586967.75,-458965.47 586938.79,-459022.69 586909.95,-459037.05 586895.53,-459051.3 586881,-459065.66 586866.69,-459094.15 586809,-459108.4 586794.47,-459178.99 586813.06,-459194.73 586823.33,-459213.94 586827.94,-459237.31 586837.51,-459251.67 586851.82,-459366.11 586851.71,-459595.09 586851.26,-459609.45 586865.68,-459623.81 586879.99,-459795.58 586908.5,-459881.52 586908.38,-459967.34 586908.16,-460081.89 586936.78,-460139.22 586965.51,-460153.58 586979.93,-460153.92 587124.03,-460125.31 587181.71,-460096.81 587239.4,-460068.2 587268.24,-460068.31 587325.93,-460097.14 587412.34,-460125.86 587469.91,-460154.69 587585.17,-460183.42 587642.74,-460183.53 587700.32,-460154.92 587729.16,-460126.53 587844.53,-460098.59 588190.42,-460084.45 588363.36,-460141.78 588377.56,-460156.14 588391.98,-460184.86 588449.55,-460184.97 588478.4,-460170.61 588507.24,-460142 588507.35,-460113.4 588507.35,-460199.67 588766.6,-460199.89 588853.02,-460171.28 588853.02,-460185.75 588910.7,-460214.47 588968.28,-460228.94 589083.54,-460286.16 589083.43,-460272.25 589285.1,-460258.11 589371.63,-460200.89 589386.06,-460172.28 589415.01,-460115.07 589429.54,-460129.54 589487.12,-460158.26 589544.69,-460172.51 589559,-460287.05 589573.31,-460287.17 589630.89,-460373.1 589645.08,-460430.32 589673.82,-460459.04 589673.82,-460487.65 589673.7,-460573.48 589673.59,-460659.42 589673.48,-460673.78 589687.9,-460688.14 589702.21,-460702.5 589716.63,-460716.75 589730.94,-460731.11 589745.37,-460760.16 589975.89,-460774.52 589990.2,-460788.88 590004.62,-460803.13 590018.93,-460817.6 590033.46,-460831.85 590047.77,-460846.21 590062.2,-460860.57 590076.51,-460889.18 590076.51,-461032.23 590047.33,-461060.84 590047.33,-461118.05 590047.21,-461203.99 590018.26,-461218.24 590003.84,-461232.49 589989.42,-461261.1 589989.3,-461289.82 589989.3,-461304.07 589974.88,-461318.32 589960.35,-461332.68 589946.04,-461346.93 589931.51,-461404.14 589902.55,-461461.36 589888.13,-461461.14 589801.71,-461547.08 589787.07,-461604.3 589758.11,-461661.4 589729.27,-461718.62 589700.31,-461890.39 589671.13,-461904.64 589656.71,-461918.89 589642.29,-462033.43 589613.22,-462147.87 589584.27,-462262.31 589569.62,-462276.56 589511.94,-462305.05 589425.52,-462319.19 589367.83,-462261.97 589367.94,-462247.61 589339.1,-462233.14 589281.53,-462175.92 589281.64,-462175.81 589252.8,-462290.36 589238.15,-462433.4 589209.08,-462490.62 589180.13,-462504.98 589165.71,-462504.87 589108.13,-462475.59 588791.2,-462446.76 588675.94,-462446.65 588589.52,-462475.15 588531.83,-462474.93 588387.73,-462446.21 588330.16,-462417.49 588301.32,-462403.01 588243.74,-462460.23 588229.21,-462517.45 588229.1,-462574.78 588257.83,-462660.72 588286.45,-462775.27 588315.07,-462947.03 588343.57,-463004.36 588372.3,-463118.91 588372.08,-463133.27 588357.66,-463147.41 588343.13,-463290.56 588328.59,-463305.04 588386.17,-463319.29 588400.48,-463376.61 588429.21,-463391.09 588443.63,-463419.81 588501.2,-463434.06 588530.05,-463291.01 588544.69,-463262.4 588573.53,-463205.18 588602.49,-463147.96 588631.33,-463119.36 588631.44,-463062.03 588602.71,-463004.81 588573.98,-462918.87 588574.09,-462890.26 588574.2,-462832.93 588545.47,-462804.32 588531.16,-462790.18 588588.85,-462775.93 588675.38,-462690.11 588675.49,-462675.86 588733.17,-462675.97 588790.75,-462704.8 588877.17,-462733.52 588934.74,-462747.77 588949.05,-462762.24 588963.58,-462790.96 589021.16,-462805.21 589035.47,-462819.57 589049.89,-462833.93 589064.2,-462891.26 589092.93,-462948.48 589121.66,-463063.03 589150.28,-463148.97 589150.06,-463206.18 589121.1,-463349.23 589092.03,-463463.67 589063.08,-463635.43 589048.32,-463635.43 589077.17,-463578.21 589091.59,-463549.72 589120.54,-463521.11 589149.39,-463463.89 589163.92,-463449.64 589192.76,-463435.39 589221.6,-463521.22 589221.49,-463521.33 589250.34,-463492.72 589264.76,-463435.5 589279.29,-463421.25 589308.13,-463421.37 589365.71,-463450.09 589423.28,-463464.45 589452.13,-463035.09 589467.33,-462977.87 589481.86,-462963.73 589597.12,-462935.23 589625.97,-462935.23 589654.81,-462949.59 589669.12,-462963.95 589683.54,-462992.67 589741.23,-463021.51 589856.38,-463035.87 589913.95,-463121.8 589928.26,-463179.02 589942.57,-463178.91 589884.89,-463236.13 589870.35,-463293.35 589841.4,-463307.71 589827.09,-463321.96 589812.55,-463379.18 589783.6,-463465 589769.07,-463479.25 589711.49,-463493.5 589696.96,-463579.33 589682.42,-463593.58 589624.74,-463607.83 589610.32,-463636.43 589610.2,-463665.16 589624.63,-463679.4 589566.94,-463693.65 589552.52,-463779.48 589523.56,-463793.73 589509.14,-463807.98 589494.61,-463836.7 589494.61,-463851.06 589509.03,-463879.78 589566.6,-463894.14 589624.18,-464037.3 589638.27,-464051.66 589652.69,-464066.02 589710.37,-464094.63 589695.84,-464180.45 589666.89,-464266.39 589666.66,-464323.61 589681.08,-464338.08 589738.66,-464352.44 589752.97,-464409.66 589781.7,-464495.6 589810.32,-464552.93 589810.21,-464581.54 589795.79,-464581.65 589853.47,-464610.26 589853.36,-464610.15 589795.79,-464781.91 589809.76,-464953.68 589809.42,-464982.29 589809.42,-465039.51 589809.31,-465239.88 589808.87,-465325.82 589808.75,-465554.8 589808.31,-465612.13 589822.62,-465626.6 589880.3,-465640.85 589894.61,-465655.21 589909.03,-465669.57 589923.34,-465784.01 589923.12,-465798.37 589908.81,-465812.62 589894.28,-465826.98 589879.86,-465841.23 589865.43,-465898.45 589836.48,-466070.1 589836.14,-466156.04 589864.76,-466327.92 589893.27,-466385.14 589893.16,-466399.5 589878.74,-466413.74 589864.32,-466499.57 589864.09,-466556.9 589878.51,-466557.01 589964.93,-466614.34 589979.24,-466628.7 589993.66,-466642.95 590007.97,-466657.42 590022.4,-466671.67 590036.71,-466814.83 590065.21,-466900.77 590093.95,-466958.1 590108.26,-466943.85 590137.1,-466915.35 590165.94,-466900.99 590194.79,-466958.32 590209.1,-466972.68 590223.52,-466987.04 590281.09,-467015.65 590266.56,-467072.87 590237.72,-467087.23 590223.29,-467115.61 590136.76,-467129.86 590122.23,-467244.3 590107.7,-467258.55 589992.43,-467272.69 589977.9,-467330.02 589977.79,-467387.23 589977.68,-467473.06 589977.57,-467559 589977.34,-467616.22 589948.39,-467673.44 589919.54,-467816.48 589904.9,-467830.95 589962.47,-467845.42 590077.73,-467902.75 590091.93,-467917.11 590106.35,-467945.83 590163.93,-467960.19 590221.62,-468074.74 590235.7,-468103.46 590250.12,-468117.71 590192.44,-468131.85 590134.75,-468189.07 590120.22,-468246.29 590091.26,-468303.5 590062.31,-468360.61 590033.46,-468417.83 590004.51,-468475.05 590004.4,-468503.77 590018.82,-468518.02 589961.13,-468546.51 589874.6,-468560.65 589860.18,-468575.01 589845.76,-468589.26 589831.22,-468603.62 589816.91,-468617.87 589802.38,-468632.23 589787.96,-468632.12 589759.23,-468603.4 589730.38,-468574.79 589701.65,-468574.68 589643.97,-468603.18 589586.28,-468603.06 589528.71,-468602.84 589413.44,-468631.34 589355.76,-468645.59 589341.23,-468659.95 589326.92,-468688.34 589240.39,-468702.58 589225.85,-468716.94 589211.43,-468716.83 589153.86,-468716.61 589067.44,-468745.22 589009.64,-468759.36 588995.22,-468773.72 588980.8,-468802.22 588894.38,-468816.46 588879.85,-468830.71 588865.43,-468844.96 588851.01,-468930.9 588836.47,-468930.79 588778.79,-468988.01 588764.25,-469002.26 588749.83,-469016.51 588735.41,-469030.87 588720.99,-469045.11 588706.46,-469130.94 588677.5,-469216.77 588677.39,-469274.1 588677.28,-469331.21 588648.32,-469345.57 588633.9,-469359.81 588619.37,-469374.18 588605.06,-469388.42 588590.53,-469402.67 588576.1,-469416.81 588460.84,-469674.4 588445.86,-469688.65 588431.56,-469702.9 588417.02,-469717.26 588402.6,-469745.76 588344.92,-469774.26 588287.23,-469817.69 588263.16,-469846.3 588205.48,-469860.55 588191.05,-469874.8 588176.63,-469903.3 588118.95,-470061.71 588030.65,-470176.38 587946.23,-470375.29 587930.69,-470575.67 587959.08,-470604.28 587958.97,-470690.11 587930.02,-470747.32 587901.06,-470775.93 587901.06,-470833.15 587900.95,-470890.48 587900.84,-470919.09 587900.73,-471004.92 587871.77,-471119.35 587842.71,-471176.57 587842.6,-471228.51 587833.57,-471319.62 587813.53,-471366.27 587807.48,-471408.53 587803.4,-471545.96 587800.09,-471584.48 587800.98,-471663.04 587797.23,-471709.94 587780.38,-471747.99 587792.71,-471804.03 587792.93,-471878.83 587797.89,-471901.83 587797.23,-471977.96 587783.35,-472035.18 587754.39,-472149.61 587754.17,-472292.77 587753.94,-472349.99 587753.83,-472493.15 587753.5,-472550.37 587753.38,-472607.69 587753.27,-472722.13 587724.21,-472750.74 587724.21,-472922.51 587752.6,-473037.05 587752.38,-473122.88 587752.27,-473151.49 587752.16,-473409.08 587722.87,-473494.91 587693.91,-473523.52 587679.49,-473523.63 587737.06,-473552.24 587722.53,-473609.46 587722.42,-473695.4 587736.73,-473709.87 587794.3,-473724.12 587808.61,-473738.59 587823.14,-473752.95 587880.72,-473810.17 587894.91,-473838.78 587894.91,-473867.5 587894.8,-473881.86 587909.22,-473896.11 587923.53,-473924.72 587923.53,-474096.48 587908.78,-474096.59 587966.46,-474153.81 587980.66,-474211.14 588009.39,-474268.47 588038.12,-474354.3 588037.9,-474368.66 588023.48,-474397.16 587965.79,-474396.47 587917.75,-474410.83 587903.33,-474425.07 587888.91,-474482.29 587859.96,-474496.54 587845.54,-474510.79 587831.11,-474568.01 587802.16,-474582.37 587787.74,-474596.62 587773.21,-474610.87 587758.9,-474639.36 587672.37,-474667.75 587557,-474682 587542.58,-474696.36 587528.16,-474710.61 587513.62,-474724.86 587499.31,-474739.11 587484.78,-474753.47 587470.36,-474767.72 587455.94,-474781.96 587441.52,-474796.21 587426.99,-474810.57 587412.68,-474824.82 587398.14,-474882.04 587369.3,-474896.29 587354.88,-474924.9 587297.19,-474939.04 587282.66,-474953.4 587268.24,-474981.78 587152.98,-474996.03 587138.45,-475010.39 587124.14,-475038.89 587066.35,-475053.14 587051.92,-475067.5 587037.5,-475081.64 587023.08,-475096 587008.66,-475110.25 586994.13,-475124.61 586979.82,-475152.88 586835.61,-475181.38 586777.92,-475209.88 586691.4,-475224.13 586676.98,-475238.49 586662.56,-475252.62 586648.14,-475309.84 586619.18,-475324.2 586604.76,-475338.45 586590.23,-475352.81 586575.92,-475366.95 586561.39,-475381.31 586546.96,-475395.56 586532.54,-475409.92 586518.12,-475424.17 586503.7,-475438.42 586489.28,-475452.66 586474.75,-475467.02 586460.44,-475481.27 586445.91,-475495.63 586431.49,-475524.13 586373.8,-475538.38 586359.38,-475552.63 586344.96,-475566.88 586330.43,-475581.24 586316.12,-475595.49 586301.58,-475652.71 586272.63,-475666.95 586258.32,-475681.2 586243.79,-475695.56 586229.37,-475709.81 586214.95,-475724.06 586200.53,-475738.31 586185.99,-475752.67 586171.68,-475766.92 586157.15,-475824.14 586128.2,-475881.24 586099.24,-475895.6 586084.94,-475909.85 586070.4,-475924.21 586056.09,-475938.46 586041.56,-475952.71 586027.14,-475966.96 586012.72,-476052.79 585983.65,-476110.01 585954.81,-476167.22 585925.86,-476195.83 585925.75,-476281.66 585925.64,-476396.1 585896.57,-476453.32 585896.46,-476567.86 585924.96,-476653.8 585953.69,-476668.27 585968.12,-476682.52 585982.42,-476696.88 585996.85,-476725.71 586054.42,-476739.96 586068.73,-476768.57 586068.61,-476854.4 586039.66,-476911.62 586010.71,-476925.87 585996.29,-476940.12 585981.87,-476954.48 585967.44,-476968.72 585953.02,-476983.08 585938.6,-476997.22 585924.07,-477054.44 585895.23,-477068.8 585880.81,-477083.05 585866.28,-477097.3 585851.85,-477111.55 585837.43,-477225.98 585808.37,-477254.59 585808.37,-477340.53 585836.99,-477426.47 585865.6,-477512.41 585894.22,-477541.02 585894.11,-477712.78 585893.78,-477798.72 585893.66,-477855.94 585893.55,-477913.27 585922.17,-478056.43 585950.68,-478113.76 585979.41,-478142.37 585979.41,-478285.41 585979.07,-478342.74 585993.38,-478485.9 586021.89,-478543.12 586021.77,-478571.73 586021.77,-478571.84 586050.5,-478600.45 586036.08,-478686.27 586021.55,-478686.38 586079.12,-478772.32 586093.32,-478829.65 586121.94,-478858.26 586121.94,-478915.37 586092.98,-479001.31 586092.87,-479087.13 586092.65,-479230.18 586063.58,-479316.01 586034.52,-479373.23 586005.57,-479430.33 585976.72,-479459.05 585976.61,-479516.27 585976.5,-479573.49 585947.55,-479630.6 585918.59,-479659.32 585918.59,-479802.36 585918.26,-479859.58 585918.15,-479888.3 585932.57,-479888.19 585874.88,-479916.8 585889.19,-479931.16 585903.61,-479945.52 585917.92,-480260.44 585946.09,-480317.66 585945.98,-480432.1 585916.92,-480460.71 585916.8,-480632.47 585945.31,-480775.74 585973.82,-480832.96 586002.55,-481033.44 586016.52,-481033.56 586074.2,-481062.17 586059.67,-481147.99 586059.45,-481205.32 586088.18,-481219.68 586102.6,-481233.93 586116.91,-481319.87 586116.68,-481405.7 586116.57,-481420.06 586130.99,-481448.89 586188.57,-481463.14 586202.87,-481477.5 586217.3,-481491.86 586274.87,-481549.19 586289.18,-481563.55 586303.6,-481578.02 586361.17,-481635.24 586375.37,-481692.57 586404.1,-481706.93 586418.52,-481721.29 586432.83,-481735.65 586447.25,-481749.9 586461.56,-481764.37 586475.98,-481778.62 586490.4,-481864.56 586519.02,-481893.17 586518.91,-481950.38 586518.79,-481964.85 586533.21,-481979.1 586547.52,-482122.26 586561.72,-482122.04 586475.31,-482179.26 586475.08,-482193.51 586417.51,-482207.75 586402.98,-482222.11 586388.56,-482236.25 586302.14,-482293.36 586287.5,-482307.72 586273.19,-482321.97 586258.66,-482350.58 586258.66,-482379.19 586258.55,-482407.8 586258.43,-482465.12 586258.32,-482479.37 586244.01,-482493.62 586229.48,-482507.98 586215.06,-482522.12 586157.49,-482550.73 586171.68,-482565.2 586186.11,-482579.45 586200.53,-482608.06 586200.41,-482693.89 586171.46,-482708.25 586157.04,-482722.5 586142.51,-482779.71 586142.4,-482865.54 586142.28,-482879.9 586127.86,-482894.15 586113.33,-482908.4 586099.02,-482922.65 586084.49,-483065.69 586055.42,-483151.52 586026.36,-483180.13 586026.25,-483208.85 586026.25,-483223.1 586011.83,-483237.35 585997.4,-483323.18 585968.34,-483380.39 585953.92,-483380.5 586011.49,-483580.88 585996.62,-483752.53 585996.29,-483767.01 586010.71,-483781.25 586025.02,-483953.02 586039.1,-483953.13 586096.67,-484067.68 586110.87,-484124.9 586125.18,-484139.48 586182.75,-484153.73 586197.06,-484211.06 586225.79,-484225.42 586240.21,-484239.67 586254.52,-484325.61 586268.83,-484340.19 586355.24,-484369.13 586499.23,-484383.38 586513.54,-484397.74 586527.96,-484412.1 586542.27,-484498.04 586570.89,-484526.65 586570.89,-484612.48 586541.82,-484698.3 586541.71,-484726.91 586541.6,-484812.74 586512.64,-484869.96 586483.69,-484898.57 586483.58,-484955.79 586483.47,-484970.15 586469.05,-484984.4 586454.63,-484998.64 586440.2,-485012.89 586425.78,-485027.25 586411.36,-485041.5 586396.83,-485055.86 586382.41,-485070 586367.99,-485155.83 586339.03,-485241.66 586309.97,-485256.02 586295.55,-485270.26 586281.13,-485413.31 586251.95,-485499.14 586251.84,-485584.96 586251.61,-485699.51 586251.39,-485756.73 586251.17,-485899.89 586250.94,-485914.25 586265.36,-485928.5 586279.67,-486014.44 586308.29,-486071.76 586336.91,-486186.31 586365.53,-486272.25 586394.15,-486329.47 586394.04,-486386.69 586365.08,-486401.05 586350.66,-486429.55 586292.98,-486443.68 586235.29,-486500.9 586220.76,-486515.26 586206.34,-486543.65 586148.66,-486557.9 586134.24,-486572.26 586119.81,-486600.64 586033.29,-486614.89 586018.76,-486729.33 585989.69,-486786.55 585960.85,-486800.91 585946.43,-486815.16 585931.9,-486872.37 585931.78,-487072.75 585960.18,-487087.22 585974.6,-487101.47 585988.91,-487273.24 586002.99,-487273.35 586060.57,-487301.96 586046.14,-487359.17 586017.19,-487416.28 585988.24,-487430.64 585973.82,-487444.89 585959.4,-487459.14 585944.98,-487473.39 585930.44,-487487.75 585916.02,-487502 585901.6,-487587.82 585872.54,-487602.07 585858.23,-487616.32 585843.69,-487702.26 585843.47,-487845.31 585843.13,-487873.92 585843.13,-487959.85 585842.91,-488045.68 585842.69,-488103.01 585871.42,-488160.34 585900.15,-488217.56 585928.77,-488232.03 585943.19,-488246.39 586000.87,-488332.33 586014.96,-488346.69 586029.38,-488360.94 586043.69,-488375.41 586058.22,-488389.66 586072.53,-488404.02 586086.95,-488418.38 586101.26,-488432.74 586115.68,-488446.99 586129.99,-488461.46 586144.41,-488475.71 586158.72,-488590.26 586187.34,-488733.41 586187,-488962.4 586186.44,-489019.62 586200.75,-489034.09 586258.43,-489062.92 586316.01,-489077.17 586330.31,-489105.78 586330.2,-489191.72 586329.98,-489220.33 586329.98,-489277.43 586301.03,-489291.79 586286.6,-489320.29 586200.08,-489320.07 586113.67,-489319.84 586027.25,-489319.62 585940.84,-489305.15 585883.16,-489362.37 585883.04,-489376.62 585825.36,-489390.64 585681.38,-489361.92 585666.95,-489304.71 585652.65,-489318.95 585623.8,-489332.98 585537.39,-489390.31 585537.28,-489404.45 585450.76,-489404.11 585306.66,-489389.64 585249.09,-489446.86 585234.56,-489461.22 585220.14,-489460.89 585104.88,-489446.42 585047.31,-489503.63 585032.67,-489517.99 585018.36,-489532.24 585003.83,-489546.49 584989.4,-489574.99 584931.72,-489589.13 584845.31,-489646.34 584830.67,-489674.95 584830.67,-489703.56 584844.97,-489717.81 584787.4,-489732.06 584772.87,-489789.17 584743.92,-489803.53 584729.5,-489817.78 584715.08,-489832.14 584700.66,-489846.39 584686.12,-489960.71 584657.06,-489975.07 584642.75,-489989.32 584628.22,-490046.54 584599.27,-490060.79 584584.84,-490075.04 584570.42,-490160.86 584541.36,-490175.22 584527.05,-490189.47 584512.52,-490246.58 584483.57,-490260.94 584469.14,-490260.83 584411.57,-490260.72 584382.73,-490289.21 584325.05,-490289.21 584296.21,-490260.49 584267.48,-490231.77 584238.75,-490203.05 584181.18,-490202.94 584152.34,-490217.19 584137.92,-490360.35 584137.58,-490388.96 584137.47,-490503.39 584122.83,-490503.5 584180.51,-490560.83 584194.71,-490646.66 584194.6,-490703.88 584180.06,-490703.99 584237.75,-490789.93 584251.83,-490875.87 584280.45,-490890.23 584294.87,-490904.48 584309.18,-491019.03 584337.79,-491047.63 584337.68,-491076.24 584337.57,-491362.56 584337.01,-491376.81 584322.59,-491391.06 584308.06,-491405.42 584293.75,-491419.66 584279.22,-491433.91 584264.8,-491448.16 584250.38,-491505.38 584221.42,-491562.6 584206.89,-491562.49 584149.32,-491591.1 584163.63,-491734.25 584192.02,-491748.72 584206.56,-491777.56 584321.7,-491806.28 584379.27,-491820.64 584393.58,-491835 584408,-491863.83 584494.41,-491878.08 584508.72,-491892.55 584523.14,-491906.8 584537.45,-491921.16 584551.87,-491921.38 584638.28,-491892.88 584695.96,-491878.75 584782.49,-491850.03 584768.06,-491821.42 584768.18,-491792.92 584797.02,-491706.98 584811.66,-491692.84 584840.5,-491692.95 584869.34,-491707.2 584883.65,-491850.36 584897.74,-491850.14 584811.33,-491907.36 584811.21,-491921.6 584753.53,-491935.85 584739,-491950.21 584724.69,-491964.24 584638.17,-492021.46 584638.06,-492035.71 584551.64,-492064.2 584493.96,-492078.23 584436.28,-492135.45 584421.64,-492149.81 584407.33,-492164.06 584392.79,-492178.42 584378.37,-492192.56 584363.95,-492206.92 584349.53,-492235.41 584291.85,-492249.66 584277.32,-492264.02 584263.01,-492278.16 584248.48,-492292.52 584234.06,-492321.02 584176.37,-492349.4 584089.85,-492363.65 584075.43,-492378.01 584061.01,-492392.26 584046.48,-492406.62 584032.17,-492420.54 583888.08,-492477.76 583873.43,-492534.97 583859.01,-492549.11 583772.49,-492577.5 583685.97,-492591.75 583671.55,-492606.11 583657.13,-492634.61 583599.45,-492663.1 583541.76,-492677.24 583527.23,-492734.46 583498.28,-492791.68 583469.33,-492877.39 583440.37,-492991.83 583411.31,-493049.05 583382.36,-493106.27 583382.25,-493134.88 583382.13,-493306.64 583381.69,-493392.47 583381.58,-493535.51 583352.4,-493549.87 583337.98,-493564.12 583323.56,-493621.23 583294.61,-493678.45 583294.38,-493793 583294.16,-493807.36 583279.74,-493821.49 583265.32,-493907.32 583250.79,-493907.21 583193.11,-493993.04 583178.46,-494050.26 583149.51,-494078.86 583149.51,-494107.47 583149.4,-494164.69 583120.45,-494178.94 583106.02,-494193.19 583091.6,-494250.41 583062.65,-494264.66 583048.23,-494278.91 583033.7,-494307.51 583033.7,-494364.84 583033.59,-494422.06 583033.48,-494479.39 583062.09,-494565.33 583090.71,-494622.55 583119.44,-494679.88 583133.75,-494679.99 583191.32,-494737.32 583205.51,-494794.54 583234.24,-494851.87 583248.55,-494851.98 583306.23,-494909.2 583320.43,-494923.67 583334.85,-494937.92 583349.16,-494952.39 583363.58,-494966.64 583377.89,-494981 583392.31,-494995.36 583406.62,-495052.69 583435.34,-495081.3 583435.23,-495095.55 583420.92,-495109.79 583406.39,-495124.15 583391.97,-495138.4 583377.55,-495152.65 583363.13,-495166.9 583348.6,-495181.26 583334.18,-495195.51 583319.76,-495209.76 583305.34,-495224.01 583290.81,-495238.37 583276.5,-495252.62 583261.97,-495266.87 583247.54,-495281.11 583233.12,-495295.48 583218.7,-495323.97 583161.02,-495338.22 583146.49,-495352.47 583132.18,-495366.72 583117.65,-495423.94 583088.7,-495438.19 583074.28,-495452.44 583059.86,-495466.8 583045.44,-495481.04 583031.02,-495495.29 583016.6,-495509.54 583002.06,-495523.9 582987.76,-495538.15 582973.22,-495552.4 582958.8,-495566.65 582944.38,-495623.87 582929.85,-495638.12 582872.17,-495652.25 582814.49,-495709.47 582799.96,-495723.72 582785.54,-495737.97 582771.12,-495752.33 582756.7,-495766.58 582742.17,-495780.94 582727.75,-495795.08 582713.33,-495809.44 582698.91,-495823.69 582684.37,-495838.05 582670.06,-495852.18 582655.53,-495866.54 582641.11,-495880.79 582626.69,-495895.04 582612.27,-495909.29 582597.74,-495923.65 582583.43,-495937.9 582568.9,-495995.12 582554.48,-496009.37 582496.8,-496023.5 582482.27,-496037.86 582467.85,-496052.11 582453.43,-496080.72 582453.32,-496109.33 582453.32,-496137.94 582453.2,-496195.27 582467.51,-496195.05 582381.1,-496280.99 582395.19,-496395.42 582423.8,-496452.75 582452.42,-496467.22 582466.84,-496481.47 582481.15,-496567.41 582509.88,-496653.24 582524.07,-496667.82 582581.64,-496682.07 582595.95,-496696.43 582610.37,-496710.79 582624.68,-496768.01 582653.41,-496825.34 582682.03,-496839.81 582696.56,-496854.06 582710.87,-496911.39 582739.48,-496968.72 582768.21,-496983.08 582782.63,-496997.33 582796.94,-497011.8 582811.36,-497026.16 582868.93,-497226.53 582882.79,-497312.36 582882.57,-497398.19 582853.61,-497426.8 582853.5,-497484.02 582853.39,-497684.28 582824.1,-497770.11 582795.15,-497827.33 582794.93,-497884.54 582794.82,-497941.87 582794.7,-497999.09 582809.01,-497999.2 582866.69,-498085.14 582880.78,-498142.47 582909.51,-498199.8 582938.12,-498214.16 582952.54,-498228.41 582966.85,-498342.96 582995.47,-498400.29 583024.09,-498414.65 583038.51,-498429.01 583052.82,-498486.34 583081.54,-498543.56 583110.27,-498558.03 583124.58,-498586.75 583182.15,-498601 583196.46,-498615.47 583210.88,-498629.72 583225.3,-498715.66 583253.92,-498858.81 583253.58,-498873.06 583239.16,-498887.31 583224.63,-498901.67 583210.21,-498915.92 583195.79,-499058.85 583166.61,-499116.07 583137.66,-499201.9 583108.71,-499216.15 583094.29,-499230.29 583036.61,-499316.11 583021.96,-499373.33 583007.43,-499373.44 583065.11,-499430.77 583079.31,-499488.1 583107.93,-499545.32 583122.23,-499545.43 583179.91,-499745.81 583193.78,-499831.74 583193.55,-499860.35 583193.55,-499946.29 583222.06,-500032.12 583221.95,-500117.95 583221.72,-500232.49 583221.39,-500318.32 583221.28,-500490.09 583249.67,-500504.56 583264.09,-500518.81 583278.4,-500547.42 583278.29,-500719.18 583277.84,-500776.4 583277.73,-500862.23 583248.77,-500919.45 583248.55,-501005.27 583248.44,-501019.63 583234.02,-501048.13 583176.34,-501062.16 583118.66,-501233.92 583103.79,-501248.17 583089.37,-501262.42 583074.95,-501405.47 583045.77,-501462.69 583016.82,-501548.4 582987.76,-501634.23 582958.8,-501720.06 582944.16,-501734.31 582886.59,-501734.19 582857.75,-501729.52 582809.91,-501748.33 582814.49,-501762.69 582828.8,-501791.52 582886.37,-501805.77 582900.68,-501820.24 582915.1,-501820.36 582972.78,-501820.47 583030.35,-501820.69 583116.87,-501792.19 583174.55,-501763.69 583203.39,-501735.09 583232.23,-501735.2 583289.91,-501764.03 583347.48,-501764.03 583376.21,-501764.14 583405.05,-501792.86 583462.62,-501821.58 583520.19,-501835.94 583534.5,-501850.3 583548.92,-501864.77 583635.33,-501979.21 583620.57,-502036.43 583591.62,-502122.25 583562.67,-502136.5 583548.25,-502150.75 583533.72,-502165.11 583519.41,-502193.61 583461.61,-502222 583403.93,-502236.25 583389.51,-502250.61 583375.09,-502264.41 583202.16,-502321.63 583202.05,-502335.88 583144.37,-502350.13 583129.95,-502364.49 583115.53,-502378.62 583100.99,-502392.98 583086.57,-502407.23 583072.15,-502421.59 583057.73,-502435.73 583043.31,-502450.09 583028.89,-502464.34 583014.36,-502492.95 583014.25,-502521.56 583014.25,-502535.92 582999.83,-502550.17 582985.41,-502578.78 582985.3,-502593.14 582999.72,-502607.61 583086.13,-502579 583100.55,-502521.78 583115.08,-502507.64 583144.03,-502479.14 583230.44,-502479.37 583288.12,-502508.09 583345.69,-502536.92 583403.26,-502565.64 583489.56,-502580 583503.87,-502594.36 583518.29,-502608.72 583532.6,-502623.08 583547.02,-502623.3 583633.43,-502623.41 583691.11,-502637.77 583748.68,-502694.99 583734.15,-502752.21 583705.2,-502766.46 583690.77,-502780.71 583676.24,-502795.07 583661.93,-502809.32 583647.4,-502895.15 583632.87,-502909.17 583488.78,-502923.31 583474.25,-502937.67 583459.83,-502951.92 583445.41,-502966.28 583430.98,-502994.44 583258.05,-503022.83 583142.69,-503036.97 583128.27,-503051.33 583113.85,-503065.58 583099.32,-503122.79 583084.9,-503136.93 583027.22,-503165.43 582969.54,-503179.57 582883.01,-503236.78 582882.9,-503236.56 582825.22,-503293.89 582839.53,-503379.72 582839.31,-503408.33 582839.19,-503465.66 582867.92,-503551.6 582882.12,-503551.71 582939.8,-503608.93 582939.58,-503623.4 582997.26,-503652.23 583054.72,-503666.48 583069.14,-503723.7 583068.91,-503780.91 583039.96,-503795.27 583025.65,-503795.05 582967.97,-503766.44 582939.24,-503737.61 582852.83,-503708.89 582824.1,-503680.17 582795.38,-503651.45 582737.81,-503636.87 582651.4,-503694.09 582636.86,-503708.45 582622.44,-503722.58 582607.91,-503894.24 582578.74,-503908.6 582564.32,-503922.85 582549.9,-503937.1 582535.48,-503936.87 582420.23,-503908.15 582391.5,-503907.82 582247.41,-503907.71 582189.84,-503907.6 582132.16,-503931.42 582055.48,-503950.23 582031.22,-503978.84 582031.11,-503993.2 582045.53,-504007.45 582059.84,-504036.06 582059.84,-504179.22 582045.08,-504193.69 582131.49,-504193.8 582160.33,-504193.91 582217.9,-504208.27 582232.21,-504222.63 582246.63,-504236.99 582260.94,-504251.35 582275.36,-504265.6 582289.78,-504280.07 582304.08,-504308.9 582390.49,-504323.15 582404.8,-504337.51 582419.22,-504351.87 582433.53,-504366.23 582447.95,-504380.82 582563.2,-504323.49 582563.31,-504338.07 582620.88,-504352.32 582635.19,-504366.68 582649.61,-504381.04 582663.92,-504395.4 582678.45,-504409.65 582692.76,-504424.12 582707.18,-504438.59 582793.47,-504495.81 582807.78,-504610.36 582836.29,-504624.83 582850.71,-504639.08 582865.02,-504954 582893.07,-504968.36 582907.5,-504982.61 582921.8,-504997.08 582936.22,-505011.33 582964.95,-504982.83 582979.37,-504954.22 583008.32,-504925.72 583037.17,-504897.12 583066.12,-504840.01 583094.96,-504754.18 583124.02,-504696.96 583152.97,-504639.86 583181.93,-504582.64 583196.57,-504568.5 583225.41,-504568.61 583282.98,-504568.83 583398.23,-504569.17 583542.32,-504598.11 583628.62,-504612.36 583642.93,-504784.13 583671.32,-504812.73 583685.74,-504812.62 583628.17,-504869.84 583613.53,-504927.06 583584.58,-505012.78 583555.51,-505027.14 583541.21,-505041.39 583526.67,-505055.63 583512.25,-505069.88 583497.83,-505084.24 583483.41,-505098.49 583468.88,-505112.74 583454.57,-505126.99 583440.04,-505270.04 583410.86,-505284.4 583396.44,-505298.53 583382.02,-505355.75 583353.07,-505412.86 583324.12,-505427.22 583309.7,-505441.47 583295.17,-505455.83 583280.86,-505469.97 583266.32,-505484.33 583251.9,-505498.57 583237.48,-505512.93 583223.06,-505541.43 583165.38,-505555.57 583150.85,-505569.93 583136.43,-505584.18 583122.01,-505598.43 583107.59,-505626.93 583049.91,-505640.84 582876.98,-505612.12 582862.67,-505468.96 582834.16,-505411.75 582819.97,-505411.52 582762.29,-505268.48 582762.62,-505254.12 582733.89,-505239.65 582676.32,-505182.43 582676.44,-505168.07 582647.71,-505167.96 582618.87,-505182.2 582604.34,-505196.56 582590.03,-505210.81 582575.5,-505239.42 582575.38,-505268.03 582575.38,-505353.75 582546.32,-505368.11 582531.9,-505382.36 582517.48,-505410.97 582517.37,-505425.33 582531.79,-505439.69 582546.1,-505454.05 582560.52,-505468.3 582574.82,-505497.02 582574.82,-505511.26 582560.4,-505525.51 582545.87,-505539.87 582531.56,-505554.01 582517.03,-505568.37 582502.61,-505582.62 582488.19,-505697.06 582459.02,-505782.77 582430.06,-505797.13 582415.64,-505796.91 582329.24,-505782.44 582300.39,-505839.77 582314.7,-505854.13 582329.12,-505868.6 582415.42,-505897.21 582400.89,-506040.25 582400.55,-506097.58 582429.28,-506112.06 582443.7,-506126.3 582458.01,-506154.91 582457.9,-506212.13 582457.79,-506326.68 582457.56,-506469.61 582428.39,-506526.83 582399.44,-506541.19 582385.02,-506555.33 582370.48,-506569.69 582356.18,-506583.94 582341.64,-506812.81 582326.66,-506812.92 582384.34,-506870.14 582369.7,-506927.36 582369.59,-507013.3 582383.79,-507013.41 582441.47,-507070.74 582455.66,-507128.07 582484.28,-507142.43 582498.7,-507156.68 582513.01,-507171.15 582527.54,-507185.51 582585.11,-507242.84 582599.31,-507300.06 582599.08,-507328.67 582599.08,-507357.28 582598.97,-507385.89 582598.97,-507471.82 582627.47,-507500.43 582627.47,-507614.87 582598.3,-507671.98 582569.46,-507729.19 582569.24,-507743.67 582583.66,-507772.5 582698.91,-507786.86 582713.1,-507801.22 582727.63,-507801.44 582814.04,-507801.55 582871.61,-507815.91 582885.92,-507830.27 582900.34,-507844.63 582914.65,-507858.99 582929.07,-507873.24 582943.49,-507930.46 582943.27,-507959.07 582943.15,-508016.4 582943.04,-508030.65 582928.62,-508044.79 582871.05,-508102 582856.41,-508187.72 582827.46,-508202.08 582813.04,-508216.33 582798.51,-508230.69 582784.08,-508258.96 582668.84,-508273.21 582654.3,-508330.43 582639.77,-508344.57 582582.2,-508373.07 582495.68,-508387.32 582481.15,-508444.42 582452.2,-508458.78 582437.78,-508473.03 582423.36,-508487.28 582408.94,-508501.53 582394.41,-508615.97 582379.76,-508630.21 582322.19,-508644.35 582307.66,-508701.57 582293.13,-508715.82 582235.56,-508730.07 582221.03,-508744.32 582206.61,-508758.45 582148.93,-508815.67 582134.4,-508830.03 582119.98,-508844.17 582105.44,-508958.72 582105.22,-508973.08 582119.64,-508987.44 582133.95,-509101.99 582162.45,-509159.2 582176.76,-509159.32 582234.44,-509216.65 582248.64,-509273.97 582277.26,-509288.34 582291.68,-509288.45 582320.52,-509288.45 582349.36,-509317.28 582435.65,-509331.75 582493.22,-509474.8 582478.47,-509489.16 582464.05,-509503.29 582449.51,-509517.65 582435.21,-509531.9 582420.67,-509546.15 582406.25,-509560.29 582348.57,-509617.51 582348.46,-509631.64 582262.05,-509660.14 582204.37,-509674.39 582189.84,-509731.61 582175.31,-509731.39 582117.74,-509788.6 582103.1,-509802.97 582088.68,-509817.21 582074.26,-509831.46 582059.84,-509845.71 582045.3,-509860.07 582031,-509888.57 581973.32,-509902.71 581958.78,-509917.07 581944.36,-509931.32 581929.94,-509945.68 581915.52,-509974.06 581857.84,-510002.56 581800.16,-510031.06 581742.37,-510059.33 581598.28,-510087.72 581511.77,-510116.11 581396.52,-510115.77 581310.11,-510115.66 581223.7,-510144.05 581137.18,-510143.94 581108.34,-510143.71 581021.94,-510143.6 580964.26,-510114.77 580877.96,-510086.05 580849.23,-510057.33 580820.51,-510042.86 580762.83,-509985.64 580748.52,-509956.92 580719.79,-509899.59 580691.17,-509870.87 580662.45,-509842.26 580633.72,-509727.71 580605.21,-509670.38 580590.91,-509670.27 580533.34,-509613.05 580519.03,-509527.12 580490.42,-509469.79 580461.8,-509355.24 580433.3,-509297.91 580404.57,-509240.58 580375.95,-509183.25 580347.22,-509097.42 580318.61,-508954.27 580290.22,-508896.94 580261.6,-508868.33 580261.6,-508610.84 580291.11,-508553.63 580320.06,-508467.8 580349.01,-508410.69 580377.96,-508382.08 580406.92,-508353.59 580435.76,-508124.6 580436.31,-508038.77 580407.69,-507838.4 580408.26,-507781.18 580437.21,-507695.46 580451.85,-507681.22 580480.68,-507652.72 580509.53,-507638.47 580567.21,-507609.86 580581.63,-507409.6 580611.03,-507380.99 580611.03,-507352.38 580611.14,-507323.77 580611.14,-507266.44 580582.52,-507180.61 580582.75,-507123.39 580582.86,-507037.45 580583.07,-506951.63 580583.31,-506865.8 580583.53,-506751.36 580583.75,-506722.64 580555.03,-506665.43 580555.25,-506608.21 580584.19,-506579.71 580613.04,-506350.73 580613.6,-506236.29 580613.81,-506207.68 580613.93,-506150.35 580585.32,-506093.13 580585.43,-506007.3 580614.49,-505921.59 580643.44,-505864.37 580672.4,-505807.26 580701.35,-505749.93 580701.46,-505664.11 580701.68,-505607 580730.63,-505578.39 580759.58,-505549.78 580759.58,-505292.19 580760.26,-505263.69 580789.1,-505206.47 580818.05,-505177.86 580818.16,-505149.25 580818.27,-505092.15 580847.22,-504977.6 580861.86,-504977.49 580804.3,-504891.66 580818.83,-504777.22 580819.16,-504720.01 580819.28,-504576.85 580819.61,-504376.47 580791.33,-504319.14 580762.6,-504204.6 580734.1,-504061.55 580734.43,-504004.33 580749.08,-504004.22 580691.4,-503975.61 580705.82,-503918.39 580706.04,-503889.79 580706.04,-503803.96 580706.27,-503632.19 580677.87,-503517.64 580663.79,-503503.28 580635.06,-503474.56 580606.33,-503445.95 580577.49,-503417.12 580491.2,-503402.43 580375.95,-503431.15 580390.26,-503459.76 580404.68,-503459.65 580347,-503516.86 580346.89,-503531.11 580289.21,-503545.36 580274.79,-503559.61 580260.37,-503573.86 580245.84,-503688.3 580216.78,-503702.55 580202.36,-503716.79 580187.94,-503802.62 580158.87,-503859.84 580158.76,-503974.28 580158.43,-504031.49 580158.32,-504146.04 580158.09,-504231.87 580157.87,-504374.92 580157.53,-504632.51 580142.55,-504632.62 580200.12,-504747.06 580185.37,-504775.67 580185.37,-504833 580213.98,-504861.6 580213.98,-504875.96 580199.56,-504890.21 580185.03,-504947.43 580184.92,-504961.79 580199.34,-504990.62 580285.63,-505004.98 580343.31,-505033.59 580328.78,-505047.95 580314.36,-505062.09 580299.83,-505076.45 580285.41,-505090.7 580270.99,-505147.92 580256.46,-505147.7 580170.05,-505204.91 580184.25,-505290.85 580198.56,-505290.52 580083.31,-505405.07 580097.4,-505419.43 580111.82,-505433.79 580126.12,-505491 580126.01,-505519.61 580125.9,-505576.94 580154.52,-505605.55 580168.93,-505619.8 580111.26,-505634.05 580096.84,-505662.66 580096.72,-505719.88 580096.61,-505805.7 580081.97,-505791.57 580110.81,-505791.57 580139.65,-505806.04 580197.22,-505863.26 580197.1,-505920.48 580196.99,-505949.08 580196.88,-505948.97 580139.31,-506006.19 580139.09,-505991.83 580110.36,-505977.36 580052.8,-506005.97 580067.1,-506063.3 580095.72,-506077.66 580110.14,-506077.77 580138.98,-506063.52 580167.82,-506177.96 580181.9,-506206.68 580196.32,-506220.82 580138.64,-506235.06 580124.11,-506249.42 580109.69,-506263.56 580095.27,-506320.78 580066.32,-506378 580066.1,-506392.47 580080.52,-506406.72 580094.94,-506421.08 580109.36,-506435.44 580123.66,-506449.8 580138.08,-506449.91 580166.81,-506435.55 580195.65,-506521.38 580181.01,-506535.74 580166.7,-506549.65 580022.61,-506692.81 580036.59,-506707.17 580051.01,-506721.42 580065.31,-506735.89 580079.73,-506750.14 580094.04,-506764.5 580108.46,-506793.33 580166.03,-506807.69 580223.6,-506950.85 580237.57,-507036.68 580237.34,-507151.11 580237.12,-507236.94 580236.9,-507351.49 580222.25,-507351.6 580279.82,-507437.43 580265.18,-507609.08 580250.42,-507623.33 580192.74,-507637.47 580178.21,-507651.83 580163.9,-507680.1 580048.55,-507694.35 580019.71,-507665.74 580005.29,-507551.19 579991.2,-507551.08 579933.64,-507379.32 579919.67,-507264.88 579919.89,-507236.27 579934.42,-507221.91 579905.69,-507221.69 579819.18,-507221.47 579732.77,-507221.47 579704.04,-507235.6 579689.51,-507407.26 579660.22,-507464.48 579631.27,-507478.73 579616.97,-507492.97 579602.43,-507550.19 579573.48,-507578.8 579573.37,-507607.41 579573.37,-507621.77 579558.95,-507635.91 579544.42,-507650.27 579530.11,-507664.52 579515.58,-507678.77 579501.16,-507693.02 579486.74,-507750.23 579457.79,-507778.84 579457.68,-507979.22 579485.96,-508036.44 579485.85,-508093.65 579456.9,-508150.76 579427.95,-508207.98 579399,-508265.09 579370.05,-508279.45 579355.63,-508293.7 579341.21,-508350.8 579312.26,-508408.02 579283.3,-508465.13 579254.35,-508522.35 579225.4,-508636.67 579196.23,-508651.03 579181.81,-508665.28 579167.39,-508779.72 579167.05,-508836.93 579166.94,-508980.09 579166.61,-509037.42 579195.22,-509066.03 579195.22,-509180.47 579194.89,-509266.41 579223.5,-509380.84 579237.7,-509381.06 579295.27,-509466.89 579280.62,-509495.5 579280.51,-509552.72 579294.82,-509552.83 579352.5,-509724.6 579366.36,-509738.96 579380.78,-509753.32 579395.08,-509767.68 579409.5,-509782.04 579423.81,-509796.4 579438.23,-509810.65 579452.65,-509925.19 579466.73,-509925.31 579524.41,-510039.85 579538.5,-510097.18 579567.11,-510111.54 579581.53,-510125.79 579595.84,-510140.26 579610.26,-510154.51 579624.57,-510168.87 579638.99,-510183.23 579653.29,-510269.17 579681.91,-510326.39 579696.22,-510340.86 579753.78,-510355.22 579768.09,-510412.55 579796.82,-510469.77 579825.43,-510484.24 579839.85,-510498.49 579854.16,-510512.85 579868.58,-510527.21 579882.89,-510613.04 579882.67,-510698.86 579868.13,-510699.09 579954.54,-510756.31 579968.74,-510813.63 579983.04,-510799.61 580069.56,-510771.11 580127.24,-510756.86 580184.92,-510699.64 580185.03,-510714.12 580242.6,-510742.95 580300.17,-510771.67 580357.73,-510785.92 580372.04,-510800.39 580386.46,-510814.64 580400.77,-510829 580415.19,-510857.94 580530.32,-510886.66 580587.89,-510901.02 580602.2,-510915.38 580616.62,-510929.74 580630.92,-510944.1 580645.34,-510944.21 580674.18,-510944.21 580703.02,-510958.57 580717.33,-510972.93 580731.75,-511001.65 580789.32,-511016.01 580803.63,-511030.37 580818.05,-511044.96 580933.18,-511102.17 580947.38,-511116.65 580961.8,-511131.01 581019.36,-511188.22 581019.25,-511202.92 581134.5,-511217.17 581148.81,-511231.53 581163.23,-511245.89 581177.54,-511260.25 581191.96,-511274.61 581206.26,-511288.97 581220.68,-511303.22 581234.99,-511317.69 581249.41,-511331.94 581263.72,-511346.3 581278.14,-511375.13 581335.71,-511389.38 581350.02,-511446.71 581378.63,-511504.04 581407.36,-511561.37 581435.98,-511618.59 581464.7,-511704.52 581464.48,-511761.74 581464.26,-511818.96 581464.15,-511933.4 581435.08,-511962.01 581434.97,-511990.62 581434.86,-512004.86 581420.55,-512019.11 581406.02,-512033.47 581391.6,-512047.72 581377.18,-512104.83 581348.23,-512333.7 581333.25,-512348.29 581390.82,-512362.53 581405.12,-512419.86 581433.85,-512434.22 581448.16,-512448.58 581462.58,-512505.8 581491.2,-512520.27 581505.62,-512534.52 581519.93,-512548.99 581534.35,-512563.24 581548.65,-512620.57 581577.38,-512706.51 581605.89,-512763.73 581605.77,-512878.05 581576.71,-512906.66 581576.6,-512935.38 581576.49,-512949.63 581562.18,-512978.13 581504.5,-512992.16 581417.98,-513049.38 581417.87,-513049.26 581360.19,-513106.48 581345.66,-513135.09 581345.54,-513163.7 581345.43,-513249.42 581316.48,-513335.36 581316.26,-513507.12 581344.54,-513621.67 581358.74,-513621.78 581416.3,-513707.61 581416.19,-513693.47 581473.76,-513693.92 581617.85,-513722.75 581704.14,-513737 581718.56,-513751.36 581732.87,-513765.72 581747.29,-513851.54 581747.07,-513908.76 581732.54,-513908.65 581674.86,-513965.76 581660.32,-513980.12 581645.9,-513994.37 581631.37,-514008.73 581617.06,-514022.86 581602.53,-514108.69 581573.47,-514122.94 581559.16,-514151.44 581501.37,-514151.22 581414.96,-514151.1 581357.39,-514165.35 581342.86,-514222.57 581342.75,-514279.9 581371.37,-514337.12 581371.25,-514365.73 581371.14,-514451.56 581370.92,-514480.16 581370.92,-514508.77 581370.81,-514523.13 581356.39,-514537.38 581341.97,-514594.49 581312.9,-514608.85 581298.6,-514622.77 581154.51,-514737.09 581139.75,-514794.42 581139.64,-514808.78 581153.95,-514823.03 581168.37,-514837.5 581182.68,-514851.75 581197.1,-514866.11 581211.52,-514894.94 581268.97,-514909.19 581283.39,-514966.52 581312.01,-515081.07 581340.51,-515138.29 581340.4,-515424.49 581339.62,-515438.85 581354.04,-515453.21 581368.35,-515653.58 581396.63,-515682.19 581396.52,-515853.85 581381.76,-515868.32 581439.33,-515882.68 581453.64,-515911.29 581453.53,-515997.12 581424.57,-516011.36 581410.15,-516025.61 581395.62,-516054.22 581395.62,-516082.83 581395.51,-516097.19 581381.09,-516111.33 581366.67,-516254.49 581366.22,-516311.82 581394.95,-516426.36 581423.46,-516512.3 581451.96,-516526.66 581466.38,-516540.91 581480.8,-516555.27 581495.11,-516569.63 581509.53,-516626.85 581523.84,-516627.07 581581.41,-516712.9 581595.49,-516727.37 581609.91,-516741.62 581624.22,-516755.98 581638.64,-516770.34 581652.95,-516784.7 581667.37,-516799.06 581681.67,-516813.42 581696.09,-516827.67 581710.51,-516885 581710.29,-516913.61 581710.18,-516927.97 581724.71,-516942.22 581738.91,-516999.55 581753.22,-517014.02 581810.9,-517028.38 581825.2,-517085.6 581853.82,-517100.07 581868.24,-517114.32 581882.55,-517171.65 581896.86,-517171.76 581954.43,-517572.4 581967.84,-517629.73 581967.62,-517715.44 581938.55,-517729.8 581924.24,-517743.94 581909.71,-517772.55 581909.6,-517801.27 581909.6,-517815.52 581895.18,-517829.77 581880.65,-517886.88 581851.7,-518144.36 581822.19,-518173.08 581822.19,-518287.51 581850.69,-518344.84 581879.31,-518488 581878.97,-518502.25 581864.55,-518516.5 581850.02,-518573.72 581821.07,-518630.82 581806.54,-518645.07 581748.97,-518659.32 581734.44,-518673.57 581720.02,-518687.82 581705.6,-518702.18 581691.18,-518716.21 581633.5,-518744.93 581647.8,-518773.53 581647.69,-518859.36 581618.63,-518916.47 581589.68,-518945.08 581589.68,-519002.3 581589.45,-519116.73 581560.39,-519145.34 581560.28,-519173.95 581560.28,-519259.78 581531.22,-519274.03 581516.8,-519288.28 581502.26,-519402.6 581473.2,-519416.96 581458.78,-519431.1 581401.1,-519488.32 581386.57,-519502.57 581372.15,-519516.82 581357.62,-519545.42 581357.62,-519574.03 581357.51,-519631.25 581342.97,-519631.14 581285.41,-519716.97 581270.65,-519774.07 581241.7,-519788.43 581227.28,-519816.82 581169.6,-519831.07 581155.18,-519845.43 581140.76,-519859.68 581126.23,-519873.93 581111.92,-519888.18 581097.39,-519902.54 581082.97,-519930.92 581025.29,-519945.17 581010.76,-520002.28 580981.81,-520059.5 580952.85,-520116.6 580923.9,-520130.96 580909.48,-520145.1 580851.92,-520202.32 580837.27,-520216.57 580822.85,-520230.82 580808.43,-520245.18 580794.01,-520259.32 580779.48,-520316.53 580764.95,-520330.78 580707.38,-520330.56 580649.7,-520330.56 580620.86,-520358.95 580563.19,-520387.11 580361.53,-520415.5 580303.85,-520444 580246.06,-520458.13 580188.5,-520515.35 580188.27,-520529.49 580130.59,-520557.99 580072.92,-520572.24 580058.5,-520586.6 580044.08,-520600.73 580029.55,-520615.09 580015.24,-520614.98 579957.56,-520586.26 579928.83,-520557.43 579871.26,-520528.71 579813.81,-520528.6 579784.97,-520528.6 579756.13,-520499.88 579727.4,-520499.43 579583.43,-520499.32 579525.75,-520470.6 579497.03,-520441.77 579410.73,-520412.94 579324.33,-520384.22 579266.76,-520355.5 579238.03,-520326.78 579209.31,-520298.06 579151.85,-520283.47 579094.29,-520226.25 579079.98,-520168.92 579051.25,-520111.6 579022.64,-519997.05 578994.13,-519911.22 578965.52,-519882.61 578965.63,-519853.89 578965.74,-519825.28 578965.74,-519796.78 578994.69,-519768.17 578994.69,-519710.85 578980.5,-519710.73 578922.93,-519624.91 578908.73,-519596.3 578908.73,-519539.08 578923.38,-519553.55 578980.94,-519567.91 578995.25,-519582.27 579009.67,-519596.63 579067.24,-519568.13 579081.66,-519539.52 579096.19,-519525.05 579038.62,-519496.33 578981.06,-519496.22 578923.49,-519510.25 578836.97,-519681.9 578822.11,-519710.51 578821.99,-519724.87 578836.41,-519739.12 578850.72,-519853.67 578879.23,-520111.26 578893.09,-520111.48 578950.65,-520283.14 578950.2,-520297.61 579007.77,-520311.97 579022.08,-520326.33 579036.5,-520340.8 579094.06,-520426.63 579108.15,-520483.96 579122.46,-520484.07 579180.13,-520541.29 579179.91,-520541.4 579237.59,-520598.73 579251.78,-520656.06 579280.4,-520670.42 579294.82,-520684.78 579352.38,-520770.72 579366.58,-520828.05 579395.2,-520913.99 579423.81,-520942.6 579423.7,-521057.03 579423.36,-521085.64 579423.36,-521114.25 579423.25,-521142.86 579423.14,-521228.69 579394.19,-521257.18 579379.66,-521257.41 579437.34,-521314.51 579422.69,-521400.34 579393.63,-521457.56 579393.52,-521486.17 579393.41,-521543.39 579364.46,-521557.64 579350.04,-521571.88 579335.62,-521628.99 579306.67,-521743.43 579292.02,-521743.32 579234.35,-521800.53 579219.81,-521814.78 579205.4,-521828.92 579147.72,-521886.14 579133.07,-521943.36 579118.54,-521957.5 579060.98,-521957.5 579032.14,-521957.16 578916.89,-521985.21 578715.13,-521999.46 578700.72,-522013.71 578686.3,-522042.1 578599.78,-522056.35 578585.36,-522113.56 578556.41,-522199.28 578527.35,-522213.64 578512.93,-522227.89 578498.4,-522242.14 578484.09,-522256.39 578469.56,-522285 578469.45,-522313.61 578469.34,-522327.97 578455.03,-522342.1 578440.5,-522399.32 578411.55,-522413.57 578397.13,-522427.82 578382.71,-522485.04 578368.18,-522499.18 578310.5,-522513.09 578166.42,-522570.31 578166.31,-522584.56 578108.63,-522613.06 578050.95,-522627.19 578036.42,-522641.55 578022.11,-522655.8 578007.58,-522670.05 577993.16,-522684.3 577978.63,-522741.41 577949.68,-522755.77 577935.38,-522770.02 577920.84,-522784.26 577906.43,-522798.51 577892.01,-522812.87 577877.59,-522841.26 577819.91,-522855.51 577805.38,-522969.95 577776.32,-523027.05 577747.26,-523041.41 577732.95,-523055.66 577718.42,-523141.38 577689.36,-523198.48 577660.41,-523455.97 577630.9,-523513.18 577630.78,-523599.01 577630.56,-523713.56 577630.23,-523856.72 577658.62,-523913.94 577687.34,-524057.09 577686.9,-524343.07 577657.28,-524400.29 577657.16,-524414.76 577671.58,-524429.01 577685.89,-524543.45 577685.55,-524557.81 577671.14,-524586.19 577584.73,-524600.44 577570.2,-524614.69 577555.78,-524628.94 577541.36,-524686.16 577526.83,-524700.63 577584.4,-524729.46 577641.96,-524743.93 577728.37,-524801.15 577742.56,-524858.48 577771.18,-524872.84 577785.59,-524887.2 577799.9,-524901.56 577814.32,-524915.92 577828.63,-525001.75 577857.13,-525144.91 577885.63,-525159.38 577900.05,-525173.63 577914.36,-525259.57 577928.56,-525259.68 577986.12,-525459.94 577971.14,-525474.3 577956.72,-525488.44 577942.31,-525502.8 577927.89,-525517.05 577913.36,-525531.3 577898.94,-525545.43 577841.37,-525717.09 577840.92,-525717.31 577898.49,-525745.92 577898.38,-525759.83 577725.57,-525788.22 577667.89,-525802.47 577653.36,-525888.3 577638.72,-525873.83 577552.43,-525859.24 577466.03,-525801.91 577466.14,-525787.66 577437.41,-525758.94 577408.69,-525730.11 577322.39,-525701.28 577264.83,-525701.17 577207.15,-525715.31 577178.32,-525658.09 577164.01,-525629.37 577135.28,-525572.04 577106.67,-525543.43 577077.94,-525486.1 577063.75,-525471.85 577035.02,-525443.13 577006.29,-525414.41 576977.57,-525385.69 576948.84,-525356.97 576891.28,-525342.16 576747.31,-525513.93 576761.17,-525571.15 576760.95,-525628.26 576732,-525642.62 576717.69,-525671.11 576659.9,-525685.25 576645.48,-525799.8 576645.15,-525857.02 576673.76,-525914.35 576688.07,-525928.82 576745.63,-525957.65 576803.2,-525957.65 576832.04,-525929.26 576918.55,-525929.49 576976.11,-525929.82 577120.19,-525930.04 577177.76,-525944.29 577192.06,-525958.65 577206.48,-525987.48 577264.05,-526001.73 577278.35,-526016.2 577292.77,-526030.45 577307.08,-526087.67 577321.39,-526102.25 577378.95,-526116.5 577393.26,-526130.86 577407.68,-526159.69 577465.24,-526188.64 577580.37,-526188.64 577609.1,-526160.25 577666.78,-526131.75 577724.56,-526103.26 577753.4,-526074.76 577782.24,-526074.76 577811.08,-526089.12 577825.39,-526103.48 577839.81,-526103.59 577897.37,-526075.31 578012.73,-526061.07 578041.56,-526146.89 578041.34,-526147.23 578156.58,-526204.44 578170.78,-526261.77 578185.09,-526276.36 578271.49,-526290.61 578285.68,-526319.22 578285.68,-526333.58 578271.27,-526347.82 578256.73,-526362.07 578242.43,-526390.46 578155.91,-526390.24 578069.51,-526390.13 578011.83,-526404.26 577997.41,-526461.48 577982.88,-526475.73 577925.2,-526489.87 577896.37,-526461.26 577882.06,-526432.54 577853.22,-526375.32 577839.02,-526360.96 577810.3,-526332.13 577752.73,-526303.41 577724.01,-526274.69 577666.55,-526245.41 577436.18,-526216.8 577407.46,-526216.58 577321.05,-526230.72 577306.52,-526287.93 577277.57,-526302.18 577263.15,-526316.43 577248.62,-526330.79 577234.31,-526330.57 577176.64,-526330.24 577061.4,-526344.48 577046.98,-526401.7 577032.45,-526415.84 576974.77,-526444.34 576917.1,-526458.03 576715.45,-526429.42 576701.04,-526372.09 576672.42,-526343.37 576643.69,-526314.76 576629.39,-526300.62 576658.23,-526286.49 576744.74,-526257.77 576730.32,-526200.55 576716.12,-526186.19 576687.4,-526181.4 576582,-526200.1 576572.05,-526199.99 576514.48,-526171.38 576514.59,-526161.81 576562.32,-526143 576586.58,-526114.39 576586.69,-526085.67 576557.96,-526028.34 576529.35,-525942.51 576515.15,-525928.15 576486.43,-525899.43 576457.7,-525899.32 576400.14,-525927.82 576342.35,-525956.2 576284.68,-525956.09 576227.11,-525927.26 576169.55,-525912.79 576111.98,-525855.46 576097.68,-525826.85 576068.95,-525798.13 576040.23,-525740.91 576040.45,-525655.08 576069.4,-525597.98 576098.35,-525512.15 576098.68,-525426.32 576084.49,-525440.57 576055.65,-525454.71 576041.12,-525511.93 576012.17,-525569.03 575983.22,-525654.86 575954.27,-525769.19 575925.1,-525826.4 575896.15,-525883.62 575895.93,-525940.84 575924.65,-525955.31 575939.07,-525969.56 575953.38,-526055.5 575981.88,-526141.44 576010.49,-526284.48 576010.16,-526370.31 576009.93,-526384.67 576024.24,-526399.03 576038.55,-526413.39 576052.97,-526427.75 576067.27,-526484.97 576096,-526685.35 576095.44,-526799.78 576095.11,-526857 576094.99,-526871.36 576080.58,-526885.5 576066.05,-526914.11 576066.05,-526928.58 576080.35,-526928.58 576109.19,-526928.8 576166.87,-526943.05 576181.17,-527086.21 576209.56,-527143.54 576238.18,-527172.15 576238.07,-527186.51 576223.76,-527200.64 576209.23,-527257.86 576180.28,-527343.69 576180.05,-527372.3 576179.94,-527386.55 576165.52,-527415.04 576107.85,-527429.29 576093.43,-527515.01 576064.37,-527529.37 576049.95,-527543.62 576035.42,-527743.77 576006.13,-527800.99 575977.18,-527815.24 575962.77,-527829.49 575948.24,-527843.85 575933.82,-527857.98 575919.4,-527943.81 575890.34,-528086.86 575889.89,-528172.8 575918.5,-528458.89 575917.72,-528544.71 575917.5,-528602.04 575946.11,-528859.64 575974.17,-529031.29 575973.72,-529045.65 575959.3,-529059.9 575944.88,-529145.62 575915.82,-529202.72 575886.87,-529288.55 575886.65,-529345.77 575886.42,-529360.13 575872.01,-529359.91 575785.61,-529359.68 575699.2,-529373.93 575684.79,-529431.04 575655.84,-529488.15 575626.78,-529502.51 575612.36,-529516.76 575597.94,-529745.63 575597.27,-529831.57 575611.46,-529845.71 575553.9,-529859.95 575539.37,-529874.2 575524.95,-529888.45 575510.53,-530031.5 575495.78,-530031.28 575409.27,-530145.6 575394.51,-530202.82 575365.56,-530259.93 575336.61,-530402.97 575307.44,-530517.3 575278.27,-530574.51 575278.16,-530631.84 575306.77,-530689.06 575321.08,-530689.28 575378.64,-530832.33 575392.61,-530889.66 575421.22,-530904.02 575435.64,-530932.85 575493.21,-530947.21 575550.77,-531004.43 575536.13,-531018.79 575521.82,-531032.93 575507.29,-531204.69 575506.84,-531376.35 575520.81,-531391.15 575664.78,-531405.63 575751.07,-531462.84 575750.96,-531477.32 575808.52,-531492.01 575952.48,-531549.34 575966.68,-531606.56 575995.29,-531621.03 576009.71,-531635.28 576024.13,-531649.64 576038.44,-531664 576052.86,-531721.33 576081.47,-531735.69 576095.89,-531764.74 576239.74,-531778.99 576254.16,-531793.35 576268.47,-531822.29 576354.87,-531836.54 576369.18,-531893.87 576397.79,-531979.7 576397.57,-531994.06 576383.15,-532008.2 576368.62,-532022.56 576354.31,-532036.81 576339.78,-532051.06 576325.36,-532050.94 576296.63,-532050.72 576210.23,-532050.39 576066.16,-532050.17 575979.76,-532048.94 575547.64,-532048.38 575374.84,-532062.63 575360.42,-532091.24 575345.89,-532105.94 575489.97,-532134.77 575547.42,-532149.02 575561.72,-532163.49 575576.14,-532177.74 575590.45,-532349.39 575590,-532363.75 575575.58,-532378 575561.16,-532435.11 575532.1,-532492.22 575503.15,-532549.43 575474.21,-532563.68 575459.79,-532577.93 575445.37,-532592.29 575430.95,-532606.43 575416.42,-532620.79 575402,-532634.93 575387.58,-532649.29 575373.16,-532663.54 575358.63,-532677.78 575344.33,-532692.03 575329.79,-532749.14 575300.85,-532763.5 575286.43,-532763.39 575228.86,-532763.17 575171.19,-532791.44 575055.95,-532805.69 575041.42,-532862.8 575012.47,-532877.16 574998.05,-532891.41 574983.64,-532905.66 574969.22,-532919.9 574954.69,-532934.26 574940.27,-532948.4 574925.85,-533062.84 574896.68,-533148.55 574867.62,-533262.88 574838.56,-533434.65 574838,-533606.41 574866.39,-533663.63 574895,-533806.79 574923.39,-533892.73 574951.89,-533950.06 574980.62,-534007.27 574994.81,-534021.86 575052.38,-534036.33 575138.78,-533979.11 575153.31,-533922 575182.25,-533864.9 575211.2,-533807.68 575225.85,-533793.43 575254.68,-533779.4 575370.03,-533836.73 575369.81,-533822.48 575398.65,-533822.71 575456.21,-533822.71 575485.05,-533822.82 575513.88,-533851.65 575571.34,-533865.9 575585.75,-533923.23 575614.37,-534037.66 575628.45,-534051.91 575570.78,-534066.05 575556.36,-534123.27 575527.41,-534137.52 575512.99,-534151.65 575455.32,-534208.87 575440.67,-534223.12 575426.37,-534237.37 575411.84,-534251.73 575397.42,-534280.01 575282.18,-534294.14 575267.65,-534308.5 575253.23,-534322.75 575238.7,-534337 575224.39,-534365.39 575137.88,-534393.89 575080.21,-534408.02 575065.68,-534422.38 575051.26,-534450.66 574907.18,-534464.8 574892.65,-534479.16 574878.35,-534493.07 574763.11,-534550.29 574762.89,-534536.15 574791.72,-534536.37 574878.12,-534550.74 574906.96,-534493.52 574907.07,-534479.6 575051.15,-534451.1 575079.98,-534422.83 575195.33,-534408.69 575281.73,-534351.47 575281.96,-534337.45 575368.36,-534309.06 575454.87,-534280.56 575483.71,-534252.18 575570.22,-534223.79 575656.73,-534195.29 575685.68,-534181.04 575743.24,-534238.37 575757.44,-534266.98 575757.44,-534324.09 575728.38,-534381.2 575699.43,-534395.56 575685.01,-534409.8 575670.59,-534424.05 575656.17,-534452.55 575598.5,-534480.94 575540.82,-534495.19 575526.29,-534509.55 575511.87,-534537.93 575454.2,-534552.18 575439.78,-534566.54 575425.36,-534580.57 575338.85,-534609.18 575353.16,-534666.51 575381.77,-534680.87 575396.19,-534695.12 575410.49,-534709.59 575424.91,-534738.31 575482.48,-534752.67 575496.78,-534767.03 575511.2,-534781.28 575525.51,-534795.75 575539.93,-534810 575554.23,-534838.61 575554.12,-534867.22 575539.7,-534867.33 575597.27,-534895.94 575597.27,-534910.07 575510.75,-534938.13 575309,-534937.68 575136.2,-534937.57 575107.48,-534951.37 574934.57,-534970.19 574944.29,-534994.45 574992.02,-535008.81 575006.33,-535027.74 575030.58,-535051.9 575049.47,-535066.26 575107.03,-535037.65 575092.73,-535008.93 575078.42,-534994.9 575136.09,-534967.29 575510.64,-534953.27 575625.88,-534981.88 575611.35,-534996.12 575596.93,-535010.37 575582.4,-535096.2 575582.18,-535110.67 575596.6,-535124.92 575610.9,-535139.28 575625.32,-535168.11 575682.89,-535196.94 575769.17,-535197.06 575826.74,-535168.56 575855.69,-535168.67 575884.52,-535183.03 575913.25,-535154.42 575927.67,-535097.2 575942.31,-535083.06 575971.15,-535054.68 576028.82,-535040.54 576115.23,-535069.04 576100.7,-535126.26 576100.58,-535140.73 576115,-535169.45 576172.57,-535198.28 576230.02,-535227.33 576402.82,-535241.81 576460.38,-535184.59 576474.92,-535127.37 576489.45,-535127.93 576691.09,-535185.14 576690.98,-535199.73 576748.54,-535228.56 576834.83,-535243.03 576892.39,-535185.81 576906.92,-535128.59 576921.57,-535143.07 576950.29,-535157.31 576964.6,-535171.79 576979.02,-535186.04 576993.33,-535243.36 577007.63,-535257.84 577065.2,-535272.09 577079.51,-535286.56 577093.92,-535300.81 577108.23,-535315.17 577122.65,-535329.64 577180.22,-535426.07 577455.78),(-460027.9 588738.09,-459941.63 588536.53,-459927.38 588507.68,-459913.02 588493.27,-459898.66 588478.96,-459884.3 588464.53,-459869.94 588450.11,-459869.94 588421.38,-459869.83 588392.54,-459841 588248.55,-459841 588219.71,-459869.38 588104.34,-459897.88 588046.65,-459926.49 588017.81,-459954.77 587844.86,-459954.65 587787.18,-459925.93 587700.76,-459896.99 587556.78,-459868.16 587412.68,-459853.8 587398.25,-459839.44 587383.94,-459825.08 587369.52,-459810.72 587355.21,-459796.36 587340.79,-459782.11 587326.48,-459767.75 587312.06,-459753.39 587297.64,-459739.03 587283.22,-459681.7 587254.49,-459667.45 587240.18,-459653.09 587225.76,-459567.15 587197.14,-459252.23 587197.69,-459051.85 587226.88,-458994.75 587255.83,-458937.53 587284.67,-458908.92 587284.79,-458851.59 587284.9,-458794.37 587313.74,-458622.72 587342.92,-458422.34 587372.1,-458365.23 587401.05,-458307.9 587401.16,-458250.69 587401.16,-458164.86 587430.23,-458107.64 587430.34,-458078.92 587430.34,-457821.44 587459.63,-457735.5 587459.74,-457706.89 587459.85,-457535.12 587460.08,-457363.36 587460.41,-457334.75 587460.52,-457320.5 587446.1,-457306.03 587431.68,-457220.2 587431.9,-457134.26 587432.02,-457077.04 587432.13,-456933.89 587432.35,-456848.06 587432.57,-456762.12 587432.69,-456733.51 587432.69,-456686.66 587485.17,-456619.08 587490.59,-456573.54 587492.27,-456521.39 587526.89,-456511.68 587563.28,-456480.74 587578.36,-456465.71 587598.78,-456426.83 587604.99,-456387.06 587606.77,-456376.46 587622.74,-456292.5 587628.07,-456265.09 587620.08,-456215.61 587625.41,-456198.81 587640.5,-456194.39 587663.57,-456131.64 587675.11,-456126.34 587694.64,-456088.34 587699.07,-456044.16 587716.82,-455995.54 587727.47,-455958.43 587715.05,-455907.17 587730.13,-455890.38 587762.08,-455871.81 587762.08,-455857.67 587803.8,-455824.98 587819.78,-455797.57 587834.86,-455585.46 587828.65,-455553.65 587818.88,-455512.12 587801.14,-455412.41 587782.76,-455392.09 587787.16,-455382.41 587801.9,-455388.77 587824.18,-455386.7 587857.34,-455345.39 587901.42,-455309.25 587924.75,-455252.45 587933.83,-455211.14 587946.8,-455098.82 587949.39,-455003.3 587950.69,-454926.59 587957.57,-454815.71 587968.26,-454703.68 587973.95,-454605.01 587952.53,-454535.67 587939.14,-454481 587951.19,-454435.66 587949.85,-454407.66 587927.09,-454387.66 587933.78,-454379.66 587955.2,-454271.65 587967.27,-454218.32 587976.63,-454196.98 587987.34,-454174.31 588022.17,-454138.31 588091.79,-454110.3 588109.2,-454041.57 588130.97,-454015.4 588158.62,-453942.41 588175.22,-453821.21 588200.12,-453756.33 588199.82,-453705.51 588202.89,-453676.59 588209.8,-453657.74 588215.8,-453635.7 588232.51,-453587.6 588253.21,-453551.53 588263.9,-453514.77 588266.5,-453484.22 588261.24,-453457.36 588259.89,-453382.82 588220.84,-453247.3 588129.53,-453173.49 588071.59,-453158.4 588068.9,-453133.82 588084.17,-453115.52 588094.5,-453111.76 588110.02,-453114.02 588130.83,-453110.05 588157.45,-453102.52 588173.41,-453100.63 588197.96,-453091.45 588251.22,-453084.6 588263.97,-453075.02 588322.46,-453075.02 588357.06,-453084.77 588393.42,-453095.86 588433.79,-453116.71 588455.52,-453133.12 588464.39,-453146.48 588486.45,-453169.46 588510.1,-453179.2 588536.89,-453190.56 588563.93,-453203.25 588603.01,-453210.6 588647.09,-453201.91 588691.51,-453186.09 588721.44,-453166.18 588750.63,-453137.46 588775.68,-453112.28 588791.74,-453077.67 588803.73,-453047.61 588809.07,-453028.89 588799.73,-453006.7 588785.09,-452995.85 588758.31,-452988.5 588741.6,-452978.48 588738.61,-452970.47 588742.61,-452963.79 588748.29,-452952.1 588747.62,-452956.11 588737.94,-452962.79 588730.59,-452958.78 588721.57,-452935.74 588699.04,-452925.97 588695.94,-452914.44 588698.6,-452917.1 588690.61,-452914 588683.96,-452891.38 588668.88,-452871.86 588668.88,-452853.23 588655.57,-452835.05 588632.06,-452797.79 588601.46,-452787.14 588584.15,-452760.97 588561.97,-452737.02 588530.05,-452733.47 588516.73,-452737.02 588503.87,-452748.11 588491.01,-452748.11 588473.27,-452742.79 588455.52,-452742.79 588435.56,-452737.9 588417.38,-452724.15 588399.19,-452710.38 588360.13,-452686.96 588322.76,-452648.83 588281.71,-452599.69 588260.03,-452559.73 588265.11,-452518.39 588283.09,-452499.1 588285.4,-452448.12 588329.22,-452377.55 588349.22,-452328.43 588346.86,-452281.2 588335.05,-452247.95 588332.3,-452223.27 588338.5,-452208.01 588339.16,-452185.6 588334.91,-452161.05 588334.46,-452141.43 588343.07,-452119.67 588366.22,-452114.48 588392.67,-452105.51 588415.81,-452087.08 588443.22,-452085.19 588464.94,-452087.55 588475.8,-452099.83 588476.75,-452104.08 588463.53,-452122.5 588446.04,-452129.58 588425.26,-452149.22 588409.27,-452168.71 588404.05,-452195.02 588409.27,-452217.1 588428.53,-452228.79 588446.13,-452236.26 588466.36,-452236.26 588494.41,-452217.75 588531.59,-452192.42 588578.55,-452154.42 588637.59,-452111.23 588686.51,-452058.28 588723.05,-451977.1 588776.53,-451931.62 588795.44,-451874.46 588827.42,-451821.53 588844.38,-451780.93 588848.29,-451774.43 588861.66,-451757.54 588876.34,-451708.18 588903.73,-451676.68 588922,-451650.04 588954.62,-451639.01 588957.22,-451620.16 588954.62,-451604.36 588943.5,-451588.54 588953.33,-451566.83 588959.33,-451526.41 588946.31,-451449.93 588904.23,-451382.83 588868.67,-451353.09 588838.78,-451316.75 588800.88,-451310.12 588778.13,-451311.03 588753.41,-451325.69 588730.23,-451340.72 588714.19,-451356.76 588704.51,-451371.79 588661.1,-451375.79 588608.99,-451371.79 588578.93,-451351.55 588548.42,-451346.03 588533.99,-451316.75 588495.15,-451270.89 588429.13,-451233.32 588384.18,-451148.79 588292.64,-451070.33 588224.95,-451009.56 588182.22,-450988.01 588173.35,-450953.76 588170.01,-450930 588174.45,-450833.87 588193.32,-450797.4 588201.09,-450765.36 588201.64,-450734.97 588194.99,-450706.8 588178.34,-450652.1 588162.24,-450601.27 588124.51,-450581.39 588115.09,-450557.07 588117.86,-450517.84 588123.41,-450467.57 588123.41,-450413.97 588113.42,-450363.14 588091.78,-450312.28 588059.12,-450265.91 588019.65,-450230.55 587981.37,-450213.26 587954.8,-450171.28 587901.68,-450146.52 587867.41,-450118.62 587823.18,-450110.6 587809.16,-450092.1 587753.12,-450075.25 587714,-450055.36 587692.37,-450044.58 587674.06,-450030.77 587652.97,-450016.41 587635.22,-450002.87 587613.3,-449981.87 587591.11,-449963.36 587574.74,-449937.68 587551.99,-449891.93 587516.64,-449846.51 587490.95,-449822.95 587479.29,-449808.67 587474.31,-449761.71 587481.8,-449763.13 587516.87,-449762.37 587586.47,-449762.37 587587.25,-449755.74 587652.38,-449747.54 587724.56,-449735.03 587832.06,-449720.06 587929.11,-449686.09 588092.81,-449623.31 588403.18,-449590.49 588570.05,-449577.42 588621.27,-449558.35 588667.51,-449513.88 588732.24,-449482.66 588770.53,-449450.35 588797.15,-449318.3 588870.39,-449194 588944.06,-449139.54 588973.69,-449108.65 588990,-449037.95 589031.86,-448937.59 589095.79,-448895.99 589138.07,-448859.73 589179.74,-448812.12 589222.97,-448770.18 589266.28,-448732.73 589312.68,-448705.45 589360.72,-448618.26 589474.92,-448567.54 589550.07,-448512.52 589623.74,-448491.27 589659.74,-448463.75 589692.39,-448425.66 589774.68,-448426.75 589785.59,-448433.84 589797.65,-448444.13 589801.9,-448468.94 589846.59,-448490.02 589868.61,-448510.79 589877.43,-448560.87 589879.07,-448606.57 589872.33,-448642.59 589858.11,-448653.02 589845.64,-448657.71 589836.8,-448657.05 589828.07,-448649.74 589825.51,-448629.61 589825.14,-448606.58 589810.81,-448597.77 589796.57,-448611.69 589770.27,-448632.54 589745.4,-448681.37 589698.91,-448727.18 589666.02,-448770.55 589647.24,-448805.36 589646.09,-448853.3 589673.03,-448889.25 589706.84,-448895.53 589724.03,-448888.12 589789.37,-448892.68 589801.98,-448938.33 589831.21,-448993.68 589854.7,-449185.43 589889.09,-449269.89 589909.73,-449391.44 589914.31,-449433.67 589920.05,-449460.49 589917.17,-449480.47 589919.47,-449559.22 589910.3,-449619.14 589889.09,-449663.65 589856.42,-449689.33 589825.48,-449693.32 589799.69,-449686.48 589783.64,-449720.15 589741.8,-449742.4 589740.66,-449799.47 589732.06,-449924.2 589767.08,-450094.39 589836.23,-450280.16 589940.59,-450401.62 590026.71,-450411.03 590042.69,-450408.44 590057.04,-450393.82 590076.94,-450394.15 590093.24,-450423.7 590075.63,-450415.59 590064.87,-450422.08 590050.19,-450432.47 590044.97,-450461.37 590040.08,-450539 590053.45,-450596.16 590072.69,-450672.8 590084.77,-450689.04 590083.46,-450708.52 590074.33,-450731.59 590058.01,-450760.49 590034.86,-450809.21 590011.37,-450861.18 589991.81,-450898.85 589985.28,-450940.74 589985.61,-450996.27 589997.03,-451032.98 590012.36,-451069.68 590030.62,-451098.52 590050.68,-451109.35 590068.39,-451133.01 590091.61,-451161.58 590105.32,-451196.66 590115.75,-451220.69 590118.04,-451255.12 590116.41,-451298.32 590105.96,-451364.57 590087.7,-451422.7 590086.07,-451451.94 590093.24,-451478.24 590082.15,-451519.04 590078.53,-451547.09 590077.27,-451574.38 590082.49,-451618.87 590105.64,-451637.71 590110.86,-451679.27 590111.18,-451697.14 590120.32,-451706.24 590120.97,-451715.65 590118.04,-451755.92 590092.59,-451777.36 590078.24,-451786.78 590076.61,-451803.66 590073.03,-451840.69 590042.36,-451857.57 590037.14,-451926.76 589970.61,-452001.45 589880.26,-452013.47 589877.33,-452041.72 589818.94,-452079.08 589765.78,-452120.03 589723.61,-452162.87 589693.37,-452205.99 589671.54,-452228.12 589664.67,-452259.65 589657.81,-452299.27 589658.47,-452339.87 589662.7,-452369.74 589671.19,-452383.38 589678.37,-452394.1 589698.59,-452393.78 589709.68,-452399.3 589714.24,-452409.7 589709.02,-452427.23 589715.23,-452450.28 589727.94,-452509.05 589772.22,-452514.08 589795.58,-452553.08 589837.26,-452599.61 589865.68,-452688.27 589887.16,-452771.28 589888.42,-452821.6 589900.42,-452858.7 589921.89,-452875.68 589940.84,-452900.32 589928.17,-452928.95 589919.51,-452957.66 589907.85,-453023.46 589898.53,-453095.58 589883.17,-453151.12 589869.47,-453193.89 589858.74,-453242.93 589856.84,-453360.53 589874.52,-453391.35 589866.94,-453546.05 589782.31,-453602.02 589733.06,-453690.05 589648.43,-453736.85 589603.51,-453779.66 589580.14,-453812.81 589569.46,-453839.65 589566.43,-453881.18 589566.81,-453911.37 589573.12,-453930.87 589585.12,-453972.38 589621.74,-453998.16 589665.32,-454013.88 589705.11,-454025.2 589771.43,-454029.6 589808.05,-454036.52 589833.95,-454057.27 589854.79,-454084.54 589861.69,-454119.22 589865.72,-454171.25 589874.21,-454196.15 589889.84,-454295.32 589901,-454365.57 589917.52,-454415.28 589919.47,-454437.54 589917.86,-454470.45 589925.27,-454503.46 589922.82,-454544.69 589916.06,-454648.83 589899.67,-454722.65 589909.48,-454742.92 589910.28,-454809.8 589913.95,-454871.57 589912.03,-454896.06 589911.27,-455086.39 589857.69,-455258.92 589819.27,-455348.74 589767.48,-455443.9 589696.02,-455532.83 589658.51,-455599.53 589650.47,-455653.79 589662.97,-455713.37 589690.66,-455775.63 589739.79,-455816.54 589755.86,-456073.56 589821.06,-456125.14 589817.5,-456311.9 589756.76,-456377.71 589718.36,-456474.65 589626.36,-456530.68 589578.13,-456574.26 589559.37,-456608.06 589556.69,-456640.96 589570.99,-456664.08 589591.52,-456729.24 589683.94,-456763.45 589713.9,-456794.85 589723.68,-456880.68 589709.14,-456909.29 589709.03,-456966.62 589708.92,-456995.23 589708.92,-457081.05 589708.81,-457109.66 589679.85,-457138.27 589651.01,-457195.49 589636.59,-457195.6 589694.16,-457224.21 589694.16,-457223.99 589607.63,-457252.71 589621.93,-457281.32 589621.93,-457338.53 589592.99,-457395.75 589592.88,-457453.08 589621.61,-457481.69 589621.61,-457567.63 589621.38,-457624.85 589621.27,-457682.07 589592.43,-457739.28 589563.47,-457796.5 589534.52,-457853.61 589505.68,-457910.83 589476.72,-457968.16 589476.61,-458168.53 589505.12,-458311.69 589533.62,-458369.02 589533.51,-458397.52 589504.67,-458454.73 589475.71,-458540.67 589475.6,-458569.28 589490.02,-458555.03 589518.87,-458555.15 589576.43,-458583.87 589634.02,-458598.23 589662.86,-458684.16 589677.06,-458741.38 589705.79,-458770.1 589734.52,-458827.43 589763.25,-458941.98 589791.87,-459113.86 589820.38,-459171.08 589820.27,-459228.29 589791.31,-459285.51 589762.36,-459314.12 589762.36,-459371.34 589762.25,-459399.95 589733.4,-459485.78 589704.44,-459514.39 589704.34,-459542.99 589704.34,-459628.82 589675.38,-459743.26 589646.31,-459771.87 589631.89,-459785.89 589430.1,-459814.28 589314.84,-459842.78 589257.16,-459871.39 589228.31,-459900 589199.36,-459928.49 589170.51,-459957.1 589112.82,-459985.38 588968.73,-460013.99 588939.77,-460013.88 588882.19,-459999.29 588738.09,-460027.9 588738.09),(-528459.86 579868.78,-528383.52 579763.51,-528369.28 579734.78,-528354.8 579720.36,-528340.55 579706.05,-528311.72 579648.49,-528283 579591.03,-528254.17 579504.63,-528225.34 579447.06,-528210.98 579432.64,-528196.62 579418.45,-528182.26 579403.91,-528168.01 579389.61,-528139.18 579332.15,-528110.46 579274.59,-528081.63 579188.29,-528052.79 579130.73,-528024.07 579073.16,-528009.6 579058.74,-527995.35 579044.43,-527980.99 579030.01,-527923.77 579030.24,-527837.95 579044.88,-527823.48 578958.48,-527823.14 578843.34,-527822.92 578785.67,-527794.2 578728.21,-527765.37 578670.65,-527751.01 578656.23,-527736.76 578641.92,-527722.29 578627.5,-527664.96 578598.77,-527579.13 578570.27,-527521.8 578556.07,-527521.69 578498.51,-527464.36 578484.2,-527378.42 578455.59,-527364.17 578441.28,-527349.7 578412.55,-527407.03 578426.75,-527464.25 578440.94,-527478.5 578383.38,-527506.99 578354.43,-527521.13 578325.59,-527463.91 578311.28,-527449.66 578296.97,-527449.44 578210.57,-527463.58 578181.73,-527377.64 578167.54,-527320.42 578138.92,-527306.06 578124.61,-527291.7 578110.19,-527234.37 578081.47,-527148.55 578081.8,-527091.33 578096.33,-527077.3 578154.01,-527062.94 578168.43,-527048.69 578182.85,-527034.55 578269.37,-527091.88 578283.56,-527120.49 578312.29,-527149.21 578326.6,-527135.08 578384.27,-527106.69 578441.95,-527092.33 578456.37,-527035.22 578485.32,-526949.39 578514.38,-526892.29 578543.33,-526878.04 578557.86,-526863.68 578572.28,-526806.46 578572.39,-526663.42 578572.73,-526548.98 578587.6,-526549.09 578645.16,-526520.48 578630.74,-526506.23 578616.43,-526491.76 578602.02,-526477.51 578587.71,-526463.15 578573.4,-526377.21 578573.62,-526363.08 578588.04,-526348.71 578602.46,-526334.47 578616.99,-526320.22 578631.3,-526305.97 578645.83,-526291.61 578660.25,-526234.5 578689.2,-526177.39 578718.15,-526091.57 578732.8,-526091.34 578675.23,-526034.13 578660.92,-525948.19 578632.42,-525890.86 578603.69,-525876.61 578589.38,-525862.14 578574.97,-525747.7 578546.46,-525690.37 578517.85,-525676.01 578503.54,-525661.65 578489.12,-525604.32 578460.5,-525518.38 578431.89,-525504.13 578417.58,-525489.77 578403.16,-525475.41 578388.86,-525461.05 578374.44,-525446.69 578360.13,-525432.33 578345.71,-525418.08 578331.4,-525389.25 578273.84,-525374.78 578216.27,-525317.45 578201.96,-525174.41 578202.41,-525160.16 578216.83,-525145.91 578245.78,-525203.13 578245.56,-525217.71 578303.12,-525246.32 578331.85,-525260.79 578389.41,-525232.07 578375.11,-525217.82 578360.8,-525203.46 578346.38,-525088.91 578332.3,-525074.55 578274.73,-525060.08 578260.31,-525002.86 578246.12,-524988.39 578188.55,-524973.92 578130.99,-524888.09 578145.52,-524659.22 578146.19,-524458.84 578117.91,-524258.47 578089.63,-524115.31 578061.24,-524057.98 578032.62,-523914.83 578004.12,-523800.28 577975.73,-523714.45 577975.95,-523657.34 578004.9,-523514.19 578005.24,-523428.25 577976.62,-523256.48 577948.34,-523242.23 577934.03,-523227.87 577919.62,-523213.51 577905.31,-523199.15 577890.89,-523141.93 577891,-523056.11 577920.06,-523041.97 577934.59,-523027.61 577948.9,-523013.36 577963.43,-522999.11 577977.85,-522941.89 578006.8,-522927.64 578021.33,-522913.4 578035.64,-522899.15 578050.17,-522870.98 578194.25,-522842.82 578396.01,-522828.57 578410.43,-522814.32 578424.85,-522786.05 578540.2,-522771.69 578554.62,-522757.44 578569.04,-522729.05 578655.56,-522700.66 578713.23,-522686.3 578727.65,-522629.2 578756.6,-522571.98 578771.25,-522557.84 578828.81,-522543.48 578843.23,-522529.34 578857.76,-522500.85 578915.44,-522486.49 578929.86,-522400.77 578958.92,-522386.52 578973.34,-522372.16 578987.76,-522358.02 579002.29,-522343.66 579016.71,-522329.41 579031.13,-522301.03 579088.81,-522286.67 579103.23,-522200.84 579132.29,-522186.7 579146.71,-522172.34 579161.13,-522086.63 579190.19,-522029.41 579204.84,-522043.99 579291.13,-522072.71 579348.7,-522101.54 579406.26,-522130.71 579607.8,-522159.43 579665.37,-522188.37 579780.5,-522217.2 579866.91,-522245.92 579895.63,-522245.92 579924.36,-522246.04 579953.2,-522274.87 580010.77,-522303.48 580039.49,-522332.31 580097.06,-522332.31 580125.79,-522332.42 580154.63,-522361.14 580183.35,-522389.97 580269.65,-522418.8 580356.06,-522447.63 580413.62,-522476.24 580442.35,-522505.08 580499.81,-522505.19 580528.65,-522505.19 580557.48,-522534.02 580614.94,-522562.63 580643.78,-522591.35 580672.51,-522620.07 580701.23,-522620.18 580729.96,-522620.18 580758.8,-522648.9 580787.53,-522677.62 580816.26,-522706.34 580873.83,-522706.56 580931.39,-522706.56 580960.23,-522735.4 581017.8,-522764.12 581046.53,-522792.84 581103.98,-522821.67 581190.39,-522850.39 581219.12,-522879.33 581334.25,-522908.05 581362.98,-522936.66 581391.71,-522965.49 581449.28,-522979.74 581478.01,-523037.07 581492.2,-523065.79 581520.93,-523094.4 581520.82,-523151.51 581491.87,-523208.73 581462.92,-523265.94 581462.8,-523294.55 581462.69,-523323.05 581433.85,-523437.49 581433.52,-523466.21 581433.41,-523523.31 581404.45,-523551.81 581375.61,-523609.03 581346.66,-523637.53 581317.71,-523694.75 581303.29,-523694.52 581245.61,-523665.92 581245.72,-523680.16 581188.04,-523679.94 581101.64,-523679.72 581015.23,-523708.22 580986.28,-523736.6 580899.76,-523750.63 580813.35,-523807.85 580798.71,-523836.46 580784.29,-523850.59 580726.61,-523864.84 580697.77,-523922.06 580697.66,-523936.31 580639.98,-523950.45 580611.14,-524007.67 580611.03,-524021.91 580553.35,-524050.41 580524.51,-524064.55 580466.83,-524121.66 580452.19,-524150.27 580423.35,-524178.76 580394.4,-524207.26 580365.56,-524235.87 580336.61,-524292.98 580307.65,-524350.2 580278.7,-524464.52 580249.64,-524607.68 580249.19,-524750.72 580248.86,-524922.38 580248.41,-525065.54 580247.96,-525151.25 580218.9,-525322.91 580218.45,-525380.24 580247.07,-525637.83 580275.24,-525723.77 580303.74,-525981.36 580331.91,-526038.69 580331.69,-526095.8 580302.74,-526153.02 580302.62,-526238.95 580331.13,-526324.78 580330.9,-526382 580301.95,-526410.5 580273.11,-526439.11 580273,-526467.72 580272.89,-526524.93 580243.94,-526582.04 580214.99,-526610.54 580186.15,-526639.15 580157.2,-526667.76 580157.09,-526753.58 580156.86,-526810.69 580127.91,-526839.3 580127.91,-526953.74 580127.58,-527039.68 580127.35,-527182.83 580155.74,-527240.16 580184.36,-527440.43 580198.22,-527440.65 580255.9,-527612.3 580255.45,-527612.41 580313.02,-527641.13 580312.91,-528046.79 580549.35,-528056.75 580575.89,-528081.08 580632.32,-528213.84 580697.59,-528291.28 580676.56,-528369.65 580591.28,-528391.96 580473.01,-528436.21 580374.54,-528387.84 580277.97,-528327.64 580224.6,-528366.48 580216.22,-528333.73 580155.62,-528357.09 580107.33,-528396.09 580123.08,-528370.5 580061.61,-528384.14 579960.77,-528442.08 579924.1,-528459.86 579868.78),(-420671.2 587556.03,-420665.86 587463.19,-420644.5 587432.59,-420587.68 587412.22,-420564.53 587428.43,-420530.56 587430.92,-420463.03 587439.23,-420424.3 587425.31,-420377.86 587427.8,-420217.89 587361.33,-420144.14 587254.33,-419968.6 587145.27,-419864.73 587043.47,-419817.52 586955.45,-419788.8 586897.88,-419788.69 586869.03,-419788.69 586811.35,-419788.47 586667.25,-419788.47 586638.52,-419759.75 586552,-419759.75 586523.26,-419788.24 586465.58,-419816.63 586263.8,-419845.02 586090.86,-419844.79 585917.92,-419844.79 585889.08,-419844.68 585773.83,-419815.85 585629.73,-419787.13 585514.47,-419772.66 585500.05,-419758.41 585485.75,-419729.69 585428.06,-419715.33 585413.64,-419658.11 585384.91,-419643.75 585370.6,-419629.39 585356.18,-419615.14 585341.76,-419600.67 585284.19,-419543.45 585284.19,-419543.34 585226.62,-419457.4 585212.31,-419443.15 585197.89,-419428.79 585183.47,-419371.46 585154.74,-419228.31 585140.54,-419228.31 585082.86,-419199.7 585097.28,-419027.93 585097.5,-418999.21 585097.5,-418827.45 585097.73,-418627.07 585069.22,-418426.58 585040.6,-418412.33 585026.29,-418397.97 585011.76,-418369.37 585011.87,-418340.76 585011.87,-418254.82 584983.14,-418197.49 584954.41,-417825.35 584926.02,-417796.63 584926.13,-417768.02 584926.13,-417739.41 584926.13,-417710.8 584926.13,-417682.19 584926.24,-417596.25 584926.36,-417510.31 584897.63,-417453.09 584868.9,-417438.73 584854.48,-417424.37 584840.06,-417410.13 584825.75,-417395.77 584811.33,-417309.83 584782.6,-417195.28 584753.87,-417052.12 584725.25,-417037.87 584710.94,-417023.4 584696.41,-416880.24 584667.79,-416866 584653.48,-416851.64 584639.06,-416737.09 584610.33,-416722.73 584596.02,-416708.37 584538.34,-416651.04 584524.03,-416636.79 584509.61,-416622.43 584495.19,-416608.18 584480.88,-416593.71 584466.46,-416579.46 584452.04,-416565.1 584437.62,-416507.77 584408.89,-416450.55 584409,-416393.33 584437.84,-416379.08 584452.26,-416364.72 584466.69,-416350.48 584481.22,-416336.12 584495.53,-416307.51 584495.53,-416293.26 584481.22,-416278.9 584466.8,-416107.02 584452.6,-416121.38 584395.03,-416149.99 584366.08,-416178.49 584337.24,-416207.1 584308.39,-416221.34 584279.55,-416307.28 584293.86,-416335.89 584308.28,-416321.53 584250.6,-416292.81 584164.19,-416263.98 583991.37,-416249.62 583976.84,-416235.37 583962.53,-416221.01 583948.11,-416206.65 583933.8,-416177.93 583847.39,-416149.21 583789.71,-416120.6 583732.14,-416106.13 583674.57,-416048.91 583660.15,-416034.55 583645.73,-416020.08 583530.47,-415934.25 583530.59,-415934.14 583473.02,-415905.53 583487.44,-415876.92 583487.44,-415848.2 583473.13,-415848.31 583530.7,-415791.09 583545.12,-415776.85 583559.65,-415762.49 583573.96,-415748.24 583588.49,-415733.88 583602.8,-415676.66 583617.33,-415662.52 583732.69,-415634.02 583790.38,-415634.13 583905.63,-415634.25 583992.04,-415634.25 584049.72,-415662.97 584107.29,-415691.91 584337.91,-415691.91 584395.48,-415692.02 584453.16,-415720.74 584539.57,-415720.85 584597.14,-415720.85 584625.98,-415749.57 584741.24,-415749.68 584798.92,-415749.8 584885.33,-415778.52 584971.74,-415778.52 585000.58,-415778.63 585058.27,-415807.35 585173.52,-415807.35 585202.25,-415807.46 585231.09,-415807.79 585519.28,-415807.79 585548.12,-415822.15 585605.81,-415764.82 585605.81,-415779.29 585663.49,-415779.41 585807.59,-415751.02 586009.37,-415722.63 586182.3,-415694.02 586239.99,-415694.14 586268.72,-415694.14 586297.56,-415679.89 586384.09,-415622.67 586384.09,-415608.53 586528.3,-415579.92 586585.98,-415551.42 586672.39,-415551.65 586874.18,-415580.37 586960.59,-415609.2 587075.85,-415609.42 587277.52,-415609.53 587421.73,-415638.25 587450.46,-415666.86 587479.3,-415695.58 587536.88,-415709.94 587565.61,-415795.77 587579.92,-415843.3 587604.18,-415853.1 587623.18,-416053.59 587637.27,-416082.2 587637.27,-416139.41 587608.31,-416196.63 587579.47,-416253.85 587550.52,-416339.68 587521.67,-416368.29 587492.83,-416396.9 587492.72,-416454.11 587492.72,-416568.66 587492.5,-416597.27 587492.5,-416654.6 587492.38,-416940.91 587506.58,-416955.27 587564.15,-416955.5 587679.41,-416955.5 587708.25,-416969.75 587737.1,-417055.68 587751.29,-417198.84 587780.03,-417227.45 587779.91,-417256.17 587779.91,-417342 587779.8,-417399.22 587750.96,-417685.53 587721.78,-417742.75 587692.83,-417857.3 587692.72,-418000.45 587721.33,-418115 587750.06,-418229.55 587778.8,-418258.16 587807.53,-418286.88 587836.26,-418344.1 587865.1,-418372.82 587864.99,-418401.43 587864.99,-418430.03 587893.72,-418515.97 587922.45,-418630.52 587951.18,-418831.01 587994.22,-418880.18 588005.4,-418985.11 587990.98,-419286.95 587988,-419624.67 587924.86,-419922.88 587694.24,-420105 587766.26,-420193.81 587759,-420300.28 587797.68,-420444.24 587724.22,-420594.07 587619.93,-420637.41 587569.24,-420671.2 587556.03),(-442968.71 592118.65,-442961.01 592099.4,-442910.96 592017.99,-442898.3 591992.14,-442891.7 591958.59,-442890.6 591708.86,-442898.86 591606.55,-442890.6 591551.56,-442868.83 591495.55,-442839.26 591441.09,-442815.15 591418.54,-442752.92 591380.42,-442722.59 591366.42,-442707.02 591345.42,-442664.24 591324.41,-442629.23 591315.08,-442607.46 591314.3,-442583.34 591323.64,-442493.88 591322.08,-442328.58 591367.33,-442139.72 591432.62,-442066.05 591458.21,-442038.82 591454.32,-442014.71 591470.65,-441924.47 591491.66,-441817.9 591510.33,-441691.88 591520.44,-441536.31 591527.05,-441519.97 591541.05,-441506.74 591541.44,-441495.86 591533.66,-441467.46 591533.66,-441459.3 591529.39,-441435.18 591536,-441424.29 591535.61,-441419.23 591527.83,-441401.74 591524.33,-441309.94 591524.33,-441284.27 591513.44,-441260.16 591525.11,-441166.03 591521.22,-441030.81 591510.41,-441000.47 591501.84,-440985.69 591491.74,-440969.36 591497.94,-440924.24 591493.29,-440811.45 591483.17,-440800.55 591476.17,-440729.77 591490.18,-440598.31 591497.94,-440572.64 591510.41,-440521.3 591512.73,-440504.18 591524.4,-440459.07 591532.96,-440440.39 591532.96,-440415.5 591543.06,-440396.83 591539.18,-440376.61 591550.06,-440376.61 591564.85,-440368.84 591574.97,-440262.26 591643.43,-440232.7 591657.42,-440182.14 591720.43,-440132.35 591766.32,-440120.68 591796.67,-440116.8 591818.44,-440138.58 591845.67,-440147.91 591873.68,-440193.81 591932.79,-440252.15 591981.81,-440296.49 592048.69,-440345.49 592108.6,-440437.29 592177.05,-440452.85 592204.28,-440449.73 592218.27,-440469.96 592256.4,-440488.63 592278.18,-440510.41 592289.06,-440536.08 592286.73,-440564.08 592279.73,-440644.21 592278.96,-440700.21 592285.96,-440766.33 592310.84,-440784.22 592331.06,-440788.89 592346.63,-440802.89 592359.07,-440827.78 592366.86,-440853.23 592430.64,-440872.44 592473.47,-440941.75 592529.58,-440953.3 592542.23,-440977.5 592548.83,-441007.21 592542.77,-441038.56 592531.23,-441091.91 592500.42,-441100.16 592477.87,-441121.61 592467.42,-441139.21 592471.83,-441171.11 592462.47,-441198.13 592413.47,-441244.81 592392.46,-441268.14 592367.95,-441301.2 592369.51,-441335.81 592351.62,-441357.21 592318.17,-441367.72 592297.17,-441406.22 592288.61,-441439.66 592296,-441479.34 592289.39,-441498.78 592284.72,-441521.73 592326.73,-441499.95 592353.56,-441496.06 592369.9,-441482.06 592370.68,-441456.39 592397.9,-441440.22 592429.74,-441452.73 592490.32,-441460.51 592547.88,-441491.63 592589.89,-441533.63 592630.34,-441617.64 592695.67,-441682.98 592765.69,-441707.88 592817.03,-441767 592863.7,-441814.04 592859.84,-441833.84 592869.75,-441870.15 592842.24,-441859.15 592810.33,-441865.75 592765.23,-441884.45 592728.93,-441963.65 592778.44,-442049.47 592821.94,-442104.71 592859.27,-442111.71 592873.28,-442115.59 592892.72,-442124.15 592909.84,-442149.82 592927.73,-442170.82 592927.73,-442220.61 592851.5,-442225.28 592779.15,-442237.72 592748.04,-442294.51 592678.03,-442310.07 592671.02,-442360.63 592678.03,-442377.74 592670.25,-442400.3 592646.92,-442429.08 592589.35,-442430.64 592558.24,-442481.98 592466.44,-442583.12 592322.17,-442624.94 592297.97,-442649.14 592288.62,-442676.63 592286.96,-442696.44 592277.62,-442742.65 592246.81,-442765.2 592248.46,-442790.49 592237.46,-442793.8 592229.76,-442793.8 592217.66,-442814.7 592183.56,-442840.01 592161.56,-442863.1 592159.9,-442888.95 592166.5,-442919.21 592194.56,-442932.41 592197.86,-442951.11 592195.66,-442962.66 592176.41,-442968.71 592118.65),(-438256.29 592574.16,-438230 592561.89,-438192.14 592569.34,-437999.7 592543.86,-437962.62 592597.16,-437940.37 592648.53,-437955.99 592661.46,-437939.62 592686.66,-437933.34 592696.35,-437908.75 592739.87,-437864.64 592795.92,-437832.24 592822.98,-437808.04 592836.7,-437761.2 592844.14,-437717.52 592844.7,-437628.48 592831.6,-437563.31 592813.17,-437385.21 592783.73,-437331.89 592769.89,-437154.46 592723.85,-437051.78 592687.25,-436939.17 592626.27,-436894.38 592600.23,-436862.76 592572.79,-436842.86 592544.95,-436841.3 592528.5,-436849.88 592519.08,-436847.14 592492.43,-436854.18 592482.63,-436855.35 592468.13,-436849.1 592457.15,-436832.32 592454.8,-436804.6 592458.32,-436792.11 592449.31,-436780.8 592431.67,-436766.35 592421.47,-436739.03 592418.34,-436717.95 592407.36,-436704.68 592376.39,-436705.85 592362.66,-436694.91 592342.67,-436657.05 592311.71,-436619.97 592296.81,-436596.94 592301.51,-436572.74 592312.49,-436553.62 592306.22,-436529.8 592281.91,-436510.29 592258.78,-436489.21 592246.24,-436446.66 592235.26,-436404.89 592200.38,-436376.41 592187.83,-436340.88 592182.34,-436308.09 592190.96,-436282.72 592183.52,-436245.25 592190.57,-436206.04 592207.51,-436154.51 592271.01,-436139.69 592285.91,-436108.46 592311.78,-436093.62 592338.45,-436068.64 592378.43,-436066.3 592406.66,-436088.16 592463.11,-436088.16 592483.49,-436072.55 592508.59,-436033.51 592553.27,-435999.95 592653.64,-435995.26 592699.1,-436017.12 592776.73,-436037.42 592808.09,-436058.5 592823.77,-436094.41 592828.47,-436117.04 592817.49,-436173.26 592837.88,-436202.14 592855.13,-436222.44 592880.22,-436244.49 592913.28,-436265.38 592944.51,-436287.68 592985.28,-436315.34 593041.73,-436326.27 593048,-436376.23 593027.62,-436402.78 593022.13,-436449.61 593023.7,-436539.39 593045.65,-436556.57 593058.98,-436590.14 593069.18,-436620.59 593064.47,-436684.59 593035.46,-436722.29 593005.42,-436760.33 592975.08,-436793.89 592960.98,-436855.56 592949.21,-436911 592957.84,-436966.42 592991.55,-437017.16 593048,-437077.27 593130.32,-437124.56 593201.28,-437144.86 593220.88,-437168.28 593235.78,-437186.23 593234.21,-437216.68 593223.24,-437249.86 593216.56,-437322.08 593198.14,-437360.33 593176.97,-437406.78 593155.41,-437438 593147.57,-437450.11 593152.67,-437460.26 593148.75,-437463.37 593142.08,-437472.75 593135.42,-437489.91 593140.91,-437526.61 593130.71,-437535.59 593133.07,-437546.13 593143.65,-437588.29 593144.44,-437607.02 593131.9,-437667.52 593116.6,-437701.48 593098.18,-437711.24 593104.84,-437727.25 593096.61,-437751.45 593078.19,-437788.53 593070.34,-437807.65 593061.72,-437836.75 593058.71,-437859.96 593038.59,-437873.62 593033.49,-437879.48 593039.37,-437886.89 593039.76,-437897.43 593019.77,-437906.01 593013.89,-437929.83 593016.64,-437937.25 593003.69,-437953.25 592990.37,-437969.64 592974.69,-437982.91 592964.89,-437990.33 592964.5,-437997.75 592959.01,-438002.04 592940.97,-438006.72 592933.92,-438019.99 592937.84,-438027.41 592935.09,-438039.12 592916.67,-438051.61 592909.22,-438062.54 592904.91,-438080.11 592870.8,-438090.26 592863.35,-438100.01 592851.98,-438114.85 592834.74,-438127.34 592794.36,-438149.98 592792.4,-438174.18 592767.3,-438228.83 592691.26,-438230.39 592676.76,-438221.42 592656.36,-438223.36 592651.27,-438234.68 592647.74,-438244.44 592632.45,-438254.59 592602.26,-438256.29 592574.16),(-481970.87 589414.79,-481970.75 589357.1,-481956.28 589299.53,-481899.06 589285.22,-481841.74 589256.48,-481827.38 589242.17,-481813.01 589227.75,-481798.77 589213.44,-481784.29 589155.87,-481698.36 589141.56,-481669.75 589141.56,-481655.5 589156.09,-481641.14 589170.51,-481612.53 589170.51,-481598.28 589156.2,-481583.81 589141.78,-481526.59 589113.05,-481512.23 589098.74,-481512.23 589070.01,-481526.37 589012.33,-481583.59 589012.21,-481569.23 588954.53,-481554.75 588940.11,-481468.93 588911.49,-481411.6 588882.87,-481297.05 588868.67,-481282.91 588955.19,-481268.66 588969.62,-481211.44 588984.15,-481226.03 589099.41,-481254.64 589128.14,-481269.22 589243.4,-481212 589257.83,-481183.39 589257.94,-481154.78 589257.94,-481040.24 589287,-481026.1 589301.54,-481011.85 589359.22,-480925.91 589359.34,-480911.88 589474.71,-480897.63 589489.02,-480840.42 589517.97,-480783.2 589518.09,-480582.71 589489.69,-480496.88 589489.91,-480439.56 589490.02,-480382.23 589461.29,-480296.4 589461.52,-480282.15 589476.05,-480267.79 589490.36,-480182.07 589519.43,-480167.82 589533.85,-480153.46 589548.27,-480139.22 589562.8,-480139.55 589735.64,-480168.27 589764.37,-480196.99 589793.21,-480225.6 589821.95,-480254.32 589850.68,-480283.15 589937.1,-480311.87 589994.67,-480340.81 590138.66,-480369.65 590225.08,-480398.48 590340.23,-480412.95 590455.5,-480441.67 590455.38,-480441.67 590484.23,-480413.06 590484.34,-480427.53 590513.07,-480456.25 590570.65,-480484.97 590628.22,-480499.44 590714.64,-480642.6 590728.73,-480699.93 590757.35,-480728.54 590786.19,-480900.42 590814.59,-481014.85 590814.36,-481129.29 590785.3,-481215.12 590756.34,-481272.34 590727.39,-481329.55 590698.43,-481358.16 590684.01,-481372.41 590626.32,-481400.8 590568.63,-481429.41 590510.95,-481457.91 590482.1,-481472.04 590424.42,-481529.26 590409.77,-481557.87 590380.93,-481586.37 590352.08,-481614.98 590323.13,-481643.59 590294.28,-481672.08 590265.44,-481700.69 590251.02,-481714.94 590193.33,-481729.08 590135.65,-481500.1 590121.67,-481485.74 590107.36,-481485.62 590049.79,-481499.76 589992.1,-481585.59 589977.45,-481614.2 589948.61,-481642.81 589934.19,-481657.06 589876.5,-481685.55 589847.66,-481714.16 589818.7,-481728.3 589789.86,-481785.52 589775.33,-481814.13 589746.48,-481842.74 589717.53,-481871.24 589688.69,-481899.84 589674.26,-481914.09 589616.58,-481942.37 589443.63,-481970.87 589414.79),(-474597.74 589223.7,-474596.75 589211.41,-474530.94 588983.02,-474503.77 588929.92,-474454.8 588882.05,-474353.16 588831.23,-474265.01 588810.49,-474170.64 588778.34,-474127.56 588747.74,-474079.37 588725.45,-474029.71 588714.14,-473979.05 588709.68,-473948.62 588716.52,-473931.13 588727.19,-473909.05 588730.66,-473891.41 588729.08,-473880.92 588731.84,-473868.86 588744.12,-473866.92 588752.07,-473869.77 588757.51,-473878.33 588761.4,-473901.41 588762.43,-473930.69 588762.17,-473952.99 588765.02,-473969.12 588774.42,-473988.51 588786.76,-474003.92 588803.48,-474018.79 588820.23,-474026.56 588837.4,-474033.22 588857.88,-474037.52 588873.67,-474036.93 588880.06,-474038.04 588887.66,-474041.67 588897.51,-474044.91 588910.35,-474041.99 588922.12,-474039.23 588941.77,-474044.42 588966.14,-474059.51 588992.44,-474117.59 589057.51,-474149.37 589087.09,-474182.94 589123.74,-474208.95 589162.07,-474226.2 589204.49,-474243.85 589245.26,-474265.38 589278.7,-474285.33 589304.62,-474288.71 589317.85,-474289 589328.28,-474293.12 589338.6,-474300.63 589345.07,-474319.82 589346.11,-474344.19 589344.04,-474363.37 589343,-474379.44 589341.71,-474390.85 589339.11,-474401.74 589333.41,-474409 589326.93,-474414.19 589322,-474417.82 589319.15,-474423.28 589318.52,-474430.67 589317.87,-474438.97 589315.02,-474446.23 589310.09,-474450.89 589305.56,-474452.45 589302.32,-474455.18 589299.08,-474459.06 589296.74,-474466.45 589294.54,-474474.75 589291.95,-474481.61 589288.96,-474489.01 589285.99,-474497.3 589279.76,-474502.88 589276.78,-474509.31 589275.93,-474513.16 589277.94,-474521.59 589276.66,-474533.69 589270.6,-474542.49 589264.38,-474546.16 589261.63,-474551.84 589258.51,-474550.74 589254.47,-474553.49 589248.42,-474555.74 589245.6,-474562.23 589246.24,-474572.73 589245.22,-474574.67 589247.42,-474580.77 589246.89,-474583.87 589244.04,-474583.23 589240.68,-474586.47 589238.73,-474589.58 589238.34,-474592.3 589235.49,-474595.42 589232.25,-474597.74 589223.7),(-415100.69 580649.7,-414986.14 580635.4,-414957.53 580635.51,-414871.71 580664.35,-414757.16 580678.99,-414757.27 580707.83,-414728.55 580693.41,-414585.5 580679.21,-414571.14 580621.54,-414556.78 580607.12,-414542.42 580592.81,-414513.81 580535.13,-414513.7 580506.29,-414513.7 580477.56,-414499.34 580463.14,-414485.09 580448.72,-414456.37 580391.15,-414427.65 580333.59,-414413.18 580275.91,-414355.96 580261.49,-414298.75 580261.6,-414155.59 580261.71,-414098.26 580232.99,-413983.71 580204.37,-413969.46 580189.95,-413955.1 580175.53,-413869.16 580175.64,-413811.95 580204.48,-413754.73 580204.59,-413726.12 580204.59,-413711.87 580219.12,-413697.51 580233.43,-413640.29 580262.38,-413626.04 580276.8,-413611.68 580291.22,-413597.43 580305.64,-413597.54 580363.32,-413597.54 580421,-413597.77 580536.25,-413626.38 580593.81,-413655.1 580622.65,-413655.1 580651.38,-413640.74 580680.22,-413698.07 580694.53,-413726.67 580723.37,-413784 580752.1,-413869.94 580780.82,-413927.16 580809.55,-413955.88 580838.39,-413984.49 580852.81,-413998.96 580939.22,-414027.57 580967.95,-414056.29 580996.79,-414084.9 581025.62,-414099.26 581140.87,-414156.59 581155.07,-414299.75 581183.8,-414356.97 581183.68,-414414.3 581183.68,-414500.12 581212.3,-414672 581241.03,-414786.44 581240.8,-414815.05 581211.97,-414843.65 581197.66,-414843.65 581139.98,-414900.87 581125.45,-414929.48 581111.03,-414943.73 581024.62,-414972.34 580995.67,-414986.48 580938.1,-415043.81 580937.99,-415058.06 580851.58,-415086.55 580793.9,-415100.69 580649.7),(-434771.02 592659.96,-434768.55 592625.56,-434748.4 592570.01,-434705.96 592486.44,-434670.22 592425.62,-434652.87 592390.42,-434640.49 592368.03,-434602.96 592307.55,-434582.13 592272.15,-434546.88 592222.55,-434529.5 592193.88,-434526.03 592183.91,-434543.9 592173.95,-434549.11 592168.21,-434543.65 592157.24,-434526.52 592156.49,-434509.16 592164.47,-434489.54 592157.24,-434481.36 592148.27,-434465.72 592144.27,-434463.24 592137.05,-434447.11 592129.07,-434432.71 592136.81,-434408.39 592132.82,-434359.74 592156.25,-434347.09 592168.21,-434343.11 592185.16,-434321.77 592201.11,-434306.88 592217.81,-434297.95 592214.07,-434288.02 592223.54,-434291.74 592235.01,-434273.12 592250.46,-434242.6 592287.1,-434227.71 592323.99,-434221.75 592353.16,-434221.51 592383.31,-434221 592400.52,-434228.7 592419.7,-434238.38 592427.44,-434283.56 592442.39,-434367.43 592481.78,-434379.35 592483.52,-434411.86 592504.2,-434416.08 592511.19,-434448.6 592533.62,-434455.04 592535.86,-434497.56 592569.93,-434526.28 592598.79,-434605.24 592698.34,-434654.38 592768.63,-434666.8 592789.08,-434674.23 592811.02,-434674.23 592832.95,-434662.32 592876.32,-434656.87 592894.77,-434661.83 592905.23,-434677.21 592883.3,-434682.67 592861.86,-434695.08 592840.42,-434703.03 592816.5,-434719.91 592768.63,-434725.86 592737.73,-434727.84 592700.84,-434742.74 592684.39,-434771.02 592659.96),(-526109 586989.57,-526108.78 586931.89,-526080.06 586903.16,-526051.22 586816.86,-526022.39 586730.44,-526021.94 586586.46,-526021.84 586528.78,-525993.12 586500.06,-525978.64 586442.49,-525892.71 586428.29,-525863.99 586399.56,-525806.66 586370.93,-525749.43 586342.31,-525720.72 586313.59,-525692 586284.86,-525663.28 586256.13,-525634.56 586227.4,-525548.73 586198.78,-525491.4 586170.16,-525425.44 586174.56,-525317.54 586223.48,-525196.18 586425.72,-525191.62 586444.72,-525163.23 586531.24,-525163.56 586646.49,-525177.92 586660.8,-525192.28 586675.22,-525206.64 586689.53,-525221 586703.84,-525235.25 586718.26,-525249.72 586732.68,-525278.67 586876.56,-525293.03 586890.98,-525436.18 586919.37,-525464.79 586919.26,-525493.4 586904.84,-525479.27 586962.52,-525450.77 586991.37,-525422.16 587020.21,-525422.38 587077.89,-525436.63 587092.19,-525579.68 587091.76,-525608.4 587091.76,-525637 587091.64,-525651.25 587077.22,-525665.5 587062.68,-525684.43 587058.11,-525680.19 587192.37,-525651.81 587250.05,-525637.44 587278.89,-525694.78 587293.19,-525809.22 587292.87,-525823.57 587278.44,-525837.82 587263.91,-525852.06 587249.49,-525866.31 587235.06,-525880.68 587220.65,-525908.74 587047.71,-525922.98 587033.18,-526008.81 587032.94,-526066.14 587032.84,-526080.39 587018.42,-526094.64 587003.89,-526109 586989.57),(-415391.35 584424.65,-415391.12 584251.72,-415362.51 584251.83,-415348.15 584194.15,-415319.43 584136.58,-415290.83 584078.9,-415261.99 583992.49,-415233.38 583934.92,-415218.91 583920.5,-415204.66 583906.19,-415190.3 583891.65,-415176.05 583877.35,-415161.69 583862.93,-415147.33 583848.62,-415118.73 583790.94,-415090 583733.37,-415075.64 583718.94,-415018.31 583690.1,-415004.07 583675.8,-414989.59 583661.38,-414975.35 583647.07,-414960.99 583632.53,-414946.74 583618.23,-414932.38 583603.81,-414918.02 583589.5,-414903.54 583474.25,-414874.94 583488.55,-414817.72 583503.09,-414803.47 583560.77,-414789.11 583575.19,-414703.28 583604.03,-414588.84 583632.98,-414574.6 583647.51,-414560.24 583661.93,-414545.99 583676.35,-414546.43 584022.22,-414575.26 584252.73,-414603.98 584339.14,-414632.7 584367.87,-414646.95 584396.71,-414704.28 584411.02,-414847.44 584439.63,-414876.05 584468.47,-414904.77 584497.2,-414961.99 584525.93,-415019.32 584540.35,-415033.68 584598.04,-415062.4 584626.76,-415076.65 584655.61,-415105.26 584641.07,-415133.86 584612.23,-415219.69 584583.28,-415305.63 584554.44,-415362.85 584540.02,-415362.74 584424.65,-415391.35 584424.65),(-517545.35 582529.66,-517530.65 582385.69,-517516.18 582328.12,-517344.42 582314.03,-517258.59 582314.37,-517201.37 582343.32,-517144.15 582343.43,-517115.54 582343.54,-517001.11 582372.61,-516915.39 582401.67,-516901.14 582416.2,-516886.78 582430.51,-516872.64 582445.04,-516858.28 582459.46,-516801.06 582488.42,-516786.93 582502.84,-516772.57 582517.26,-516758.32 582531.79,-516744.07 582546.1,-516729.82 582560.63,-516701.32 582618.31,-516686.96 582632.73,-516672.82 582647.26,-516644.44 582733.67,-516630.08 582748.09,-516615.83 582762.62,-516587.44 582849.14,-516587.55 582877.87,-516616.27 582935.44,-516630.75 583021.85,-516659.36 583021.74,-516659.47 583050.58,-516630.86 583050.69,-516630.97 583079.42,-516716.8 583093.62,-516888.56 583121.9,-516917.28 583150.63,-516946 583179.47,-517003.33 583208.08,-517060.66 583236.7,-517117.88 583236.59,-517174.99 583207.64,-517203.6 583178.69,-517232.09 583149.84,-517260.7 583121,-517317.81 583106.47,-517331.84 582991.22,-517345.97 582904.7,-517403.19 582904.59,-517417.33 582846.91,-517445.83 582789.23,-517474.21 582702.71,-517474.21 582673.87,-517473.99 582616.3,-517488.02 582529.89,-517545.35 582529.66),(-527916.87 576509.79,-527902.51 576480.95,-527887.93 576423.39,-527687.67 576409.53,-527573.12 576395.56,-527559.09 576453.12,-527559.54 576626.03,-527559.65 576683.6,-527531.26 576741.27,-527502.76 576798.95,-527502.99 576885.35,-527517.57 577000.59,-527403.13 577015.23,-527317.31 577029.88,-527317.53 577087.55,-527260.31 577102.08,-527203.09 577116.62,-527203.2 577145.45,-527174.59 577145.57,-527189.29 577260.69,-527203.65 577318.26,-527260.87 577303.73,-527289.36 577274.78,-527317.97 577245.94,-527375.08 577231.41,-527389.33 577173.73,-527417.83 577116.06,-527446.33 577087.22,-527460.46 577058.38,-527517.68 577043.74,-527546.29 577014.79,-527603.4 576985.84,-527632.01 576971.42,-527617.65 576942.69,-527588.81 576856.29,-527588.59 576798.73,-527617.09 576769.89,-527645.7 576740.94,-527674.2 576712.1,-527702.69 576654.43,-527716.83 576596.75,-527773.94 576582.11,-527831.16 576553.16,-527859.65 576524.32,-527916.87 576509.79),(-425705.88 590925.16,-425677.27 590925.16,-425662.8 590809.89,-425634.08 590752.32,-425619.72 590737.89,-425605.47 590723.47,-425576.63 590637.05,-425562.27 590622.63,-425548.03 590608.32,-425533.67 590593.9,-425476.34 590579.59,-425476.22 590521.9,-425419.01 590507.59,-425404.76 590493.17,-425390.29 590478.75,-425275.74 590450.13,-425161.3 590450.24,-425147.05 590464.77,-425132.69 590479.08,-425118.44 590493.62,-425089.95 590637.72,-425090.06 590666.57,-425104.42 590724.14,-425132.92 590709.61,-425161.52 590680.77,-425190.13 590680.77,-425218.85 590695.19,-425233.33 590752.76,-425247.57 590810.45,-425304.9 590824.76,-425419.45 590824.54,-425505.28 590824.43,-425534 590838.85,-425519.75 590867.69,-425505.39 590925.38,-425619.94 590939.58,-425648.66 590968.42,-425677.27 590968.31,-425705.88 590954,-425705.88 590925.16),(-494804.67 587628.21,-494790.31 587599.48,-494761.59 587541.91,-494747.23 587527.49,-494689.9 587498.76,-494632.57 587470.14,-494575.24 587441.41,-494560.99 587427.1,-494546.52 587412.68,-494403.47 587413.01,-494374.86 587413.12,-494360.5 587398.81,-494346.14 587384.39,-494288.92 587384.5,-494231.71 587399.04,-494246.18 587456.72,-494274.9 587485.45,-494289.15 587514.18,-494375.09 587513.96,-494389.56 587571.64,-494418.28 587600.37,-494447 587657.95,-494475.72 587686.68,-494504.33 587715.41,-494533.16 587801.82,-494561.99 587859.29,-494576.24 587888.13,-494633.57 587902.33,-494662.18 587916.75,-494662.07 587859.06,-494604.74 587844.75,-494590.49 587830.44,-494590.38 587772.87,-494618.88 587743.92,-494647.48 587715.07,-494661.73 587686.23,-494747.45 587671.59,-494776.06 587642.63,-494804.67 587628.21),(-414674.34 583272.7,-414617.01 583258.39,-414588.4 583258.39,-414559.79 583272.81,-414559.68 583215.24,-414502.46 583229.66,-414388.02 583258.61,-414359.41 583258.61,-414273.48 583258.72,-414158.93 583258.84,-414101.71 583244.53,-414116.18 583302.21,-414144.79 583330.94,-414159.15 583359.78,-414244.98 583345.25,-414273.59 583345.25,-414302.31 583373.97,-414359.53 583373.86,-414388.14 583345.02,-414416.74 583330.71,-414431.22 583445.96,-414445.58 583503.53,-414388.25 583503.65,-414388.36 583532.49,-414359.75 583532.49,-414374.11 583561.22,-414402.72 583590.06,-414417.08 583618.9,-414502.91 583604.25,-414531.51 583575.41,-414560.12 583546.57,-414588.73 583517.73,-414617.34 583503.31,-414631.59 583445.74,-414631.59 583388.06,-414617.12 583330.38,-414674.34 583330.38,-414674.34 583272.7),(-489156.16 587608.75,-489155.35 587596.93,-489146.79 587594.64,-489145.84 587575.33,-489136.18 587575.51,-489133.72 587578.45,-489128.7 587581.39,-489113.46 587572.96,-489107.69 587563.87,-489101.63 587557.06,-489095.57 587553.46,-489082.6 587554.98,-489068.82 587559.81,-489061.19 587565.1,-489058.08 587572.2,-489059.11 587577.41,-489066.88 587582.81,-489073.61 587589.34,-489077.67 587599.09,-489078.66 587610.37,-489083.83 587619.83,-489085.25 587639.61,-489086.85 587649.08,-489092.54 587655.52,-489096.79 587666.78,-489098.59 587675.8,-489106.97 587676.14,-489112.04 587679.2,-489122.02 587678.19,-489134.59 587673.46,-489145.65 587665.68,-489148.85 587660.72,-489151.81 587650.59,-489150.57 587629.19,-489156.16 587608.75),(-527059.71 576972.98,-527059.49 576915.42,-527030.88 576915.53,-527044.91 576800.18,-527044.68 576713.78,-527015.96 576656.32,-527001.6 576641.91,-526987.24 576627.6,-526972.88 576613.18,-526958.52 576598.76,-526958.41 576541.19,-526958.3 576512.36,-526929.47 576426.06,-526915.11 576411.65,-526900.75 576397.34,-526886.39 576382.92,-526829.06 576354.31,-526771.73 576325.69,-526685.9 576325.92,-526600.18 576340.56,-526614.66 576398.13,-526629.35 576542.09,-526743.79 576541.76,-526743.9 576599.43,-526772.51 576584.9,-526801.12 576584.79,-526858.44 576613.4,-526887.06 576627.81,-526901.64 576714.22,-526930.36 576742.94,-526959.3 576858.07,-526988.02 576915.64,-527016.74 576944.37,-527031.1 576973.1,-527059.71 576972.98),(-534845.62 578016.97,-534759.79 578031.5,-534702.69 578060.57,-534688.44 578074.98,-534674.08 578089.4,-534616.97 578118.35,-534559.86 578147.3,-534545.61 578161.84,-534531.25 578176.25,-534517.12 578190.67,-534502.76 578205.09,-534445.65 578234.04,-534431.4 578248.57,-534417.04 578262.99,-534388.54 578277.53,-534388.54 578306.36,-534331.32 578306.48,-534331.55 578364.04,-534360.04 578349.51,-534388.65 578349.51,-534445.98 578349.29,-534474.48 578334.87,-534488.73 578277.19,-534517.23 578248.35,-534531.37 578219.51,-534588.7 578233.71,-534617.3 578233.6,-534645.8 578204.65,-534674.41 578175.81,-534702.91 578146.97,-534731.41 578118.02,-534759.9 578089.18,-534817.12 578060.23,-534845.62 578045.7,-534845.62 578016.97),(-458811.34 590618.95,-458806.55 590600.5,-458792.98 590584.31,-458780.88 590577.31,-458764.7 590572.97,-458753.41 590574.16,-458736.52 590581.17,-458715.04 590592.54,-458694.39 590606.34,-458685.31 590621.31,-458680.33 590633.85,-458678.01 590653.58,-458685.12 590676.18,-458696.05 590688.83,-458706.96 590691.31,-458720.14 590691.73,-458734.94 590690.43,-458739.15 590687.97,-458740.54 590683.7,-458745.32 590682.69,-458749.1 590687.04,-458755.04 590688.49,-458771.92 590689.84,-458774.88 590687.28,-458776.41 590679.4,-458783.37 590674.04,-458792.66 590665.34,-458802.81 590653.73,-458810.83 590641.29,-458811.34 590618.95),(-420891.31 587155.89,-420891.2 587127.05,-420833.98 587112.63,-420748.04 587083.9,-420690.71 587055.17,-420676.46 587040.86,-420662.1 587026.43,-420576.16 586997.71,-420518.83 586968.98,-420504.58 586954.55,-420490.11 586896.98,-420146.58 586911.74,-420132.33 586926.27,-420132.44 587012.68,-420161.16 587041.53,-420175.52 587127.93,-420232.74 587142.25,-420261.46 587170.98,-420290.07 587199.81,-420519.17 587228.32,-420547.78 587228.32,-420576.39 587228.22,-420691.04 587256.94,-420748.26 587256.84,-420834.09 587227.88,-420862.7 587213.56,-420862.59 587155.89,-420891.31 587155.89),(-495068.16 590163.37,-495053.47 590019.27,-495039.11 590004.84,-494981.78 589976.22,-494867.34 589976.45,-494853.09 589990.87,-494824.59 590048.67,-494810.46 590135.09,-494753.24 590149.62,-494696.02 590164.15,-494681.99 590250.68,-494667.63 590265.11,-494653.38 590279.53,-494639.14 590308.37,-494667.74 590308.37,-494667.74 590337.1,-494639.14 590337.21,-494639.25 590366.06,-494725.07 590351.41,-494782.29 590322.46,-494839.4 590293.5,-494868.01 590264.55,-494925.12 590235.59,-494953.72 590206.75,-495010.94 590177.79,-495068.16 590163.37),(-471568.39 590819.62,-471568.28 590790.77,-471539.67 590790.89,-471525.09 590617.94,-471524.76 590473.83,-471553.14 590329.72,-471552.92 590243.31,-471523.98 590099.2,-471509.62 590084.78,-471495.37 590070.47,-471480.9 590056.05,-471366.46 590041.96,-471381.38 590358.9,-471381.6 590445.32,-471381.71 590531.74,-471381.93 590618.27,-471381.93 590647.12,-471410.65 590675.85,-471425.35 590877.53,-471453.96 590863,-471539.78 590834.04,-471568.39 590819.62),(-515629.54 583168.51,-515614.62 582938.12,-515585.79 582851.71,-515571.32 582794.15,-515399.66 582808.9,-515371.05 582809.01,-515342.45 582809.12,-515328.2 582823.54,-515299.7 582881.34,-515285.56 582938.91,-515228.23 582939.13,-515228.45 583025.54,-515199.85 583025.54,-515200.18 583140.79,-515171.57 583140.9,-515186.04 583198.47,-515200.4 583227.31,-515229.01 583212.78,-515343.45 583212.44,-515515.21 583212,-515572.32 583183.04,-515629.54 583168.51),(-520886.82 579985.62,-520872.35 579899.32,-520843.52 579841.75,-520814.69 579726.62,-520800.22 579712.2,-520743 579712.31,-520685.78 579726.96,-520671.75 579784.52,-520657.39 579798.94,-520643.15 579813.47,-520643.37 579871.04,-520657.84 579957.45,-520686.45 579957.34,-520686.45 579986.17,-520657.84 579986.29,-520672.31 580015.01,-520686.67 580043.85,-520743.89 580029.21,-520801 580000.26,-520829.61 580000.15,-520858.22 580000.04,-520886.82 579985.62),(-471122.34 589638.94,-471122.23 589552.52,-471107.75 589538.1,-471093.5 589523.79,-471079.14 589509.37,-471064.78 589495.06,-471050.31 589408.64,-470935.76 589423.17,-470921.63 589437.7,-470921.74 589524.12,-470921.85 589552.97,-470907.49 589610.54,-470878.88 589610.65,-470878.99 589668.34,-470850.38 589668.34,-470864.97 589754.76,-470879.21 589783.6,-471050.98 589768.73,-471079.59 589754.31,-471093.84 589696.62,-471122.34 589638.94),(-414815.49 581543.4,-414815.38 581514.67,-414786.77 581514.67,-414772.52 581456.99,-414758.05 581442.57,-414743.8 581428.26,-414729.44 581413.84,-414672.11 581385.12,-414500.35 581370.92,-414514.71 581399.76,-414543.43 581428.49,-414572.04 581457.33,-414586.4 581514.89,-414643.61 581514.78,-414643.61 581457.22,-414672.22 581457.22,-414672.33 581601.3,-414758.27 581586.66,-414786.88 581557.82,-414815.49 581543.4),(-492778.21 590168.63,-492777.76 589966.94,-492691.93 589981.48,-492606.11 590010.55,-492591.86 590024.97,-492563.36 590082.65,-492549.11 590097.08,-492520.5 590111.61,-492520.61 590169.3,-492492.01 590169.3,-492506.37 590198.14,-492520.73 590226.87,-492578.06 590241.07,-492606.66 590241.07,-492635.27 590240.96,-492692.49 590240.85,-492721.1 590212,-492749.6 590183.05,-492778.21 590168.63),(-433813.21 596270.99,-433801.91 596254.28,-433791.77 596219.23,-433787.27 596193.48,-433775.96 596152.05,-433757.99 596122.65,-433738.03 596109.28,-433698.12 596106.61,-433684.14 596126.66,-433689.47 596153.39,-433699.45 596175.44,-433729.38 596204.84,-433746.02 596225.55,-433767.98 596271.66,-433783.27 596294.38,-433803.9 596297.72,-433813.21 596289.03,-433813.21 596270.99),(-422210.44 588912.27,-422181.84 588912.27,-422167.36 588825.85,-422153 588768.17,-422067.07 588782.69,-422009.85 588811.54,-421952.63 588826.07,-421967.1 588912.49,-421981.46 588970.18,-422038.68 588970.06,-422053.15 589027.75,-422081.76 589056.48,-422096.12 589085.32,-422181.95 589085.22,-422181.84 588969.84,-422210.44 588969.84,-422210.44 588912.27),(-528288.46 576364.71,-528259.85 576364.81,-528245.38 576307.25,-528216.66 576249.68,-528187.81 576192.13,-528173.35 576134.56,-528116.13 576134.79,-528130.49 576163.51,-528159.32 576221.07,-528159.43 576278.64,-528145.18 576293.06,-528130.93 576307.59,-528116.68 576336.43,-528173.91 576350.62,-528202.63 576379.35,-528288.46 576393.54,-528288.46 576364.71),(-482215.46 590561.59,-482211.85 590532.78,-482202.72 590518.67,-482200.72 590503,-482197.57 590494.61,-482184.98 590487.83,-482161.66 590482.65,-482120.95 590481.79,-482043.1 590487.39,-482028.85 590579.99,-482047.55 590623.93,-482080.08 590657.17,-482133.18 590667.8,-482162.78 590643.93,-482189.81 590612.22,-482215.46 590561.59),(-508223.12 585550.02,-508222.9 585463.61,-508165.68 585463.72,-508165.46 585377.31,-508051.02 585391.95,-508036.77 585406.38,-508036.88 585435.22,-508065.6 585463.95,-508079.85 585492.68,-508108.57 585492.68,-508108.79 585579.09,-508080.07 585579.2,-508080.18 585607.93,-508137.4 585593.4,-508194.62 585564.44,-508223.12 585550.02),(-482471.92 589442.51,-482471.69 589356.09,-482414.36 589341.67,-482357.03 589313.05,-482271.21 589313.16,-482213.99 589327.81,-482214.1 589385.38,-482185.49 589385.5,-482185.71 589471.91,-482300.15 589457.27,-482357.37 589442.74,-482357.48 589500.42,-482386.09 589485.89,-482443.31 589456.93,-482471.92 589442.51),(-525701.95 588010.21,-525701.84 587981.36,-525687.48 587967.05,-525601.54 587952.86,-525601.76 588010.54,-525573.15 588010.54,-525573.37 588096.96,-525544.77 588097.07,-525559.13 588125.91,-525573.49 588154.64,-525602.1 588140.11,-525630.59 588111.16,-525659.2 588082.31,-525687.7 588067.89,-525701.95 588010.21),(-411806.52 578693.9,-411806.41 578607.49,-411777.8 578621.8,-411548.82 578636.55,-411548.82 578694.23,-411491.6 578694.23,-411491.6 578723.07,-411720.59 578708.32,-411806.52 578693.9),(-414071.65 581947.72,-414052.84 581937.88,-414042.93 581918.99,-414014.32 581918.99,-414014.32 581947.83,-414033.25 581957.67,-414043.04 581976.67,-414071.65 581976.56,-414071.65 581947.72),(-414443.13 581342.19,-414385.8 581342.19,-414385.91 581399.87,-414414.52 581385.34,-414443.13 581370.92,-414443.13 581342.19),(-504332.95 586424.11,-504247.01 586424.33,-504247.12 586481.9,-504304.34 586467.26,-504332.95 586452.84,-504332.95 586424.11))" - - - - - - - diff --git a/tests/visual_tests/styles/polygon-symbolizer-expressions-all.xml b/tests/visual_tests/styles/polygon-symbolizer-expressions-all.xml deleted file mode 100644 index e81f9a678..000000000 --- a/tests/visual_tests/styles/polygon-symbolizer-expressions-all.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - 256,256 - - - - - - - - - - frame - - csv - -wkt|name -Polygon((-180.0 -125.0, -180.0 125.0, 180.0 125.0, 180.0 -125.0, -180.0 -125.0))|bounds - - - - - - - - bug - - csv - -id|value|wkt -fill|#0000ff|Polygon((-160 -120,-20 -120,-40 -80,-100 -90,-160 -120)) -fill-opacity|0.5|Polygon((-160 -70,-20 -70,-40 -30,-100 -40,-160 -70)) -gamma|1.0|Polygon((-160 -20,-20 -20,-40 20,-100 10,-160 -20)) -comp-op|minus|Polygon((-160 30,-20 30,-40 70,-100 60,-160 30)) - - - - - diff --git a/tests/visual_tests/styles/polygon-symbolizer-expressions.xml b/tests/visual_tests/styles/polygon-symbolizer-expressions.xml deleted file mode 100644 index 48920ddb6..000000000 --- a/tests/visual_tests/styles/polygon-symbolizer-expressions.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - 256,256 - - - - - - - - - - frame - - csv - -wkt|name -Polygon((-180.0 -125.0, -180.0 125.0, 180.0 125.0, 180.0 -125.0, -180.0 -125.0))|bounds - - - - - - - - bug - - csv - -id|value|wkt -fill|#0000ff|Polygon((-160 -120,-20 -120,-40 -80,-100 -90,-160 -120)) -fill-opacity|0.5|Polygon((-160 -70,-20 -70,-40 -30,-100 -40,-160 -70)) -gamma|1.0|Polygon((-160 -20,-20 -20,-40 20,-100 10,-160 -20)) - - - - - diff --git a/tests/visual_tests/styles/polygon-winding-order.xml b/tests/visual_tests/styles/polygon-winding-order.xml deleted file mode 100644 index 36eeb4276..000000000 --- a/tests/visual_tests/styles/polygon-winding-order.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - 300,300 - - - - - - - - frame - - csv - -wkt|name -Polygon((-75.0 -75.0, -75.0 75.0, 35.0 75.0, 35.0 -75.0, -75.0 -75.0))|bounds - - - - - - - - polygon - - geojson - { -"type": "FeatureCollection", -"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, - -"features": [ -{ "type": "Feature", "properties": { }, "geometry": { "type": "Polygon", "coordinates": - [ [ [ 30, -20 ], [ -70, -20 ], [ -70, -70 ], [ 30, -70 ], [ 30, -20 ] ], - [ [ -60, -30 ], [ -30, -30 ], [ -30, -60 ], [ -60, -60 ], [ -60, -30 ] ], - [ [ -10, -30 ], [ -10, -60 ], [ 20, -60 ], [ 20, -30 ], [ -10, -30 ] ] - ] } }, -{ "type": "Feature", "properties": { }, "geometry": { "type": "Polygon", "coordinates": - [ [ [ -70, 70 ], [ 30, 70 ], [ 30, 20 ], [ -70, 20 ], [ -70, 70 ] ], - [ [ -60, 60 ], [ -30, 60 ], [ -30, 30 ], [ -60, 30 ], [ -60, 60 ] ], - [ [ 20, 30 ], [ 20, 60 ], [ -10, 60 ], [ -10, 30 ], [ 20, 30 ] ] - ] } } -] -} - - - diff --git a/tests/visual_tests/styles/polygon-winding-shape-debug.xml b/tests/visual_tests/styles/polygon-winding-shape-debug.xml deleted file mode 100644 index 5deb3c026..000000000 --- a/tests/visual_tests/styles/polygon-winding-shape-debug.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - 512,512 - - - - style - - ../../data/shp/world_merc - shape - - - diff --git a/tests/visual_tests/styles/postgis-inline.xml b/tests/visual_tests/styles/postgis-inline.xml deleted file mode 100644 index 38df0ef85..000000000 --- a/tests/visual_tests/styles/postgis-inline.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - 512,512 - - - - carto_tests - - - template_postgis - true - - - - - - - - diff --git a/tests/visual_tests/styles/raster-color-to-alpha1.xml b/tests/visual_tests/styles/raster-color-to-alpha1.xml deleted file mode 100644 index 8207a683a..000000000 --- a/tests/visual_tests/styles/raster-color-to-alpha1.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - 512,512 - - - - - style - - - ../../data/raster/nodata-edge.tif - gdal - - - - diff --git a/tests/visual_tests/styles/raster-color-to-alpha2.xml b/tests/visual_tests/styles/raster-color-to-alpha2.xml deleted file mode 100644 index c9846411f..000000000 --- a/tests/visual_tests/styles/raster-color-to-alpha2.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - 512,512 - - - - - style - - - ../../data/raster/river_merc.tiff - gdal - - - - diff --git a/tests/visual_tests/styles/raster-color-to-alpha3.xml b/tests/visual_tests/styles/raster-color-to-alpha3.xml deleted file mode 100644 index 94e5bb365..000000000 --- a/tests/visual_tests/styles/raster-color-to-alpha3.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - 512,512 - - - - - style - - - ../../data/raster/transp.tiff - gdal - - - - diff --git a/tests/visual_tests/styles/raster-color-to-alpha4.xml b/tests/visual_tests/styles/raster-color-to-alpha4.xml deleted file mode 100644 index 7c801030c..000000000 --- a/tests/visual_tests/styles/raster-color-to-alpha4.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - 512,512 - - - - - - DISCRETE RAINBOW - - ../../data/raster/dataraster.tif - gdal - 1 - - - - diff --git a/tests/visual_tests/styles/raster-color-to-alpha4b.xml b/tests/visual_tests/styles/raster-color-to-alpha4b.xml deleted file mode 100644 index 7df4721ac..000000000 --- a/tests/visual_tests/styles/raster-color-to-alpha4b.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - 512,512 - - - - - - DISCRETE RAINBOW - - ../../data/raster/dataraster.tif - raster - 1 - - - - diff --git a/tests/visual_tests/styles/raster-color-to-alpha5.xml b/tests/visual_tests/styles/raster-color-to-alpha5.xml deleted file mode 100644 index e6acda42b..000000000 --- a/tests/visual_tests/styles/raster-color-to-alpha5.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - 512,512 - - - - - - DISCRETE RAINBOW - - ../../data/raster/dataraster.tif - gdal - 1 - - - - diff --git a/tests/visual_tests/styles/raster-color-to-alpha5b.xml b/tests/visual_tests/styles/raster-color-to-alpha5b.xml deleted file mode 100644 index 6a4e73926..000000000 --- a/tests/visual_tests/styles/raster-color-to-alpha5b.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - 512,512 - - - - - - DISCRETE RAINBOW - - ../../data/raster/dataraster.tif - raster - 1 - - - - diff --git a/tests/visual_tests/styles/raster_colorizer.xml b/tests/visual_tests/styles/raster_colorizer.xml deleted file mode 100644 index 6954118b4..000000000 --- a/tests/visual_tests/styles/raster_colorizer.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - 512,512 - - - - - - - - - - - - - - DISCRETE RAINBOW - - ../../data/raster/dataraster.tif - gdal - 1 - - - - diff --git a/tests/visual_tests/styles/raster_symbolizer.xml b/tests/visual_tests/styles/raster_symbolizer.xml deleted file mode 100644 index 48bfa0ba4..000000000 --- a/tests/visual_tests/styles/raster_symbolizer.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - 512,512 - - - - - - - - ramped - - - ../../data/raster/dataraster.tif - gdal - 1 - - - - diff --git a/tests/visual_tests/styles/rasterlite-globe.xml b/tests/visual_tests/styles/rasterlite-globe.xml deleted file mode 100644 index 209a3da97..000000000 --- a/tests/visual_tests/styles/rasterlite-globe.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - 256,256 - -180 0 0 85.0511287798066 - - - - 1 - - rasterlite - globe - ../../data/rasterlite/globe.sqlite - - - - diff --git a/tests/visual_tests/styles/repeat-labels-1.xml b/tests/visual_tests/styles/repeat-labels-1.xml deleted file mode 100644 index a84350fcb..000000000 --- a/tests/visual_tests/styles/repeat-labels-1.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - 750,250 - - - - - - - - - - - - line - marker - shield - text - - csv - -12, -4, 12, 4 - ../data/repeat-labels.csv - - - - diff --git a/tests/visual_tests/styles/repeat-labels-2.xml b/tests/visual_tests/styles/repeat-labels-2.xml deleted file mode 100644 index 8d9452e11..000000000 --- a/tests/visual_tests/styles/repeat-labels-2.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - 750,250 - - - - - - - - - - - - line - marker - shield - text - - csv - -12, -4, 12, 4 - ../data/repeat-labels.csv - - - - diff --git a/tests/visual_tests/styles/repeat-labels-3.xml b/tests/visual_tests/styles/repeat-labels-3.xml deleted file mode 100644 index 84f64eb23..000000000 --- a/tests/visual_tests/styles/repeat-labels-3.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - 750,250 - - - - - - - - - - - - line - marker - shield - text - - csv - -12, -4, 12, 4 - ../data/repeat-labels.csv - - - - diff --git a/tests/visual_tests/styles/repeat-labels-4.xml b/tests/visual_tests/styles/repeat-labels-4.xml deleted file mode 100644 index 3a3505f54..000000000 --- a/tests/visual_tests/styles/repeat-labels-4.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - 750,250 - - - - - - - - - - - - line - marker - shield - text - - csv - -12, -4, 12, 4 - ../data/repeat-labels.csv - - - - diff --git a/tests/visual_tests/styles/road-casings-grouped-rendering.xml b/tests/visual_tests/styles/road-casings-grouped-rendering.xml deleted file mode 100644 index ddaa021fd..000000000 --- a/tests/visual_tests/styles/road-casings-grouped-rendering.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - 600,600 - 1477001.12245,6890242.37746,1480004.49012,6892244.62256 - - - - - - - - casing - bridge - fill - marking - - ../data/grouped-rendering.sqlite - (SELECT fid, geometry, type, tunnel, bridge, oneway, class, z_order, CAST((z_order / 10.0) AS INTEGER) AS z -FROM roads ORDER BY z_order) AS road - sqlite - - - - diff --git a/tests/visual_tests/styles/road-casings-non-grouped-rendering.xml b/tests/visual_tests/styles/road-casings-non-grouped-rendering.xml deleted file mode 100644 index 5287ed5ba..000000000 --- a/tests/visual_tests/styles/road-casings-non-grouped-rendering.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - 600,600 - 1477001.12245,6890242.37746,1480004.49012,6892244.62256 - - - - - - - - casing - bridge - fill - marking - - ../data/grouped-rendering.sqlite - (SELECT fid, geometry, type, tunnel, bridge, oneway, class, z_order, CAST((z_order / 10.0) AS INTEGER) AS z -FROM roads ORDER BY z_order) AS road - sqlite - - - - diff --git a/tests/visual_tests/styles/rtl-point.xml b/tests/visual_tests/styles/rtl-point.xml deleted file mode 100644 index 8406f5581..000000000 --- a/tests/visual_tests/styles/rtl-point.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - 200, 200 - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/shield-on-line-and-avoid-edges.xml b/tests/visual_tests/styles/shield-on-line-and-avoid-edges.xml deleted file mode 100644 index e6d9d7b21..000000000 --- a/tests/visual_tests/styles/shield-on-line-and-avoid-edges.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - 512,512 - - - - - line - point-placement - - csv - ../data/marker-on-line.csv - | - - - diff --git a/tests/visual_tests/styles/shield-on-line-spacing-eq-width.xml b/tests/visual_tests/styles/shield-on-line-spacing-eq-width.xml deleted file mode 100644 index 25a151b22..000000000 --- a/tests/visual_tests/styles/shield-on-line-spacing-eq-width.xml +++ /dev/null @@ -1,102 +0,0 @@ - - - 600,400 - - - alpha - - csv - - wkt,halo-opacity,text-opacity,opacity - "LINESTRING(0 0, 10 2)",.1,.1,.1 - - - - - beta - - csv - - wkt,halo-opacity,text-opacity,opacity - "LINESTRING(0 2, 10 4)",1,1,1 - - - - - gamma - - csv - - wkt,halo-opacity,text-opacity,opacity - "LINESTRING(0 4, 10 6)",1,1,1 - - - - - - - - diff --git a/tests/visual_tests/styles/shield-on-polygon.xml b/tests/visual_tests/styles/shield-on-polygon.xml deleted file mode 100644 index da92ef1ec..000000000 --- a/tests/visual_tests/styles/shield-on-polygon.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - 600,400 - - - - -180,-85.05112877980659,180,85.05112877980659 - 0,0,2 - png - 0 - 22 - - - - - - - countries-outline - countries - - ../../data/shp/new_zealand/ne_50m_land.shp - - - - - - - places - - ../../data/shp/new_zealand/ne_50m_populated_places_simple.shp - - - - - diff --git a/tests/visual_tests/styles/shieldsymbolizer-1.xml b/tests/visual_tests/styles/shieldsymbolizer-1.xml deleted file mode 100644 index 848ca0ede..000000000 --- a/tests/visual_tests/styles/shieldsymbolizer-1.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - 490, 100; 495, 100; 497, 100; 498, 100; 499, 100; 500, 100; 501, 100; 502, 100; 505, 100; 510, 100 - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/shieldsymbolizer-2.xml b/tests/visual_tests/styles/shieldsymbolizer-2.xml deleted file mode 100644 index 9f4473bcf..000000000 --- a/tests/visual_tests/styles/shieldsymbolizer-2.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - 490, 100; 495, 100; 497, 100; 498, 100; 499, 100; 500, 100; 501, 100; 502, 100; 505, 100; 510, 100 - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/shieldsymbolizer-3.xml b/tests/visual_tests/styles/shieldsymbolizer-3.xml deleted file mode 100644 index 67c60f54c..000000000 --- a/tests/visual_tests/styles/shieldsymbolizer-3.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - 490, 100; 495, 100; 497, 100; 498, 100; 499, 100; 500, 100; 501, 100; 502, 100; 505, 100; 510, 100 - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/shieldsymbolizer-4.xml b/tests/visual_tests/styles/shieldsymbolizer-4.xml deleted file mode 100644 index 6693ba00a..000000000 --- a/tests/visual_tests/styles/shieldsymbolizer-4.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - 490, 100; 495, 100; 497, 100; 498, 100; 499, 100; 500, 100; 501, 100; 502, 100; 505, 100; 510, 100 - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/simple-E.xml b/tests/visual_tests/styles/simple-E.xml deleted file mode 100644 index 799a3d65c..000000000 --- a/tests/visual_tests/styles/simple-E.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/simple-N.xml b/tests/visual_tests/styles/simple-N.xml deleted file mode 100644 index 5b9b79d15..000000000 --- a/tests/visual_tests/styles/simple-N.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/simple-NE.xml b/tests/visual_tests/styles/simple-NE.xml deleted file mode 100644 index aee999c0e..000000000 --- a/tests/visual_tests/styles/simple-NE.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/simple-NW.xml b/tests/visual_tests/styles/simple-NW.xml deleted file mode 100644 index bf4d35ffe..000000000 --- a/tests/visual_tests/styles/simple-NW.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/simple-S.xml b/tests/visual_tests/styles/simple-S.xml deleted file mode 100644 index a868ea30a..000000000 --- a/tests/visual_tests/styles/simple-S.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/simple-SE.xml b/tests/visual_tests/styles/simple-SE.xml deleted file mode 100644 index 5c411a0e2..000000000 --- a/tests/visual_tests/styles/simple-SE.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/simple-SW.xml b/tests/visual_tests/styles/simple-SW.xml deleted file mode 100644 index bc0712931..000000000 --- a/tests/visual_tests/styles/simple-SW.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/simple-W.xml b/tests/visual_tests/styles/simple-W.xml deleted file mode 100644 index f687644ca..000000000 --- a/tests/visual_tests/styles/simple-W.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/simple-shield.xml b/tests/visual_tests/styles/simple-shield.xml deleted file mode 100644 index 3ea2f6442..000000000 --- a/tests/visual_tests/styles/simple-shield.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - 600,400 - - - - My Style - - csv - -lat,long,name,nr,color,type,empty-string -0,0,Test one,1,#ff0000,svg, -0,0.1,Test two,2,red,svg, -0,0.2,Test three,3,#00ff00,svg, -0,0.3,Test four,4,green,svg, -0,0.4,Test five,5,#0000ff,svg, -0,0.5,Test six,6,blue,svg, -0,0.6,Test seven,7,#000000,svg, -0,0.7,Test eight,8,black,svg, -0,0.8,Test nine,9,#ffffff,svg, -0,0.9,Test ten,10,white,svg, - - - - - - - diff --git a/tests/visual_tests/styles/simple.xml b/tests/visual_tests/styles/simple.xml deleted file mode 100644 index 7105f7cc8..000000000 --- a/tests/visual_tests/styles/simple.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - 800, 100; 600, 100; 400, 100; 300, 100; 250, 100; 150, 100; 100, 100 - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/simplify-douglas-peucker.xml b/tests/visual_tests/styles/simplify-douglas-peucker.xml deleted file mode 100644 index 2553c3829..000000000 --- a/tests/visual_tests/styles/simplify-douglas-peucker.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 500, 1000 - - - - lines - - sqlite - ../../data/sqlite/world.sqlite - true - - (SELECT *, 'douglas-peucker' as algorithm, 2 as simplify, -375 as ty FROM world_merc UNION ALL - SELECT *, 'douglas-peucker' as algorithm, 4 as simplify, -125 as ty FROM world_merc UNION ALL - SELECT *, 'douglas-peucker' as algorithm, 8 as simplify, 125 as ty FROM world_merc UNION ALL - SELECT *, 'douglas-peucker' as algorithm, 16 as simplify, 375 as ty FROM world_merc) - - - - diff --git a/tests/visual_tests/styles/simplify-radial-distance.xml b/tests/visual_tests/styles/simplify-radial-distance.xml deleted file mode 100644 index 3ad3e3ec8..000000000 --- a/tests/visual_tests/styles/simplify-radial-distance.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 500, 1000 - - - - lines - - sqlite - ../../data/sqlite/world.sqlite - true - - (SELECT *, 'radial-distance' as algorithm, 10 as simplify, -375 as ty FROM world_merc UNION ALL - SELECT *, 'radial-distance' as algorithm, 40 as simplify, -125 as ty FROM world_merc UNION ALL - SELECT *, 'radial-distance' as algorithm, 160 as simplify, 125 as ty FROM world_merc UNION ALL - SELECT *, 'radial-distance' as algorithm, 640 as simplify, 375 as ty FROM world_merc) - - - - diff --git a/tests/visual_tests/styles/simplify-visvalingam-whyatt.xml b/tests/visual_tests/styles/simplify-visvalingam-whyatt.xml deleted file mode 100644 index 623857e45..000000000 --- a/tests/visual_tests/styles/simplify-visvalingam-whyatt.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 500, 1000 - - - - lines - - sqlite - ../../data/sqlite/world.sqlite - true - - (SELECT *, 'visvalingam-whyatt' as algorithm, 10 as simplify, -375 as ty FROM world_merc UNION ALL - SELECT *, 'visvalingam-whyatt' as algorithm, 20 as simplify, -125 as ty FROM world_merc UNION ALL - SELECT *, 'visvalingam-whyatt' as algorithm, 40 as simplify, 125 as ty FROM world_merc UNION ALL - SELECT *, 'visvalingam-whyatt' as algorithm, 80 as simplify, 375 as ty FROM world_merc) - - - - diff --git a/tests/visual_tests/styles/simplify-zhao-saalfeld.xml b/tests/visual_tests/styles/simplify-zhao-saalfeld.xml deleted file mode 100644 index 3f46226d2..000000000 --- a/tests/visual_tests/styles/simplify-zhao-saalfeld.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 500, 1000 - - - - lines - - sqlite - ../../data/sqlite/world.sqlite - true - - (SELECT *, 'zhao-saalfeld' as algorithm, 1 as simplify, -375 as ty FROM world_merc UNION ALL - SELECT *, 'zhao-saalfeld' as algorithm, 2 as simplify, -125 as ty FROM world_merc UNION ALL - SELECT *, 'zhao-saalfeld' as algorithm, 4 as simplify, 125 as ty FROM world_merc UNION ALL - SELECT *, 'zhao-saalfeld' as algorithm, 10 as simplify, 375 as ty FROM world_merc) - - - - diff --git a/tests/visual_tests/styles/style-level-compositing-tiled-0,0.xml b/tests/visual_tests/styles/style-level-compositing-tiled-0,0.xml deleted file mode 100644 index e88d964c5..000000000 --- a/tests/visual_tests/styles/style-level-compositing-tiled-0,0.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - 512,512 - -20037508.342,0,0,20037508.342 - - - - style - - ../../data/shp/world_merc - shape - - - - - - mask - - - wkt,name - "Polygon((-10000000 -5000000, -10000000 10000000, -5000000 10000000, -5000000 -5000000, -10000000 -5000000))","bounds" - - csv - - - diff --git a/tests/visual_tests/styles/style-level-compositing-tiled-0,1.xml b/tests/visual_tests/styles/style-level-compositing-tiled-0,1.xml deleted file mode 100644 index e88a99ed2..000000000 --- a/tests/visual_tests/styles/style-level-compositing-tiled-0,1.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - 512,512 - -20037508.342,-20037508.342,0,0 - - - - style - - ../../data/shp/world_merc - shape - - - - - - mask - - - wkt,name - "Polygon((-10000000 -5000000, -10000000 10000000, -5000000 10000000, -5000000 -5000000, -10000000 -5000000))","bounds" - - csv - - - diff --git a/tests/visual_tests/styles/style-level-compositing-tiled-1,0.xml b/tests/visual_tests/styles/style-level-compositing-tiled-1,0.xml deleted file mode 100644 index a0d4257df..000000000 --- a/tests/visual_tests/styles/style-level-compositing-tiled-1,0.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - 512,512 - 0,0,20037508.342,20037508.342 - - - - style - - ../../data/shp/world_merc - shape - - - - - - mask - - - wkt,name - "Polygon((-10000000 -5000000, -10000000 10000000, -5000000 10000000, -5000000 -5000000, -10000000 -5000000))","bounds" - - csv - - - diff --git a/tests/visual_tests/styles/style-level-compositing-tiled-1,1.xml b/tests/visual_tests/styles/style-level-compositing-tiled-1,1.xml deleted file mode 100644 index 4b158c4c5..000000000 --- a/tests/visual_tests/styles/style-level-compositing-tiled-1,1.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - 512,512 - 0,-20037508.342,20037508.342,0 - - - - style - - ../../data/shp/world_merc - shape - - - - - - mask - - - wkt,name - "Polygon((-10000000 -5000000, -10000000 10000000, -5000000 10000000, -5000000 -5000000, -10000000 -5000000))","bounds" - - csv - - - diff --git a/tests/visual_tests/styles/text-allow-overlap-expr.xml b/tests/visual_tests/styles/text-allow-overlap-expr.xml deleted file mode 100644 index ec447c9b2..000000000 --- a/tests/visual_tests/styles/text-allow-overlap-expr.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - 500, 500 - - - - - - - My Style - - csv - -0.5, -0.5, 0.5, 0.5 - -lat,long,test,text - 0.25,-0.35,noexpr-true,ABC - 0.25,-0.35,noexpr-true,XYZ - 0.25,-0.12,noexpr-false,ABC - 0.25,-0.12,noexpr-false,XYZ - 0.25, 0.11,noexpr-true,ABC - 0.25, 0.11,noexpr-false,XYZ - 0.25, 0.35,noexpr-false,ABC - 0.25, 0.35,noexpr-true,XYZ - 0 ,-0.35,true,ABC - 0 ,-0.35,true,XYZ - 0 ,-0.12,false,ABC - 0 ,-0.12,false,XYZ - 0 , 0.11,true,ABC - 0 , 0.11,false,XYZ - 0 , 0.35,false,ABC - 0 , 0.35,true,XYZ - - - - - - - diff --git a/tests/visual_tests/styles/text-bengali.xml b/tests/visual_tests/styles/text-bengali.xml deleted file mode 100644 index 9e9e9d37b..000000000 --- a/tests/visual_tests/styles/text-bengali.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - 800, 100 - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - diff --git a/tests/visual_tests/styles/text-bug1532.xml b/tests/visual_tests/styles/text-bug1532.xml deleted file mode 100644 index 4076756a3..000000000 --- a/tests/visual_tests/styles/text-bug1532.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - 600, 165 - - - My Style - - csv - 0.0121962878686,0.14886974508,0.906367305121,0.389927385014 - ../data/bug1532.csv - - - - - - diff --git a/tests/visual_tests/styles/text-bug1533.xml b/tests/visual_tests/styles/text-bug1533.xml deleted file mode 100644 index a01e6c687..000000000 --- a/tests/visual_tests/styles/text-bug1533.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - 600, 600 - - - My Style - - csv - 0.011974068267,-0.211219329615,0.906589524723,0.389705170555 - ../data/bug1533.csv - - - - - - diff --git a/tests/visual_tests/styles/text-bug1820+0.xml b/tests/visual_tests/styles/text-bug1820+0.xml deleted file mode 100644 index 2220d6051..000000000 --- a/tests/visual_tests/styles/text-bug1820+0.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - 600, 300 - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/text-bug1820+1.xml b/tests/visual_tests/styles/text-bug1820+1.xml deleted file mode 100644 index 22088cc98..000000000 --- a/tests/visual_tests/styles/text-bug1820+1.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - 600, 300 - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/text-bug1820-1.xml b/tests/visual_tests/styles/text-bug1820-1.xml deleted file mode 100644 index c65002cea..000000000 --- a/tests/visual_tests/styles/text-bug1820-1.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - 600, 300 - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/text-bug2037.xml b/tests/visual_tests/styles/text-bug2037.xml deleted file mode 100644 index 9d2cec01c..000000000 --- a/tests/visual_tests/styles/text-bug2037.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - 800, 300 - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - diff --git a/tests/visual_tests/styles/text-charplacement.xml b/tests/visual_tests/styles/text-charplacement.xml deleted file mode 100644 index 3eb09d16c..000000000 --- a/tests/visual_tests/styles/text-charplacement.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - 512,512 - - - - road - - ../data/charplacement - shape - - - diff --git a/tests/visual_tests/styles/text-data-binding.xml b/tests/visual_tests/styles/text-data-binding.xml deleted file mode 100644 index 23579a646..000000000 --- a/tests/visual_tests/styles/text-data-binding.xml +++ /dev/null @@ -1,104 +0,0 @@ - - - - - 500, 500 - - - - text - - sqlite - false - ../data/text-data-binding.sqlite - text_layer - -1,-1,1,1 - - - - circular - - sqlite - false - ../data/text-data-binding.sqlite - circular_layer - -1,-1,1,1 - - - - - diff --git a/tests/visual_tests/styles/text-displacement.xml b/tests/visual_tests/styles/text-displacement.xml deleted file mode 100644 index 9f6a3679b..000000000 --- a/tests/visual_tests/styles/text-displacement.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - 512,512 - - - - road - - ../data/displacement - shape - - - diff --git a/tests/visual_tests/styles/text-expressionformat-color.xml b/tests/visual_tests/styles/text-expressionformat-color.xml deleted file mode 100644 index 63befbf7d..000000000 --- a/tests/visual_tests/styles/text-expressionformat-color.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - 800, 100 - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - - - diff --git a/tests/visual_tests/styles/text-font-features.xml b/tests/visual_tests/styles/text-font-features.xml deleted file mode 100644 index 901eebc5a..000000000 --- a/tests/visual_tests/styles/text-font-features.xml +++ /dev/null @@ -1,104 +0,0 @@ - - - - -]> - - - 1100, 1100 - - - My Style - - csv - -1,-1,1,1 - - id, wkt, dx, features, text - 1, "POINT(-0.95 0.9)", 270, "liga 1, dlig 1", "first" - 2, "POINT(-0.95 0.9)", 350, "smcp 1", "The first" - 3, "POINT(-0.95 0.9)", 500, "sups[1:] 1", "1st" - 4, "POINT(-0.95 0.9)", 560, "frac 1, numr 1, dnom 1", "1/2 1/3 1/4" - 5, "POINT(-0.95 0.9)", 750, "zero 1, onum 1", "0123456789" - 6, "POINT(-0.95 0.9)", 950, "", "" - - - - - diff --git a/tests/visual_tests/styles/text-halign-adjust-multiline.xml b/tests/visual_tests/styles/text-halign-adjust-multiline.xml deleted file mode 100644 index 0afef8839..000000000 --- a/tests/visual_tests/styles/text-halign-adjust-multiline.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - 800, 800 - -0.05, -0.01, 0.95, 0.01 - - - - My Style - - csv - ../data/lines2.csv - - - - - - diff --git a/tests/visual_tests/styles/text-halign-adjust.xml b/tests/visual_tests/styles/text-halign-adjust.xml deleted file mode 100644 index 13b4020a1..000000000 --- a/tests/visual_tests/styles/text-halign-adjust.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - 800, 800 - -0.05, -0.01, 0.95, 0.01 - - - - My Style - - csv - ../data/lines2.csv - - - - - - diff --git a/tests/visual_tests/styles/text-halign.xml b/tests/visual_tests/styles/text-halign.xml deleted file mode 100644 index 668f12eee..000000000 --- a/tests/visual_tests/styles/text-halign.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - 800, 800 - -0.05, -0.01, 0.95, 0.01 - - - - My Style - - csv - ../data/lines2.csv - - - - - - diff --git a/tests/visual_tests/styles/text-halo-opacity.xml b/tests/visual_tests/styles/text-halo-opacity.xml deleted file mode 100644 index f9a7127fa..000000000 --- a/tests/visual_tests/styles/text-halo-opacity.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - 512,512 - - - - - - labels - - csv - -id,x,y -1,1.5,4.5 -2,1.5,3.5 -3,1.5,2.5 -4,1.5,1.5 - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - diff --git a/tests/visual_tests/styles/text-halo-rasterizer.xml b/tests/visual_tests/styles/text-halo-rasterizer.xml deleted file mode 100644 index c014fe8c7..000000000 --- a/tests/visual_tests/styles/text-halo-rasterizer.xml +++ /dev/null @@ -1,227 +0,0 @@ - - - 600,400 - - - - - - labels - - csv - -id,x,y -0.1,1.5,4.5 -0.3,1.5,4 -0.5,1.5,3.5 -0.7,1.5,3 -1,1.5,2.5 -1.5,1.5,2 -2.5,1.5,1.5 -4,1.5,1 - -100.1,3.5,4.5 -100.3,3.5,4 -100.5,3.5,3.5 -100.7,3.5,3 -101,3.5,2.5 -101.5,3.5,2 -102.5,3.5,1.5 -104,3.5,1 - - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - - diff --git a/tests/visual_tests/styles/text-halo-transform.xml b/tests/visual_tests/styles/text-halo-transform.xml deleted file mode 100644 index c7493bb4e..000000000 --- a/tests/visual_tests/styles/text-halo-transform.xml +++ /dev/null @@ -1,243 +0,0 @@ - - - 600,400 - - - - - - labels - - csv - -id,x,y -0.1,1.5,4.5 -0.3,1.5,4 -0.5,1.5,3.5 -0.7,1.5,3 -1,1.5,2.5 -1.5,1.5,2 -2.5,1.5,1.5 -4,1.5,1 - -100.1,3.5,4.5 -100.3,3.5,4 -100.5,3.5,3.5 -100.7,3.5,3 -101,3.5,2.5 -101.5,3.5,2 -102.5,3.5,1.5 -104,3.5,1 - - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - - diff --git a/tests/visual_tests/styles/text-iconic-font.xml b/tests/visual_tests/styles/text-iconic-font.xml deleted file mode 100644 index 5b025ee07..000000000 --- a/tests/visual_tests/styles/text-iconic-font.xml +++ /dev/null @@ -1,252 +0,0 @@ - - - - - 1000, 1000 - - - My Style - - csv - -1, -1, 15, 15 - - wkt, text - "POINT( 0 0)", "" - "POINT( 0 1)", "" - "POINT( 0 2)", "" - "POINT( 0 3)", "" - "POINT( 0 4)", "" - "POINT( 0 5)", "" - "POINT( 0 6)", "" - "POINT( 0 7)", "" - "POINT( 0 8)", "" - "POINT( 0 9)", "" - "POINT( 0 10)", "" - "POINT( 0 11)", "" - "POINT( 0 12)", "" - "POINT( 0 13)", "" - "POINT( 0 14)", "" - "POINT( 1 0)", "" - "POINT( 1 1)", "" - "POINT( 1 2)", "" - "POINT( 1 3)", "" - "POINT( 1 4)", "" - "POINT( 1 5)", "" - "POINT( 1 6)", "" - "POINT( 1 7)", "" - "POINT( 1 8)", "" - "POINT( 1 9)", "" - "POINT( 1 10)", "" - "POINT( 1 11)", "" - "POINT( 1 12)", "" - "POINT( 1 13)", "" - "POINT( 1 14)", "" - "POINT( 2 0)", "" - "POINT( 2 1)", "" - "POINT( 2 2)", "" - "POINT( 2 3)", "" - "POINT( 2 4)", "" - "POINT( 2 5)", "" - "POINT( 2 6)", "" - "POINT( 2 7)", "" - "POINT( 2 8)", "" - "POINT( 2 9)", "" - "POINT( 2 10)", "" - "POINT( 2 11)", "" - "POINT( 2 12)", "" - "POINT( 2 13)", "" - "POINT( 2 14)", "" - "POINT( 3 0)", "" - "POINT( 3 1)", "" - "POINT( 3 2)", "" - "POINT( 3 3)", "" - "POINT( 3 4)", "" - "POINT( 3 5)", "" - "POINT( 3 6)", "" - "POINT( 3 7)", "" - "POINT( 3 8)", "" - "POINT( 3 9)", "" - "POINT( 3 10)", "" - "POINT( 3 11)", "" - "POINT( 3 12)", "" - "POINT( 3 13)", "" - "POINT( 3 14)", "" - "POINT( 4 0)", "" - "POINT( 4 1)", "" - "POINT( 4 2)", "" - "POINT( 4 3)", "" - "POINT( 4 4)", "" - "POINT( 4 5)", "" - "POINT( 4 6)", "" - "POINT( 4 7)", "" - "POINT( 4 8)", "" - "POINT( 4 9)", "" - "POINT( 4 10)", "" - "POINT( 4 11)", "" - "POINT( 4 12)", "" - "POINT( 4 13)", "" - "POINT( 4 14)", "" - "POINT( 5 0)", "" - "POINT( 5 1)", "" - "POINT( 5 2)", "" - "POINT( 5 3)", "" - "POINT( 5 4)", "" - "POINT( 5 5)", "" - "POINT( 5 6)", "" - "POINT( 5 7)", "" - "POINT( 5 8)", "" - "POINT( 5 9)", "" - "POINT( 5 10)", "" - "POINT( 5 11)", "" - "POINT( 5 12)", "" - "POINT( 5 13)", "" - "POINT( 5 14)", "" - "POINT( 6 0)", "" - "POINT( 6 1)", "" - "POINT( 6 2)", "" - "POINT( 6 3)", "" - "POINT( 6 4)", "" - "POINT( 6 5)", "" - "POINT( 6 6)", "" - "POINT( 6 7)", "" - "POINT( 6 8)", "" - "POINT( 6 9)", "" - "POINT( 6 10)", "" - "POINT( 6 11)", "" - "POINT( 6 12)", "" - "POINT( 6 13)", "" - "POINT( 6 14)", "" - "POINT( 7 0)", "" - "POINT( 7 1)", "" - "POINT( 7 2)", "" - "POINT( 7 3)", "" - "POINT( 7 4)", "" - "POINT( 7 5)", "" - "POINT( 7 6)", "" - "POINT( 7 7)", "" - "POINT( 7 8)", "" - "POINT( 7 9)", "" - "POINT( 7 10)", "" - "POINT( 7 11)", "" - "POINT( 7 12)", "" - "POINT( 7 13)", "" - "POINT( 7 14)", "" - "POINT( 8 0)", "" - "POINT( 8 1)", "" - "POINT( 8 2)", "" - "POINT( 8 3)", "" - "POINT( 8 4)", "" - "POINT( 8 5)", "" - "POINT( 8 6)", "" - "POINT( 8 7)", "" - "POINT( 8 8)", "" - "POINT( 8 9)", "" - "POINT( 8 10)", "" - "POINT( 8 11)", "" - "POINT( 8 12)", "" - "POINT( 8 13)", "" - "POINT( 8 14)", "" - "POINT( 9 0)", "" - "POINT( 9 1)", "" - "POINT( 9 2)", "" - "POINT( 9 3)", "" - "POINT( 9 4)", "" - "POINT( 9 5)", "" - "POINT( 9 6)", "" - "POINT( 9 7)", "" - "POINT( 9 8)", "" - "POINT( 9 9)", "" - "POINT( 9 10)", "" - "POINT( 9 11)", "" - "POINT( 9 12)", "" - "POINT( 9 13)", "" - "POINT( 9 14)", "" - "POINT(10 0)", "" - "POINT(10 1)", "" - "POINT(10 2)", "" - "POINT(10 3)", "" - "POINT(10 4)", "" - "POINT(10 5)", "" - "POINT(10 6)", "" - "POINT(10 7)", "" - "POINT(10 8)", "" - "POINT(10 9)", "" - "POINT(10 10)", "" - "POINT(10 11)", "" - "POINT(10 12)", "" - "POINT(10 13)", "" - "POINT(10 14)", "" - "POINT(11 0)", "" - "POINT(11 1)", "" - "POINT(11 2)", "" - "POINT(11 3)", "" - "POINT(11 4)", "" - "POINT(11 5)", "" - "POINT(11 6)", "" - "POINT(11 7)", "" - "POINT(11 8)", "" - "POINT(11 9)", "" - "POINT(11 10)", "" - "POINT(11 11)", "" - "POINT(11 12)", "" - "POINT(11 13)", "" - "POINT(11 14)", "" - "POINT(12 0)", "" - "POINT(12 1)", "" - "POINT(12 2)", "" - "POINT(12 3)", "" - "POINT(12 4)", "" - "POINT(12 5)", "" - "POINT(12 6)", "" - "POINT(12 7)", "" - "POINT(12 8)", "" - "POINT(12 9)", "" - "POINT(12 10)", "" - "POINT(12 11)", "" - "POINT(12 12)", "" - "POINT(12 13)", "" - "POINT(12 14)", "" - "POINT(13 0)", "" - "POINT(13 1)", "" - "POINT(13 2)", "" - "POINT(13 3)", "" - "POINT(13 4)", "" - "POINT(13 5)", "" - "POINT(13 6)", "" - "POINT(13 7)", "" - "POINT(13 8)", "" - "POINT(13 9)", "" - "POINT(13 10)", "" - "POINT(13 11)", "" - "POINT(13 12)", "" - "POINT(13 13)", "" - "POINT(13 14)", "" - "POINT(14 0)", "" - "POINT(14 1)", "" - "POINT(14 2)", "" - "POINT(14 3)", "" - "POINT(14 4)", "" - "POINT(14 5)", "" - "POINT(14 6)", "" - "POINT(14 7)", "" - "POINT(14 8)", "" - "POINT(14 9)", "" - "POINT(14 10)", "" - "POINT(14 11)", "" - "POINT(14 12)", "" - "POINT(14 13)", "" - "POINT(14 14)", "" - - - - - diff --git a/tests/visual_tests/styles/text-line-wrap.xml b/tests/visual_tests/styles/text-line-wrap.xml deleted file mode 100644 index ab47aecdc..000000000 --- a/tests/visual_tests/styles/text-line-wrap.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - 512,512 - - - - - 1 - - - - { - "type": "FeatureCollection", - - "features": [ - - { "type": "Feature", - "properties": { - "label": "this,that", - "wrap-character":",", - "repeat-wrap-character":true - }, - "geometry" : { "type": "Point", "coordinates": [ 2.5, 2.5 ] } - }, - { "type": "Feature", - "properties": { - "label": "this-that", - "wrap-character":"-", - "repeat-wrap-character":true - }, - "geometry" : { "type": "Point", "coordinates": [ 0, 5 ] } - } - ] - } - - - geojson - - - - - - - - - frame - - csv - -x,y --1,-1 -6,-1 --1,6 -6,6 - - - - - diff --git a/tests/visual_tests/styles/text-malayalam.xml b/tests/visual_tests/styles/text-malayalam.xml deleted file mode 100644 index 689f884ac..000000000 --- a/tests/visual_tests/styles/text-malayalam.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - 800, 100 - - - - My Style - - csv - -0.05, -0.01, 0.95, 0.01 - ../data/points.csv - - - - diff --git a/tests/visual_tests/styles/text-multi-layout-1.xml b/tests/visual_tests/styles/text-multi-layout-1.xml deleted file mode 100644 index a3341fbd2..000000000 --- a/tests/visual_tests/styles/text-multi-layout-1.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - 512, 512 - - - - obstacle - - csv - -1,-1,1,1 - -lat,long,nr --0.5,0.5,0 -0.5,-0.5,1 -0.5,0.5,2 --0.5,-0.5,3 -0.08,0,4 --0.08,0,5 - - - - - - - - points - - csv - -lat,long,nr,ref --0.45,-0.45,0,first -0.45,-0.45,1,second -0.45,0.45,2,third --0.45,0.45,3,fourth -0,0,4,fifth - - - - - - - - diff --git a/tests/visual_tests/styles/text-multi-layout-2.xml b/tests/visual_tests/styles/text-multi-layout-2.xml deleted file mode 100644 index 156f09990..000000000 --- a/tests/visual_tests/styles/text-multi-layout-2.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - 512, 512 - - - - points - - csv - -1,-1,1,1 - -lat,long -0,0 - - - - - - - - diff --git a/tests/visual_tests/styles/text-overlap.xml b/tests/visual_tests/styles/text-overlap.xml deleted file mode 100644 index db1859e38..000000000 --- a/tests/visual_tests/styles/text-overlap.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - 512,512 - - - - road - - ../data/overlap - shape - - - diff --git a/tests/visual_tests/styles/text-spacing.xml b/tests/visual_tests/styles/text-spacing.xml deleted file mode 100644 index 6f4527962..000000000 --- a/tests/visual_tests/styles/text-spacing.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - 512,512 - - - - road - - ../data/textspacing - shape - - - diff --git a/tests/visual_tests/styles/text-ttc-font.xml b/tests/visual_tests/styles/text-ttc-font.xml deleted file mode 100644 index 693aacaf5..000000000 --- a/tests/visual_tests/styles/text-ttc-font.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - 600,400 - - - - - - labels - - csv - -id,x,y -1,1.5,4.5 -2,1.5,4 -3,1.5,3.5 -4,1.5,3 -5,1.5,2.5 -6,1.5,2 -7,1.5,1.5 -8,1.5,1 - -1,3.5,4.5 -2,3.5,4 -3,3.5,3.5 -4,3.5,3 -5,3.5,2.5 -6.5,3.5,2 -7,3.5,1.5 -8,3.5,1 - - - - - - - - - - - frame - - csv - -x,y -0,0 -5,0 -0,5 -5,5 - - - - - diff --git a/tests/visual_tests/styles/text-typographic.xml b/tests/visual_tests/styles/text-typographic.xml deleted file mode 100644 index 912d20238..000000000 --- a/tests/visual_tests/styles/text-typographic.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - 512,512 - - - - - lines - texts - - csv - -id,wkt -1,"LINESTRING(0 0, 1 0, 1 1, 2 1, 2 2, 3 2, 3 3, 4 3, 4 4, 5 4, 5 5, 6 5, 6 6, 7 6, 7 7, 8 7, 8 8, 9 8, 9 9, 10 9, 10 10)" -2,"LINESTRING(10 10, 10 9, 9 9, 9 8, 8 8, 8 7, 7 7, 7 6, 6 6, 6 5, 5 5, 5 4, 4 4, 4 3, 3 3, 3 2, 2 2, 2 1, 1 1, 1 0, 0 0)" - - - - diff --git a/tests/visual_tests/styles/text-upright.xml b/tests/visual_tests/styles/text-upright.xml deleted file mode 100644 index 058253ada..000000000 --- a/tests/visual_tests/styles/text-upright.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - 800, 800 - -1.05, -1.05, 1.05, 1.05 - - - - lines - text - - csv - - id, wkt, upright - 0, "LINESTRING(1 0, 0 -1, -1 0, 0 1, 1 0)", "[default]" - 1, "LINESTRING(0.9 0, 0 -0.9, -0.9 0, 0 0.9, 0.9 0)", "auto" - 2, "LINESTRING(0.8 0, 0 -0.8, -0.8 0, 0 0.8, 0.8 0)", "auto-down" - 3, "LINESTRING(0.7 0, 0 -0.7, -0.7 0, 0 0.7, 0.7 0)", "left" - 4, "LINESTRING(0.6 0, 0 -0.6, -0.6 0, 0 0.6, 0.6 0)", "right" - 5, "LINESTRING(0.5 0, 0 -0.5, -0.5 0, 0 0.5, 0.5 0)", "left-only" - 6, "LINESTRING(0.4 0, 0 -0.4, -0.4 0, 0 0.4, 0.4 0)", "right-only" - - - - - - - - - diff --git a/tests/visual_tests/styles/text-vertical-alignment.xml b/tests/visual_tests/styles/text-vertical-alignment.xml deleted file mode 100644 index df8bc12a4..000000000 --- a/tests/visual_tests/styles/text-vertical-alignment.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - 800, 800 - -0.05, -0.01, 0.95, 0.01 - - - - My Style - - csv - ../data/lines2.csv - - - - - - diff --git a/tests/visual_tests/styles/text-wrap.xml b/tests/visual_tests/styles/text-wrap.xml deleted file mode 100644 index 64fb6c345..000000000 --- a/tests/visual_tests/styles/text-wrap.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - 512,512 - - - - - 1 - - - - { - "type": "FeatureCollection", - - "features": [ - - { "type": "Feature", - "properties": { - "label": "this,that", - "wrap-character":" ", - "repeat-wrap-character":false - }, - "geometry" : { "type": "Point", "coordinates": [ 2.5, 2.5 ] } - }, - { "type": "Feature", - "properties": { - "label": "this-that", - "wrap-character":"X", - "repeat-wrap-character":false - }, - "geometry" : { "type": "Point", "coordinates": [ 0, 5 ] } - }, - { "type": "Feature", - "properties": { - "label": "this-that", - "wrap-character":"X", - "repeat-wrap-character":true - }, - "geometry" : { "type": "Point", "coordinates": [ 5, 0 ] } - } - ] - } - - - geojson - - - - - - - - - frame - - csv - -x,y --1,-1 -6,-1 --1,6 -6,6 - - - - - diff --git a/tests/visual_tests/styles/tiff-alpha-broken-assoc-alpha-gdal.xml b/tests/visual_tests/styles/tiff-alpha-broken-assoc-alpha-gdal.xml deleted file mode 100644 index 128fb05a5..000000000 --- a/tests/visual_tests/styles/tiff-alpha-broken-assoc-alpha-gdal.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - 600,400 - - - - - white - - - - ../../data/raster/white-alpha-assoc-alpha-wrong.tiff - gdal - - - - diff --git a/tests/visual_tests/styles/tiff-alpha-broken-assoc-alpha-raster.xml b/tests/visual_tests/styles/tiff-alpha-broken-assoc-alpha-raster.xml deleted file mode 100644 index 2059b5da1..000000000 --- a/tests/visual_tests/styles/tiff-alpha-broken-assoc-alpha-raster.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - 600,400 - off - - - - - white - - - - ../../data/raster/white-alpha-assoc-alpha-wrong.tiff - raster - 1001859.9561,5922814.94334,1021141.75555,5942096.74279 - - - - diff --git a/tests/visual_tests/styles/tiff-alpha-gdal.xml b/tests/visual_tests/styles/tiff-alpha-gdal.xml deleted file mode 100644 index ec4694331..000000000 --- a/tests/visual_tests/styles/tiff-alpha-gdal.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - 600,400 - - - - - white - - ../../data/raster/white-alpha-assoc-alpha-correct.tiff - gdal - - - - diff --git a/tests/visual_tests/styles/tiff-alpha-gradient-gdal.xml b/tests/visual_tests/styles/tiff-alpha-gradient-gdal.xml deleted file mode 100644 index cc5bb5c23..000000000 --- a/tests/visual_tests/styles/tiff-alpha-gradient-gdal.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - 600,400 - - - - - transp - - ../../data/raster/transp.tiff - gdal - - - - diff --git a/tests/visual_tests/styles/tiff-alpha-gradient-raster.xml b/tests/visual_tests/styles/tiff-alpha-gradient-raster.xml deleted file mode 100644 index 2fa8f9724..000000000 --- a/tests/visual_tests/styles/tiff-alpha-gradient-raster.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - 256,256 - off - - - - - transp - - ../../data/raster/transp.tiff - raster - 0,0,256,256 - - - - diff --git a/tests/visual_tests/styles/tiff-alpha-raster.xml b/tests/visual_tests/styles/tiff-alpha-raster.xml deleted file mode 100644 index 33f7a11d7..000000000 --- a/tests/visual_tests/styles/tiff-alpha-raster.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - 600,400 - off - - - - - white - - ../../data/raster/white-alpha-assoc-alpha-correct.tiff - raster - 1001859.9561,5922814.94334,1021141.75555,5942096.74279 - - - - diff --git a/tests/visual_tests/styles/tiff-edge-alignment-gdal1.xml b/tests/visual_tests/styles/tiff-edge-alignment-gdal1.xml deleted file mode 100644 index 8d45e2b33..000000000 --- a/tests/visual_tests/styles/tiff-edge-alignment-gdal1.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - 256,256; 255,257 - -13267022.12540147,4618019.500877209,-13247454.246160466,4637587.380118214 - - - - - - test - - ../data/Yosemite_L9.tif - gdal - - - - diff --git a/tests/visual_tests/styles/tiff-edge-alignment-gdal2.xml b/tests/visual_tests/styles/tiff-edge-alignment-gdal2.xml deleted file mode 100644 index 9299c651a..000000000 --- a/tests/visual_tests/styles/tiff-edge-alignment-gdal2.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - 256,256; 255,257 - -13267022.12540147,4598451.621636203,-13247454.246160466,4618019.500877209 - - - - - - test - - ../data/Yosemite_L9.tif - gdal - - - - diff --git a/tests/visual_tests/styles/tiff-nodata-edge-gdal.xml b/tests/visual_tests/styles/tiff-nodata-edge-gdal.xml deleted file mode 100644 index ae6b6b9f6..000000000 --- a/tests/visual_tests/styles/tiff-nodata-edge-gdal.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - 600,400; 969,793 - - - - - style - - - ../../data/raster/nodata-edge.tif - gdal - - - - diff --git a/tests/visual_tests/styles/tiff-nodata-edge-raster.xml b/tests/visual_tests/styles/tiff-nodata-edge-raster.xml deleted file mode 100644 index 9babcfd34..000000000 --- a/tests/visual_tests/styles/tiff-nodata-edge-raster.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - 600,400 - off - - - - - style - - - - ../../data/raster/nodata-edge.tif - raster - -12329035.765216826,4508650.398543958,-12328653.027947057,4508957.346255356 - - - - diff --git a/tests/visual_tests/styles/tiff-nodata-edge-rgba.xml b/tests/visual_tests/styles/tiff-nodata-edge-rgba.xml deleted file mode 100644 index 49cb546fb..000000000 --- a/tests/visual_tests/styles/tiff-nodata-edge-rgba.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - 512,512 - - - - heat - - ../data/aerial_rgba.tiff - gdal - 255 - 5 - - - diff --git a/tests/visual_tests/styles/tiff-nodata-rgb.xml b/tests/visual_tests/styles/tiff-nodata-rgb.xml deleted file mode 100644 index d877fff57..000000000 --- a/tests/visual_tests/styles/tiff-nodata-rgb.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - 512,512 - - - - heat - - - ../data/heat_rgb.tif - gdal - 255 - - - diff --git a/tests/visual_tests/styles/tiff-nodata-rgba.xml b/tests/visual_tests/styles/tiff-nodata-rgba.xml deleted file mode 100644 index 87baa122d..000000000 --- a/tests/visual_tests/styles/tiff-nodata-rgba.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - 512,512 - - - - heat - - - ../data/heat_nodata.tif - gdal - - - diff --git a/tests/visual_tests/styles/tiff-nodata-tolerance.xml b/tests/visual_tests/styles/tiff-nodata-tolerance.xml deleted file mode 100644 index 85f05a3d9..000000000 --- a/tests/visual_tests/styles/tiff-nodata-tolerance.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - 512,512 - - - - - - test - - ../data/Yosemite_L9.tif - gdal - 255 - 100 - - - - diff --git a/tests/visual_tests/styles/tiff-opaque-edge-gdal.xml b/tests/visual_tests/styles/tiff-opaque-edge-gdal.xml deleted file mode 100644 index 7e322aeac..000000000 --- a/tests/visual_tests/styles/tiff-opaque-edge-gdal.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - 256,256; 969,793 - - - - - - test - - - - ../../data/raster/river_wgs.tiff - gdal - - - - diff --git a/tests/visual_tests/styles/tiff-opaque-edge-gdal2.xml b/tests/visual_tests/styles/tiff-opaque-edge-gdal2.xml deleted file mode 100644 index d47af67dd..000000000 --- a/tests/visual_tests/styles/tiff-opaque-edge-gdal2.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - 600,400; 969,793 - - - - testmerc - - - - ../../data/raster/river_merc.tiff - gdal - - - diff --git a/tests/visual_tests/styles/tiff-opaque-edge-raster.xml b/tests/visual_tests/styles/tiff-opaque-edge-raster.xml deleted file mode 100644 index 35d9370d4..000000000 --- a/tests/visual_tests/styles/tiff-opaque-edge-raster.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - 256,256 - off - - - - - - test - - ../../data/raster/river_wgs.tiff - raster - 0,0,256,210 - - - - diff --git a/tests/visual_tests/styles/tiff-opaque-edge-raster2.xml b/tests/visual_tests/styles/tiff-opaque-edge-raster2.xml deleted file mode 100644 index 20ad342c4..000000000 --- a/tests/visual_tests/styles/tiff-opaque-edge-raster2.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - 600,400; 969,793 - - - - testmerc - - - - ../../data/raster/river_merc.tiff - -8249238.098993212,-486119.1339340762,-8024337.037783274,-302066.9754826002 - raster - - - diff --git a/tests/visual_tests/styles/tiff-reprojection-1.xml b/tests/visual_tests/styles/tiff-reprojection-1.xml deleted file mode 100644 index 004f1756a..000000000 --- a/tests/visual_tests/styles/tiff-reprojection-1.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - 250, 250 - - - - heat - - ../data/heat.tif - gdal - - - diff --git a/tests/visual_tests/styles/tiff-reprojection-2.xml b/tests/visual_tests/styles/tiff-reprojection-2.xml deleted file mode 100644 index 5a90d9bfd..000000000 --- a/tests/visual_tests/styles/tiff-reprojection-2.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - 250,250 - off - - - - - samp1 - - ../data/lower_columbia.tif - gdal - - - - diff --git a/tests/visual_tests/styles/tiff-resampling.xml b/tests/visual_tests/styles/tiff-resampling.xml deleted file mode 100644 index 9fe66cb87..000000000 --- a/tests/visual_tests/styles/tiff-resampling.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - 600,400 - - - - - - style - - ../data/snow-cover.tif - gdal - - - - diff --git a/tests/visual_tests/styles/tiff_colortable.xml b/tests/visual_tests/styles/tiff_colortable.xml deleted file mode 100644 index f6da4928d..000000000 --- a/tests/visual_tests/styles/tiff_colortable.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - 256,256 - - - - 2011_5km_vrt_nodata_style - - ../../data/raster/dataraster.tif - gdal - - - diff --git a/tests/visual_tests/styles/tiff_colortable_custom_nodata.xml b/tests/visual_tests/styles/tiff_colortable_custom_nodata.xml deleted file mode 100644 index eb30b12b7..000000000 --- a/tests/visual_tests/styles/tiff_colortable_custom_nodata.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - 256,256 - - - - 2011_5km_vrt_nodata_style - - ../../data/raster/dataraster.tif - 20 - gdal - - - diff --git a/tests/visual_tests/styles/vrt_colortable.xml b/tests/visual_tests/styles/vrt_colortable.xml deleted file mode 100644 index 4897a0a66..000000000 --- a/tests/visual_tests/styles/vrt_colortable.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - 256,256 - - - - 2011_5km_vrt_nodata_style - - ../../data/raster/dataraster.vrt - gdal - - - diff --git a/tests/visual_tests/styles/whole-centroid.xml b/tests/visual_tests/styles/whole-centroid.xml deleted file mode 100644 index d87c01d2f..000000000 --- a/tests/visual_tests/styles/whole-centroid.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - 600,400 - - - - - boundary - whole - - csv - 736908, 4390316, 2060771, 5942346 - ../data/whole-centroid.csv - | - - - diff --git a/tests/visual_tests/test.py b/tests/visual_tests/test.py deleted file mode 100755 index 75549c0f7..000000000 --- a/tests/visual_tests/test.py +++ /dev/null @@ -1,298 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import sys -import mapnik -#mapnik.logger.set_severity(mapnik.severity_type.None) -#mapnik.logger.set_severity(mapnik.severity_type.Debug) -import shutil -import os.path -import os -from compare import compare, compare_grids -import platform -import glob - -try: - import json -except ImportError: - import simplejson as json - -visual_output_dir = "/tmp/mapnik-visual-images" - -defaults = { - 'status': True, - 'sizes': [(500, 100)], - 'scales':[1.0,2.0], - 'agg': True, - 'cairo': mapnik.has_cairo(), - 'grid': mapnik.has_grid_renderer() -} - -if os.name == 'nt': - cairo_threshold = 10 - agg_threshold = 0 - grid_threshold = 0 -else: - cairo_threshold = 0 - agg_threshold = 0 - grid_threshold = 0 - -def render_cairo(m, output, scale_factor): - mapnik.render_to_file(m, output, 'ARGB32', scale_factor) - # open and re-save as png8 to save space - new_im = mapnik.Image.open(output) - new_im.save(output, 'png8:m=h') - -def render_grid(m, output, scale_factor): - grid = mapnik.Grid(m.width, m.height) - mapnik.render_layer(m, grid, layer=0, scale_factor=scale_factor) - utf1 = grid.encode('utf', resolution=4) - open(output,'wb').write(json.dumps(utf1, indent=1)) - -def render_agg(m, output, scale_factor): - mapnik.render_to_file(m, output, 'png8:m=h', scale_factor), - -renderers = [ - { 'name': 'agg', - 'render': render_agg, - 'compare': lambda actual, reference: compare(actual, reference, alpha=True), - 'threshold': agg_threshold, - 'filetype': 'png', - 'dir': 'images' - }, - { 'name': 'cairo', - 'render': render_cairo, - 'compare': lambda actual, reference: compare(actual, reference, alpha=True), - 'threshold': cairo_threshold, - 'filetype': 'png', - 'dir': 'images' - }, - { 'name': 'grid', - 'render': render_grid, - 'compare': lambda actual, reference: compare_grids(actual, reference, alpha=False), - 'threshold': grid_threshold, - 'filetype': 'json', - 'dir': 'grids' - } -] - -dirname = os.path.dirname(__file__) - -class Reporting: - DIFF = 1 - NOT_FOUND = 2 - OTHER = 3 - REPLACE = 4 - def __init__(self, quiet, overwrite_failures = False): - self.quiet = quiet - self.passed = 0 - self.failed = 0 - self.overwrite_failures = overwrite_failures - self.errors = [ #(type, actual, expected, diff, message) - ] - - def result_fail(self, actual, expected, diff): - self.failed += 1 - if self.quiet: - if platform.uname()[0] == 'Windows': - sys.stderr.write('.') - else: - sys.stderr.write('\x1b[31m.\x1b[0m') - else: - print '\x1b[31m✘\x1b[0m (\x1b[34m%u different pixels\x1b[0m)' % diff - - if self.overwrite_failures: - self.errors.append((self.REPLACE, actual, expected, diff, None)) - contents = open(actual, 'r').read() - open(expected, 'wb').write(contents) - else: - self.errors.append((self.DIFF, actual, expected, diff, None)) - - def result_pass(self, actual, expected, diff): - self.passed += 1 - if self.quiet: - if platform.uname()[0] == 'Windows': - sys.stderr.write('.') - else: - sys.stderr.write('\x1b[32m.\x1b[0m') - else: - if platform.uname()[0] == 'Windows': - print '\x1b[32m✓\x1b[0m' - else: - print '✓' - - def updating(self, actual, expected): - self.passed += 1 - if self.quiet: - sys.stderr.write('\x1b[33m.\x1b[0m') - else: - print '\x1b[33m✓\x1b[0m (\x1b[34mUpdating\x1b[0m)' - contents = open(actual, 'r').read() - open(expected, 'wb').write(contents) - - - def not_found(self, actual, expected): - self.failed += 1 - self.errors.append((self.NOT_FOUND, actual, expected, 0, None)) - if self.quiet: - sys.stderr.write('\x1b[33m.\x1b[0m') - else: - print '\x1b[33m?\x1b[0m (\x1b[34mReference file not found, creating\x1b[0m)' - contents = open(actual, 'r').read() - open(expected, 'wb').write(contents) - - def other_error(self, expected, message): - self.failed += 1 - self.errors.append((self.OTHER, None, expected, 0, message)) - if self.quiet: - sys.stderr.write('\x1b[31m.\x1b[0m') - else: - print '\x1b[31m✘\x1b[0m (\x1b[34m%s\x1b[0m)' % message - - def make_html_item(self,actual,expected,diff): - item = ''' -
- - - -
- ''' % (expected,expected,'%') - item += '
%s
' % (diff) - item += ''' -
- - - -
- ''' % (actual,actual,'%') - return item - - def summary(self): - if len(self.errors) == 0: - print '\nAll %s visual tests passed: \x1b[1;32m✓ \x1b[0m' % self.passed - return 0 - sortable_errors = [] - print "\nVisual rendering: %s failed / %s passed" % (len(self.errors), self.passed) - for idx, error in enumerate(self.errors): - if error[0] == self.OTHER: - print str(idx+1) + ") \x1b[31mfailure to run test:\x1b[0m %s (\x1b[34m%s\x1b[0m)" % (error[2],error[4]) - elif error[0] == self.NOT_FOUND: - print str(idx+1) + ") Generating reference image: '%s'" % error[2] - continue - elif error[0] == self.DIFF: - print str(idx+1) + ") \x1b[34m%s different pixels\x1b[0m:\n\t%s (\x1b[31mactual\x1b[0m)\n\t%s (\x1b[32mexpected\x1b[0m)" % (error[3], error[1], error[2]) - if '.png' in error[1]: # ignore grids - sortable_errors.append((error[3],error)) - elif error[0] == self.REPLACE: - print str(idx+1) + ") \x1b[31mreplaced reference with new version:\x1b[0m %s" % error[2] - if len(sortable_errors): - # drop failure results in folder - vdir = os.path.join(visual_output_dir,'visual-test-results') - if not os.path.exists(vdir): - os.makedirs(vdir) - html_template = open(os.path.join(dirname,'html_report_template.html'),'r').read() - name = 'comparison.html' - failures_realpath = os.path.join(vdir,name) - html_out = open(failures_realpath,'w+') - sortable_errors.sort(reverse=True) - html_body = '' - for item in sortable_errors: - # copy images into single directory - actual = item[1][1] - expected = item[1][2] - diff = item[0] - actual_new = os.path.join(vdir,os.path.basename(actual)) - shutil.copy(actual,actual_new) - expected_new = os.path.join(vdir,os.path.basename(expected)) - shutil.copy(expected,expected_new) - html_body += self.make_html_item(os.path.relpath(actual_new,vdir),os.path.relpath(expected_new,vdir),diff) - html_out.write(html_template.replace('{{RESULTS}}',html_body)) - print 'View failures by opening %s' % failures_realpath - return 1 - -def render(filename, config, scale_factor, reporting): - m = mapnik.Map(*config['sizes'][0]) - - try: - mapnik.load_map(m, os.path.join(dirname, "styles", filename), True) - - if not (m.parameters['status'] if ('status' in m.parameters) else config['status']): - return - except Exception, e: - if 'Could not create datasource' in str(e) \ - or 'could not connect' in str(e): - return m - reporting.other_error(filename, repr(e)) - return m - - sizes = config['sizes']; - if 'sizes' in m.parameters: - sizes = [[int(i) for i in size.split(',')] for size in m.parameters['sizes'].split(';')] - - for size in sizes: - m.width, m.height = size - - if 'bbox' in m.parameters: - bbox = mapnik.Box2d.from_string(str(m.parameters['bbox'])) - m.zoom_to_box(bbox) - else: - m.zoom_all() - - name = filename[0:-4] - postfix = "%s-%d-%d-%s" % (name, m.width, m.height, scale_factor) - for renderer in renderers: - if config.get(renderer['name'], True): - expected = os.path.join(dirname, renderer['dir'], '%s-%s-reference.%s' % - (postfix, renderer['name'], renderer['filetype'])) - actual = os.path.join(visual_output_dir, '%s-%s.%s' % - (postfix, renderer['name'], renderer['filetype'])) - if not quiet: - print "\"%s\" with %s..." % (postfix, renderer['name']), - try: - renderer['render'](m, actual, scale_factor) - if not os.path.exists(expected): - reporting.not_found(actual, expected) - elif os.environ.get('UPDATE'): - reporting.updating(actual, expected) - else: - diff = renderer['compare'](actual, expected) - if diff > renderer['threshold']: - reporting.result_fail(actual, expected, diff) - else: - reporting.result_pass(actual, expected, diff) - except Exception, e: - reporting.other_error(expected, repr(e)) - return m - -if __name__ == "__main__": - if '-q' in sys.argv: - quiet = True - sys.argv.remove('-q') - else: - quiet = False - - if '--overwrite' in sys.argv: - overwrite_failures = True - sys.argv.remove('--overwrite') - else: - overwrite_failures = False - - files = None - if len(sys.argv) > 1: - files = [name + ".xml" for name in sys.argv[1:]] - else: - files = [os.path.basename(file) for file in glob.glob(os.path.join(dirname, "styles/*.xml"))] - - if not os.path.exists(visual_output_dir): - os.makedirs(visual_output_dir) - - reporting = Reporting(quiet, overwrite_failures) - try: - for filename in files: - config = dict(defaults) - for scale_factor in config['scales']: - m = render(filename, config, scale_factor, reporting) - #mapnik.save_map(m, os.path.join(dirname, 'xml_output', "%s-out.xml" % filename)) - except KeyboardInterrupt: - pass - sys.exit(reporting.summary()) diff --git a/tests/visual_tests/test_python.py b/tests/visual_tests/test_python.py deleted file mode 100755 index 4fd7c2cbe..000000000 --- a/tests/visual_tests/test_python.py +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env python -import mapnik -import os.path -from compare import compare - -dirname = os.path.dirname(__file__) -visual_output_dir = "/tmp/mapnik-visual-images" - -class MyText(mapnik.FormattingNode): - def __init__(self): - mapnik.FormattingNode.__init__(self) - self.expr = mapnik.Expression("[name]") - self.expr_nr = mapnik.Expression("[nr]") - - def apply(self, properties, feature, output): - colors = [mapnik.Color('red'), - mapnik.Color('green'), - mapnik.Color('blue')] - text = self.expr.evaluate(feature) - if int(feature['nr']) > 5: - i = 0 - my_properties = mapnik.CharProperties(properties) - for char in text: - my_properties.fill = colors[i % len(colors)] - output.append(my_properties, char) - i += 1 - else: - output.append(properties, text) - - def add_expressions(self, output): - output.insert(self.expr) - output.insert(self.expr_nr) - - -class IfElse(mapnik.FormattingNode): - def __init__(self, condition, if_node, else_node): - mapnik.FormattingNode.__init__(self) - self.condition = mapnik.Expression(condition) - self.if_node = if_node - self.else_node = else_node - - def apply(self, properties, feature, output): - c = self.condition.evaluate(feature) - if c: - self.if_node.apply(properties, feature, output) - else: - self.else_node.apply(properties, feature, output) - - def add_expressions(self, output): - output.insert(self.condition) - self.if_node.add_expressions(output) - self.else_node.add_expressions(output) - -m = mapnik.Map(600, 100) -m.background = mapnik.Color('white') - -text = mapnik.TextSymbolizer() -text.placements.defaults.displacement = (0, 5) -text.placements.defaults.format.face_name = 'DejaVu Sans Book' - -point = mapnik.PointSymbolizer() - -rule = mapnik.Rule() -rule.symbols.append(text) -rule.symbols.append(point) - -style = mapnik.Style() -style.rules.append(rule) - -m.append_style('Style', style) - - -layer = mapnik.Layer('Layer') -layer.datasource = mapnik.Datasource(**{'type':'csv','file':os.path.join(dirname,"data/points.csv")}) -layer.styles.append('Style') -m.layers.append(layer) - -bbox = mapnik.Box2d(-0.05, -0.01, 0.95, 0.01) -m.zoom_to_box(bbox) - -formatnode = mapnik.FormattingFormat() -formatnode.child = mapnik.FormattingText("[name]") -formatnode.fill = mapnik.Color("green") - -format_trees = [ - ('TextNode', mapnik.FormattingText("[name]")), - ('MyText', MyText()), - ('IfElse', IfElse("[nr] != 5", - mapnik.FormattingText("[name]"), - mapnik.FormattingText("'SPECIAL!'"))), - ('Format', formatnode), - ('List', mapnik.FormattingList([ - mapnik.FormattingText("[name]+'\n'"), - MyText() - ]) - ) -] - - -for format_tree in format_trees: - text.placements.defaults.format_tree = format_tree[1] - actual = os.path.join(visual_output_dir, 'python-%s.png' % format_tree[0]) - expected = os.path.join(dirname,"images", 'python-%s-reference.png' % format_tree[0]) - mapnik.render_to_file(m, actual, 'png8:m=h') - diff = compare(actual,expected) - if diff > 0: - print 'comparision failed between:\n %s (actual)\n %s (expected)' % (actual,expected) diff --git a/tests/visual_tests/xml_output/.gitignore b/tests/visual_tests/xml_output/.gitignore deleted file mode 100644 index 6722cd96e..000000000 --- a/tests/visual_tests/xml_output/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.xml diff --git a/utils/performance/build.py b/utils/performance/build.py deleted file mode 100644 index 8fb7d6b32..000000000 --- a/utils/performance/build.py +++ /dev/null @@ -1,32 +0,0 @@ -# -# This file is part of Mapnik (c++ mapping toolkit) -# -# Copyright (C) 2013 Artem Pavlenko -# -# Mapnik is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -# -# - - -import os -Import ('env') - -TARGET = 'mapnik-speed-check' - -if 'uninstall' not in COMMAND_LINE_TARGETS: - env.Install(os.path.join(env['INSTALL_PREFIX'],'bin'), TARGET) - env.Alias('install', os.path.join(env['INSTALL_PREFIX'],'bin')) - -env['create_uninstall_target'](env, os.path.join(env['INSTALL_PREFIX'],'bin',TARGET)) diff --git a/utils/performance/mapnik-speed-check b/utils/performance/mapnik-speed-check deleted file mode 100755 index 44cf0bc84..000000000 --- a/utils/performance/mapnik-speed-check +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env python - -import sys -import mapnik -#import mapnik -from timeit import Timer, time - -if not len(sys.argv) >= 3: - sys.exit('usage: mapnik-speed-check [minx,miny,maxx,maxy]') - -m = mapnik.Map(256,256) -stylesheet = sys.argv[1] - -TOTAL_TIME = 0 - -def load(): - global TOTAL_TIME - global stylesheet - start = time.time() - m = mapnik.Map(256,256) - mapnik.load_map(m,stylesheet) - TOTAL_TIME += (time.time() - start) - -def init(stylesheet): - mapnik.load_map(m,stylesheet) - m.zoom_all() - -def render(): - global TOTAL_TIME - start = time.time() - im = mapnik.Image(m.width,m.height) - mapnik.render(m,im) - TOTAL_TIME += (time.time() - start) - -def f_(set): - min_ = str(min(set)*1000)[:6] - avg = str((sum(set)/len(set))*1000)[:6] - print 'min: %sms | avg: %sms | total: %ss' % (min_,avg,str(TOTAL_TIME)[:6]) - -if __name__=='__main__': - # if passed, set up bbox - - #test_ = "load()" - test_ = "render()" - init(stylesheet) - - if len(sys.argv) == 4: - bbox = sys.argv[3] - if ',' in bbox: - parts = bbox.split(',') - else: - parts = bbox.split(' ') - env = mapnik.Box2d(*map(float,parts)) - m.zoom_to_box(env) - - # load once - making sure mmap'd shapefiles are loaded - eval(test_) - TOTAL_TIME = 0 - - # now actually run the test - t = Timer(test_, "from __main__ import %s" % test_.replace('()','')) - iterations = int(sys.argv[2]) - f_(t.repeat(iterations,1)) \ No newline at end of file diff --git a/utils/upgrade_map_xml/build.py b/utils/upgrade_map_xml/build.py deleted file mode 100644 index 648130f0a..000000000 --- a/utils/upgrade_map_xml/build.py +++ /dev/null @@ -1,31 +0,0 @@ -# -# This file is part of Mapnik (c++ mapping toolkit) -# -# Copyright (C) 2013 Artem Pavlenko -# -# Mapnik is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -# -# - -import os -Import ('env') - -target = os.path.join(env['INSTALL_PREFIX'],'bin') - -if 'uninstall' not in COMMAND_LINE_TARGETS: - env.Install(target,'upgrade_map_xml.py') - env.Alias('install', os.path.join(env['INSTALL_PREFIX'],'bin')) - -env['create_uninstall_target'](env, os.path.join(target,'upgrade_map_xml.py')) diff --git a/utils/upgrade_map_xml/upgrade_map_xml.py b/utils/upgrade_map_xml/upgrade_map_xml.py deleted file mode 100755 index 45561a7d3..000000000 --- a/utils/upgrade_map_xml/upgrade_map_xml.py +++ /dev/null @@ -1,275 +0,0 @@ -#!/usr/bin/env python - -import os -import re -import sys -import optparse -import tempfile - -__version__ = '0.1.0' - -HAS_LXML = False - -try: - import lxml.etree as etree - HAS_LXML = True -except ImportError: - try: - import elementtree.ElementTree as etree - except ImportError: - import xml.etree.ElementTree as etree - -def color_text(color, text): - if os.name == 'nt': - return text - return "\033[9%sm%s\033[0m" % (color,text) - -def indent(elem, level=0): - """ http://infix.se/2007/02/06/gentlemen-indent-your-xml - """ - i = "\n" + level*" " - if len(elem): - if not elem.text or not elem.text.strip(): - elem.text = i + " " - for e in elem: - indent(e, level+1) - if not e.tail or not e.tail.strip(): - e.tail = i + " " - if not e.tail or not e.tail.strip(): - e.tail = i - else: - if level and (not elem.tail or not elem.tail.strip()): - elem.tail = i - -def name2expr(sym): - if 'name' not in sym.attrib: return - name = sym.attrib['name'] - if re.match('^\[.*\]',name) is None \ - and '[' not in name \ - and ']' not in name \ - and not name.startswith("'") \ - and not name.endswith("'") \ - and re.match("^\'.*\'",name) is None: - print>>sys.stderr,"Fixing %s" % name - name = '[%s]' % name - sym.attrib.pop('name') - sym.text = name - -def handle_attr_changes(sym): - # http://www.w3schools.com/css/pr_text_text-transform.asp - # http://code.google.com/p/mapnik-utils/issues/detail?id=32&colspec=ID%20Type%20Status%20Priority%20Component%20Owner%20Summary - text_convert = sym.attrib.get('text_convert',sym.attrib.get('text_transform',sym.attrib.get('text_transform'))) - if text_convert: - # note: css supports text-transform:capitalize but Mapnik does not (yet) - t_ = {'tolower':'lowercase','toupper':'uppercase','none':'none'} - new = t_.get(text_convert) - if new: - sym.attrib['text-transform'] = new - else: - sym.attrib['text-transform'] = text_convert - if sym.attrib.get('text_convert'): - sym.attrib.pop('text_convert') - if sym.attrib.get('text_transform'): - sym.attrib.pop('text_transform') - - # https://github.com/mapnik/mapnik/issues/807 - justify_alignment = sym.attrib.get('justify_alignment',sym.attrib.get('justify-alignment')) - if justify_alignment and justify_alignment == "middle": - sym.attrib['justify-alignment'] = 'center' - - minimum_distance = sym.attrib.get('min_distance') - if minimum_distance: - sym.attrib['minimum-distance'] = minimum_distance - sym.attrib.pop('min_distance') - - minimum_padding = sym.attrib.get('min_padding') - if minimum_padding: - sym.attrib['minimum-padding'] = minimum_padding - sym.attrib.pop('min_padding') - -def fixup_sym_with_image(sym): - if sym.attrib.get('width'): - sym.attrib.pop('width') - if sym.attrib.get('height'): - sym.attrib.pop('height') - if sym.attrib.get('type'): - sym.attrib.pop('type') - -def fixup_sym_attributes(sym): - if len(sym.findall('CssParameter')): - # copy, so we don't loose after clear() - attrib = dict(sym.attrib) - for css in sym.findall('CssParameter'): - key = css.attrib.get('name') - value = css.text - attrib[key] = value - sym.clear() # remove CssParameter elements - for k,v in attrib.items(): # insert attributes instead - sym.attrib[k] = v - -def underscore2dash(elem): - for i in elem.attrib.items(): - if '_' in i[0]: - new = i[0].replace('_','-') - old = i[0] - elem.attrib[new] = i[1] - elem.attrib.pop(old) - print>>sys.stderr,"Changing %s to %s" % (old,new) - - -def upgrade(input_xml,output_xml=None,indent_xml=True): - - if not os.path.exists(input_xml): - sys.stderr.write('input xml "%s" does not exist' % input_xml) - sys.exit(1) - - pre_read = open(input_xml,'r') - if '!ENTITY' in pre_read.read() and not HAS_LXML: - sys.stderr.write('\nSorry, it appears the xml you are trying to upgrade has entities, which requires lxml (python bindings to libxml2)\n') - sys.stderr.write('Install lxml with: "easy_install lxml" or download from http://codespeak.net/lxml/\n') - - sys.exit(1) - - try: - tree = etree.parse(input_xml) - except: - print 'Could not parse "%s" invalid XML' % input_xml - return - - if hasattr(tree,'xinclude'): - tree.xinclude() - root = tree.getroot() - - # rename 'bgcolor' to 'background-color' - if root.attrib.get('bgcolor'): - root.attrib['background-color'] = root.attrib.get('bgcolor') - root.attrib.pop('bgcolor') - - # underscores to spaces for - underscore2dash(root) - - root.set('minimum-version', '0.7.2') - - # underscores to spaces for - fontset = root.findall('FontSet') or root.findall('*/FontSet') - for f in fontset: - font = f.findall('Font') - for f_ in font: - underscore2dash(f_) - - # underscores to spaces for - layers = root.findall('Layer') or root.findall('*/Layer') - for l in layers: - underscore2dash(l) - - - styles = root.findall('Style') or root.findall('*/Style') - if not len(styles): - sys.stderr.write('### Warning, no styles encountered and nothing able to be upgraded!\n') - else: - for style in styles: - for rule in style.findall('Rule'): - for sym in rule.findall('TextSymbolizer') or []: - name2expr(sym) - handle_attr_changes(sym) - fixup_sym_attributes(sym) - underscore2dash(sym) - for sym in rule.findall('ShieldSymbolizer') or []: - name2expr(sym) - handle_attr_changes(sym) - fixup_sym_attributes(sym) - underscore2dash(sym) - fixup_sym_with_image(sym) - for sym in rule.findall('PointSymbolizer') or []: - fixup_sym_with_image(sym) - fixup_sym_attributes(sym) - underscore2dash(sym) - for sym in rule.findall('PolygonPatternSymbolizer') or []: - fixup_sym_with_image(sym) - fixup_sym_attributes(sym) - underscore2dash(sym) - for sym in rule.findall('LinePatternSymbolizer') or []: - fixup_sym_with_image(sym) - fixup_sym_attributes(sym) - underscore2dash(sym) - for sym in rule.findall('LineSymbolizer') or []: - fixup_sym_attributes(sym) - underscore2dash(sym) - for sym in rule.findall('PolygonSymbolizer') or []: - fixup_sym_attributes(sym) - underscore2dash(sym) - for sym in rule.findall('RasterSymbolizer') or []: - fixup_sym_attributes(sym) - underscore2dash(sym) - for sym in rule.findall('BuildingSymbolizer') or []: - fixup_sym_attributes(sym) - underscore2dash(sym) - for sym in rule.findall('MarkersSymbolizer') or []: - fixup_sym_attributes(sym) - underscore2dash(sym) - - if indent_xml: - indent(root) - - if output_xml: - tree.write(output_xml) - else: - tree.write(input_xml) - -parser = optparse.OptionParser(usage="""%prog [options] - -Upgrade a Mapnik XML stylesheet to Mapnik 2.0 - -Full help: - $ %prog -h (or --help for possible options) - -Read 'map.xml' and write new 'map2.xml' - $ %prog map.xml map2.xml - -Update 'map.xml' in place (*Careful*) - $ %prog map.xml --in-place - -""", version='%prog ' + __version__) - -parser.add_option('--indent', - dest='indent_xml', - action='store_true', - default=False, - help='Indent the resulting XML') - -parser.add_option('--in-place', - dest='update_in_place', - action='store_true', - default=False, - help='Update and overwrite the map in place') - -if __name__ == "__main__": - - (options, args) = parser.parse_args() - if not len(args) > 0: - parser.error("Please provide the path to a map.xml and a new xml to write") - - input_xml = args[0] - output_xml = None - - if len(args) < 3 and not options.update_in_place: - if len(args) == 2: - output_xml = args[1] - - if (len(args) == 1) or (input_xml == output_xml): - parser.error(color_text(1,'\n\nAre you sure you want to overwrite "%s"?\nIf so, then pass --in-place to confirm.\nOtherwise pass a different filename to write an upgraded copy to.\n' % input_xml)) - - print 'Upgrading "%s" to "%s"...' % (input_xml,output_xml) - upgrade(input_xml,output_xml=output_xml,indent_xml=options.indent_xml) - - elif len(args) == 1: - print 'Upgrading "%s"...' % (input_xml) - upgrade(input_xml,output_xml=output_xml,indent_xml=options.indent_xml) - - elif len(args) > 1: # assume a list of inputs - found = [] - for input_xml in args: - if os.path.exists(input_xml) and input_xml not in found: - print 'Upgrading "%s" in place...' % input_xml - found.append(input_xml) - upgrade(input_xml,output_xml=None,indent_xml=options.indent_xml) diff --git a/utils/upgrade_map_xml/upgrade_map_xml_keep_ent.py b/utils/upgrade_map_xml/upgrade_map_xml_keep_ent.py deleted file mode 100755 index 74330de9c..000000000 --- a/utils/upgrade_map_xml/upgrade_map_xml_keep_ent.py +++ /dev/null @@ -1,194 +0,0 @@ -#!/usr/bin/env python -import os -import sys -from lxml import etree -from lxml import objectify -import re -import StringIO - -# APPROACH: -# There is no way get the original DOCTYPE declaration with lxml, thus -# first I have to get it with regular expressions, after updating -# the xml it is appended under the xml declaration -# -# A dummy_map tree is created to resolve some layers entities. -# -# That is, the script looks into the includes folder and resolves the layer -# entities manually to append them at the end of the xml tree -# and update them. - -# NOTE: It will only resolve entities that are declared like -# -# -# If your entity name starts with `layer', the script will try to -# find a file where to extract from the layers to be updated -dummy_map = """ - -%s - -""" - -def name2expr(sym): - if 'name' not in sym.attrib: return - name = sym.attrib['name'] - if re.match('^\[.*\]$',name) is None \ - and '[' not in name \ - and ']' not in name \ - and not name.startswith("'") \ - and not name.endswith("'") \ - and re.match("^\'.*\'",name) is None: - print >> sys.stderr,"Fixing %s" % name - name = '[%s]' % name - sym.attrib.pop('name') - sym._setText(name) - -def fixup_pointsym(sym): - if sym.attrib.get('width'): - sym.attrib.pop('width') - if sym.attrib.get('height'): - sym.attrib.pop('height') - if sym.attrib.get('type'): - sym.attrib.pop('type') - -def fixup_sym_attributes(sym): - if not hasattr(sym,'CssParameter'): - return - attrib = {} - for css in sym.CssParameter: - key = css.attrib.get('name') - value = css.text - attrib[key] = value - sym.clear() # remove CssParameter elements - for k,v in attrib.items(): # insert attributes instead - sym.attrib[k] = v - - -if __name__ == "__main__": - - # Required parameters: - # map_xml_file: outdated stylesheet file - # output_file: new stylesheet file - # includes folder - - if len(sys.argv) < 4: - print >> sys.stderr,'Usage: %s ' % sys.argv[0] - sys.exit(1) - xml = sys.argv[1] - - if sys.argv[3] is not None: - includes_folder = sys.argv[3] - - # Get the good doctype with the unresolved external entities - # since it is forever lost once the xml is parsed - file = open(xml, 'r') - xml_string = file.read() - file.close() - match = re.match(r'(?ims).*DOCTYPE.*\[.*\]\>', xml_string) - good_doctype = "" - if match: - good_doctype = match.group() - - # Two trees. One with the unresolved entities... - parser = objectify.makeparser(resolve_entities=False) - # tree = objectify.parse(xml, parser=parser) - # root = tree.getroot() - - # ...and another with the entities resolved. - # This dummy tree expands the entities that I found and puts them - # in a dictionary (entity) => resolved_entity - # NOTE: `findall' makes the script very slow - - # First get the entities declared in the header - temp_xml = ''.join([good_doctype, dummy_map % '']) - expanded_tree = objectify.parse(StringIO.StringIO(temp_xml)) - expanded_tree_string = etree.tostring(expanded_tree, - pretty_print=True, - xml_declaration=True, - encoding="utf-8") - match = re.match(r'(?ims).*DOCTYPE.*\[.*\]\>', expanded_tree_string) - resolved_doctype = "" - if match: - resolved_doctype = match.group() - - doctype_entities = {} - # e.g.: - # - for line in StringIO.StringIO(resolved_doctype).readlines(): - entity_kv = re.match(r'(?ims)(.*ENTITY.*?(?P\b[a-z09].*?\b) .*\"(?P.*)\").*', line) - # Only consider internal entities - if (entity_kv is not None) and not (re.search("%", line)): - doctype_entities[''.join(['&',entity_kv.groupdict()['entity_key']])] = entity_kv.groupdict()['entity_value'] - - layer_entities = [] - for entity in doctype_entities: - if re.search('layer', entity): - layer_entities.append(entity) - - - # Remove the layer entities - fixed_xml_string = xml_string - for layer in layer_entities: - pattern = '(?ims)%s;' % layer - fixed_xml_string = re.sub(pattern, '', fixed_xml_string) - print "removed ", layer - - # Tree to be updated to be mapnik compliant - tree = objectify.parse(StringIO.StringIO(fixed_xml_string), parser=parser) - root = tree.getroot() - - for layer in layer_entities: - file = open("%s/%s" % (includes_folder, doctype_entities[layer])) - layer_xml_string = file.read() - file.close() - - print "Found this layer:", layer - # Parse without resolving entities - layer_xml = ''.join([good_doctype, dummy_map % layer_xml_string]) - layer_tree = objectify.parse(StringIO.StringIO(layer_xml), parser=parser) - layer_root = layer_tree.getroot() - layer_children = layer_root.getchildren() - # Append this layer's styles and layers to the tree to be updated - # print layer_children - root.extend(layer_children) - - # Update the styles - for style in root.Style: - if len(style.Rule): - # fix [name] thing - for rule in style.Rule: - if hasattr(rule,'TextSymbolizer'): - for sym in rule.TextSymbolizer: - name2expr(sym) - if hasattr(rule,'ShieldSymbolizer'): - for sym in rule.ShieldSymbolizer: - name2expr(sym) - if hasattr(rule,'PointSymbolizer'): - for sym in rule.PointSymbolizer: - fixup_pointsym(sym) - if hasattr(rule,'LineSymbolizer') : - for sym in rule.LineSymbolizer: - fixup_sym_attributes(sym) - if hasattr(rule,'PolygonSymbolizer') : - for sym in rule.PolygonSymbolizer: - fixup_sym_attributes(sym) - if hasattr(rule,'RasterSymbolizer') : - for sym in rule.RasterSymbolizer: - fixup_sym_attributes(sym) - if hasattr(rule,'BuildingSymbolizer') : - for sym in rule.BuildingSymbolizer: - fixup_sym_attributes(sym) - - updated_xml = etree.tostring(tree, - pretty_print=True, - xml_declaration=True, - encoding="utf-8", - standalone=True) - - # Insert the original doctype declaration - fixed_updated_xml = re.sub(r'(?ims)^.*DOCTYPE.*\[.*\]\>', good_doctype, updated_xml) - - output_file = open(sys.argv[2], 'w') - output_file.write(fixed_updated_xml) - output_file.close() - - # print fixed_updated_xml