texlive[57291] Build/source/utils: asy 2.68 sources

commits+karl at tug.org commits+karl at tug.org
Sat Jan 2 17:31:31 CET 2021


Revision: 57291
          http://tug.org/svn/texlive?view=revision&revision=57291
Author:   karl
Date:     2021-01-02 17:31:31 +0100 (Sat, 02 Jan 2021)
Log Message:
-----------
asy 2.68 sources

Modified Paths:
--------------
    trunk/Build/source/utils/README
    trunk/Build/source/utils/asymptote/BUGS
    trunk/Build/source/utils/asymptote/ChangeLog
    trunk/Build/source/utils/asymptote/Delaunay.cc
    trunk/Build/source/utils/asymptote/GUI/Window1.py
    trunk/Build/source/utils/asymptote/GUI/configs/xasyconfig.cson
    trunk/Build/source/utils/asymptote/GUI/icons_rc.py
    trunk/Build/source/utils/asymptote/GUI/setup.py
    trunk/Build/source/utils/asymptote/GUI/xasy2asy.py
    trunk/Build/source/utils/asymptote/INSTALL
    trunk/Build/source/utils/asymptote/Makefile.in
    trunk/Build/source/utils/asymptote/ReleaseNotes
    trunk/Build/source/utils/asymptote/access.cc
    trunk/Build/source/utils/asymptote/access.h
    trunk/Build/source/utils/asymptote/align.h
    trunk/Build/source/utils/asymptote/angle.h
    trunk/Build/source/utils/asymptote/application.cc
    trunk/Build/source/utils/asymptote/application.h
    trunk/Build/source/utils/asymptote/array.cc
    trunk/Build/source/utils/asymptote/array.h
    trunk/Build/source/utils/asymptote/arrayop.h
    trunk/Build/source/utils/asymptote/asy-keywords.el
    trunk/Build/source/utils/asymptote/asy.list
    trunk/Build/source/utils/asymptote/asymptote.nsi
    trunk/Build/source/utils/asymptote/asymptote.spec
    trunk/Build/source/utils/asymptote/base/animation.asy
    trunk/Build/source/utils/asymptote/base/asy-mode.el
    trunk/Build/source/utils/asymptote/base/babel.asy
    trunk/Build/source/utils/asymptote/base/bezulate.asy
    trunk/Build/source/utils/asymptote/base/binarytree.asy
    trunk/Build/source/utils/asymptote/base/bsp.asy
    trunk/Build/source/utils/asymptote/base/colormap.asy
    trunk/Build/source/utils/asymptote/base/contour.asy
    trunk/Build/source/utils/asymptote/base/contour3.asy
    trunk/Build/source/utils/asymptote/base/embed.asy
    trunk/Build/source/utils/asymptote/base/external.asy
    trunk/Build/source/utils/asymptote/base/feynman.asy
    trunk/Build/source/utils/asymptote/base/flowchart.asy
    trunk/Build/source/utils/asymptote/base/geometry.asy
    trunk/Build/source/utils/asymptote/base/graph.asy
    trunk/Build/source/utils/asymptote/base/graph3.asy
    trunk/Build/source/utils/asymptote/base/graph_splinetype.asy
    trunk/Build/source/utils/asymptote/base/grid3.asy
    trunk/Build/source/utils/asymptote/base/interpolate.asy
    trunk/Build/source/utils/asymptote/base/labelpath3.asy
    trunk/Build/source/utils/asymptote/base/lmfit.asy
    trunk/Build/source/utils/asymptote/base/math.asy
    trunk/Build/source/utils/asymptote/base/metapost.asy
    trunk/Build/source/utils/asymptote/base/obj.asy
    trunk/Build/source/utils/asymptote/base/ode.asy
    trunk/Build/source/utils/asymptote/base/palette.asy
    trunk/Build/source/utils/asymptote/base/patterns.asy
    trunk/Build/source/utils/asymptote/base/plain.asy
    trunk/Build/source/utils/asymptote/base/plain_Label.asy
    trunk/Build/source/utils/asymptote/base/plain_arcs.asy
    trunk/Build/source/utils/asymptote/base/plain_arrows.asy
    trunk/Build/source/utils/asymptote/base/plain_bounds.asy
    trunk/Build/source/utils/asymptote/base/plain_margins.asy
    trunk/Build/source/utils/asymptote/base/plain_picture.asy
    trunk/Build/source/utils/asymptote/base/plain_shipout.asy
    trunk/Build/source/utils/asymptote/base/rationalSimplex.asy
    trunk/Build/source/utils/asymptote/base/slide.asy
    trunk/Build/source/utils/asymptote/base/slopefield.asy
    trunk/Build/source/utils/asymptote/base/three.asy
    trunk/Build/source/utils/asymptote/base/three_light.asy
    trunk/Build/source/utils/asymptote/base/three_surface.asy
    trunk/Build/source/utils/asymptote/base/three_tube.asy
    trunk/Build/source/utils/asymptote/base/tube.asy
    trunk/Build/source/utils/asymptote/base/webgl/asygl.js
    trunk/Build/source/utils/asymptote/bbox.h
    trunk/Build/source/utils/asymptote/bbox3.h
    trunk/Build/source/utils/asymptote/beziercurve.cc
    trunk/Build/source/utils/asymptote/beziercurve.h
    trunk/Build/source/utils/asymptote/bezierpatch.cc
    trunk/Build/source/utils/asymptote/bezierpatch.h
    trunk/Build/source/utils/asymptote/build-scripts/HOWTO-MSWindows
    trunk/Build/source/utils/asymptote/build-scripts/README-binaries
    trunk/Build/source/utils/asymptote/build-scripts/build-asygl
    trunk/Build/source/utils/asymptote/build-scripts/build-asymptote.dos
    trunk/Build/source/utils/asymptote/builtin.cc
    trunk/Build/source/utils/asymptote/builtin.h
    trunk/Build/source/utils/asymptote/callable.h
    trunk/Build/source/utils/asymptote/camperror.cc
    trunk/Build/source/utils/asymptote/camperror.h
    trunk/Build/source/utils/asymptote/castop.h
    trunk/Build/source/utils/asymptote/coder.cc
    trunk/Build/source/utils/asymptote/coder.h
    trunk/Build/source/utils/asymptote/common.h
    trunk/Build/source/utils/asymptote/config.guess
    trunk/Build/source/utils/asymptote/config.h.in
    trunk/Build/source/utils/asymptote/config.sub
    trunk/Build/source/utils/asymptote/configure
    trunk/Build/source/utils/asymptote/configure.ac
    trunk/Build/source/utils/asymptote/constructor.cc
    trunk/Build/source/utils/asymptote/dec.cc
    trunk/Build/source/utils/asymptote/dec.h
    trunk/Build/source/utils/asymptote/doc/CAD.pdf
    trunk/Build/source/utils/asymptote/doc/CDlabel.asy
    trunk/Build/source/utils/asymptote/doc/FAQ/asy-faq.bfnn
    trunk/Build/source/utils/asymptote/doc/FAQ/asy-faq.info
    trunk/Build/source/utils/asymptote/doc/FAQ/bfnnconv.pl
    trunk/Build/source/utils/asymptote/doc/FAQ/install-sh
    trunk/Build/source/utils/asymptote/doc/FAQ/m-html.pl
    trunk/Build/source/utils/asymptote/doc/HermiteSpline.asy
    trunk/Build/source/utils/asymptote/doc/TeXShopAndAsymptote.pdf
    trunk/Build/source/utils/asymptote/doc/asy-latex.pdf
    trunk/Build/source/utils/asymptote/doc/asy.1
    trunk/Build/source/utils/asymptote/doc/asyRefCard.pdf
    trunk/Build/source/utils/asymptote/doc/asymptote.pdf
    trunk/Build/source/utils/asymptote/doc/asymptote.texi
    trunk/Build/source/utils/asymptote/doc/diatom.asy
    trunk/Build/source/utils/asymptote/doc/elliptic.asy
    trunk/Build/source/utils/asymptote/doc/exp.asy
    trunk/Build/source/utils/asymptote/doc/extra/intro.asy
    trunk/Build/source/utils/asymptote/doc/flowchartdemo.asy
    trunk/Build/source/utils/asymptote/doc/icon.asy
    trunk/Build/source/utils/asymptote/doc/imagecontour.asy
    trunk/Build/source/utils/asymptote/doc/install-sh
    trunk/Build/source/utils/asymptote/doc/leastsquares.asy
    trunk/Build/source/utils/asymptote/doc/legend.asy
    trunk/Build/source/utils/asymptote/doc/linetype.asy
    trunk/Build/source/utils/asymptote/doc/logo.asy
    trunk/Build/source/utils/asymptote/doc/markers1.asy
    trunk/Build/source/utils/asymptote/doc/png/asymptote.info
    trunk/Build/source/utils/asymptote/doc/secondaryaxis.asy
    trunk/Build/source/utils/asymptote/drawclipbegin.h
    trunk/Build/source/utils/asymptote/drawclipend.h
    trunk/Build/source/utils/asymptote/drawelement.h
    trunk/Build/source/utils/asymptote/drawfill.cc
    trunk/Build/source/utils/asymptote/drawfill.h
    trunk/Build/source/utils/asymptote/drawgrestore.h
    trunk/Build/source/utils/asymptote/drawgroup.h
    trunk/Build/source/utils/asymptote/drawgsave.h
    trunk/Build/source/utils/asymptote/drawimage.h
    trunk/Build/source/utils/asymptote/drawlabel.cc
    trunk/Build/source/utils/asymptote/drawlabel.h
    trunk/Build/source/utils/asymptote/drawlayer.h
    trunk/Build/source/utils/asymptote/drawpath.cc
    trunk/Build/source/utils/asymptote/drawpath.h
    trunk/Build/source/utils/asymptote/drawpath3.cc
    trunk/Build/source/utils/asymptote/drawpath3.h
    trunk/Build/source/utils/asymptote/drawsurface.cc
    trunk/Build/source/utils/asymptote/drawsurface.h
    trunk/Build/source/utils/asymptote/drawverbatim.h
    trunk/Build/source/utils/asymptote/entry.cc
    trunk/Build/source/utils/asymptote/entry.h
    trunk/Build/source/utils/asymptote/env.cc
    trunk/Build/source/utils/asymptote/env.h
    trunk/Build/source/utils/asymptote/errormsg.cc
    trunk/Build/source/utils/asymptote/errormsg.h
    trunk/Build/source/utils/asymptote/examples/1overx.asy
    trunk/Build/source/utils/asymptote/examples/BezierPatch.asy
    trunk/Build/source/utils/asymptote/examples/BezierSurface.asy
    trunk/Build/source/utils/asymptote/examples/Gouraud.asy
    trunk/Build/source/utils/asymptote/examples/Klein.asy
    trunk/Build/source/utils/asymptote/examples/NURBScurve.asy
    trunk/Build/source/utils/asymptote/examples/NURBSsphere.asy
    trunk/Build/source/utils/asymptote/examples/NURBSsurface.asy
    trunk/Build/source/utils/asymptote/examples/RiemannSphere.asy
    trunk/Build/source/utils/asymptote/examples/RiemannSurface.asy
    trunk/Build/source/utils/asymptote/examples/RiemannSurfaceRoot.asy
    trunk/Build/source/utils/asymptote/examples/SierpinskiGasket.asy
    trunk/Build/source/utils/asymptote/examples/SierpinskiSponge.asy
    trunk/Build/source/utils/asymptote/examples/animations/slidemovies.asy
    trunk/Build/source/utils/asymptote/examples/bars3.asy
    trunk/Build/source/utils/asymptote/examples/centroidfg.asy
    trunk/Build/source/utils/asymptote/examples/colorpatch.asy
    trunk/Build/source/utils/asymptote/examples/colorplanes.asy
    trunk/Build/source/utils/asymptote/examples/conicurv.asy
    trunk/Build/source/utils/asymptote/examples/contextfonts.asy
    trunk/Build/source/utils/asymptote/examples/controlsystem.asy
    trunk/Build/source/utils/asymptote/examples/cosaddition.asy
    trunk/Build/source/utils/asymptote/examples/cpkcolors.asy
    trunk/Build/source/utils/asymptote/examples/curvedlabel3.asy
    trunk/Build/source/utils/asymptote/examples/dimension.asy
    trunk/Build/source/utils/asymptote/examples/electromagnetic.asy
    trunk/Build/source/utils/asymptote/examples/equilchord.asy
    trunk/Build/source/utils/asymptote/examples/fequlogo.asy
    trunk/Build/source/utils/asymptote/examples/filesurface.asy
    trunk/Build/source/utils/asymptote/examples/fillcontour.asy
    trunk/Build/source/utils/asymptote/examples/fin.asy
    trunk/Build/source/utils/asymptote/examples/floatingdisk.asy
    trunk/Build/source/utils/asymptote/examples/floor.asy
    trunk/Build/source/utils/asymptote/examples/gamma.asy
    trunk/Build/source/utils/asymptote/examples/gamma3.asy
    trunk/Build/source/utils/asymptote/examples/genustwo.asy
    trunk/Build/source/utils/asymptote/examples/imagehistogram.asy
    trunk/Build/source/utils/asymptote/examples/integraltest.asy
    trunk/Build/source/utils/asymptote/examples/interpolate1.asy
    trunk/Build/source/utils/asymptote/examples/jump.asy
    trunk/Build/source/utils/asymptote/examples/label3zoom.asy
    trunk/Build/source/utils/asymptote/examples/linearregression.asy
    trunk/Build/source/utils/asymptote/examples/lmfit1.asy
    trunk/Build/source/utils/asymptote/examples/logo3.asy
    trunk/Build/source/utils/asymptote/examples/lowupint.asy
    trunk/Build/source/utils/asymptote/examples/markregular.asy
    trunk/Build/source/utils/asymptote/examples/mergeExample.asy
    trunk/Build/source/utils/asymptote/examples/mosaic.asy
    trunk/Build/source/utils/asymptote/examples/mosquito.asy
    trunk/Build/source/utils/asymptote/examples/near_earth.asy
    trunk/Build/source/utils/asymptote/examples/oneoverx.asy
    trunk/Build/source/utils/asymptote/examples/pathintersectsurface.asy
    trunk/Build/source/utils/asymptote/examples/pdb.asy
    trunk/Build/source/utils/asymptote/examples/pipes.asy
    trunk/Build/source/utils/asymptote/examples/poster.asy
    trunk/Build/source/utils/asymptote/examples/projectrevolution.asy
    trunk/Build/source/utils/asymptote/examples/rainbow.asy
    trunk/Build/source/utils/asymptote/examples/roll.asy
    trunk/Build/source/utils/asymptote/examples/roundpath.asy
    trunk/Build/source/utils/asymptote/examples/shadestroke.asy
    trunk/Build/source/utils/asymptote/examples/sinxlex.asy
    trunk/Build/source/utils/asymptote/examples/slidedemo.asy
    trunk/Build/source/utils/asymptote/examples/slope.asy
    trunk/Build/source/utils/asymptote/examples/soccerball.asy
    trunk/Build/source/utils/asymptote/examples/spectrum.asy
    trunk/Build/source/utils/asymptote/examples/sphereskeleton.asy
    trunk/Build/source/utils/asymptote/examples/spiral3.asy
    trunk/Build/source/utils/asymptote/examples/spline.asy
    trunk/Build/source/utils/asymptote/examples/splitpatch.asy
    trunk/Build/source/utils/asymptote/examples/spring.asy
    trunk/Build/source/utils/asymptote/examples/stereoscopic.asy
    trunk/Build/source/utils/asymptote/examples/strokeshade.asy
    trunk/Build/source/utils/asymptote/examples/teapot.asy
    trunk/Build/source/utils/asymptote/examples/thermodynamics.asy
    trunk/Build/source/utils/asymptote/examples/torus.asy
    trunk/Build/source/utils/asymptote/examples/triads.asy
    trunk/Build/source/utils/asymptote/examples/triangle.asy
    trunk/Build/source/utils/asymptote/examples/truncatedIcosahedron.asy
    trunk/Build/source/utils/asymptote/examples/tvgen.asy
    trunk/Build/source/utils/asymptote/examples/twistedtubes.asy
    trunk/Build/source/utils/asymptote/examples/unitoctant.asy
    trunk/Build/source/utils/asymptote/examples/vertexshading.asy
    trunk/Build/source/utils/asymptote/examples/worldmap.asy
    trunk/Build/source/utils/asymptote/examples/xstitch.asy
    trunk/Build/source/utils/asymptote/examples/xxsq01x-1.asy
    trunk/Build/source/utils/asymptote/examples/xxsq01y.asy
    trunk/Build/source/utils/asymptote/examples/yingyang.asy
    trunk/Build/source/utils/asymptote/exp.cc
    trunk/Build/source/utils/asymptote/exp.h
    trunk/Build/source/utils/asymptote/fftw++.h
    trunk/Build/source/utils/asymptote/fileio.cc
    trunk/Build/source/utils/asymptote/fileio.h
    trunk/Build/source/utils/asymptote/flatguide.h
    trunk/Build/source/utils/asymptote/fpu.h
    trunk/Build/source/utils/asymptote/frame.h
    trunk/Build/source/utils/asymptote/fundec.cc
    trunk/Build/source/utils/asymptote/fundec.h
    trunk/Build/source/utils/asymptote/genv.cc
    trunk/Build/source/utils/asymptote/glew.c
    trunk/Build/source/utils/asymptote/glrender.cc
    trunk/Build/source/utils/asymptote/glrender.h
    trunk/Build/source/utils/asymptote/gsl.cc
    trunk/Build/source/utils/asymptote/guide.cc
    trunk/Build/source/utils/asymptote/guide.h
    trunk/Build/source/utils/asymptote/guideflags.h
    trunk/Build/source/utils/asymptote/impdatum.cc
    trunk/Build/source/utils/asymptote/inst.h
    trunk/Build/source/utils/asymptote/install-sh
    trunk/Build/source/utils/asymptote/interact.cc
    trunk/Build/source/utils/asymptote/interact.h
    trunk/Build/source/utils/asymptote/item.h
    trunk/Build/source/utils/asymptote/jsfile.cc
    trunk/Build/source/utils/asymptote/jsfile.h
    trunk/Build/source/utils/asymptote/knot.cc
    trunk/Build/source/utils/asymptote/knot.h
    trunk/Build/source/utils/asymptote/lexical.h
    trunk/Build/source/utils/asymptote/locate.cc
    trunk/Build/source/utils/asymptote/locate.h
    trunk/Build/source/utils/asymptote/main.cc
    trunk/Build/source/utils/asymptote/material.h
    trunk/Build/source/utils/asymptote/mathop.h
    trunk/Build/source/utils/asymptote/memory.h
    trunk/Build/source/utils/asymptote/mod.h
    trunk/Build/source/utils/asymptote/name.cc
    trunk/Build/source/utils/asymptote/name.h
    trunk/Build/source/utils/asymptote/newexp.cc
    trunk/Build/source/utils/asymptote/newexp.h
    trunk/Build/source/utils/asymptote/opcodes.h
    trunk/Build/source/utils/asymptote/pair.h
    trunk/Build/source/utils/asymptote/parser.cc
    trunk/Build/source/utils/asymptote/parser.h
    trunk/Build/source/utils/asymptote/path.cc
    trunk/Build/source/utils/asymptote/path.h
    trunk/Build/source/utils/asymptote/path3.cc
    trunk/Build/source/utils/asymptote/path3.h
    trunk/Build/source/utils/asymptote/pen.h
    trunk/Build/source/utils/asymptote/picture.cc
    trunk/Build/source/utils/asymptote/picture.h
    trunk/Build/source/utils/asymptote/pipestream.cc
    trunk/Build/source/utils/asymptote/pipestream.h
    trunk/Build/source/utils/asymptote/policy.h
    trunk/Build/source/utils/asymptote/prcfile.h
    trunk/Build/source/utils/asymptote/primitives.h
    trunk/Build/source/utils/asymptote/process.cc
    trunk/Build/source/utils/asymptote/process.h
    trunk/Build/source/utils/asymptote/profiler.h
    trunk/Build/source/utils/asymptote/program.cc
    trunk/Build/source/utils/asymptote/program.h
    trunk/Build/source/utils/asymptote/psfile.cc
    trunk/Build/source/utils/asymptote/psfile.h
    trunk/Build/source/utils/asymptote/record.cc
    trunk/Build/source/utils/asymptote/record.h
    trunk/Build/source/utils/asymptote/refaccess.cc
    trunk/Build/source/utils/asymptote/revision.cc
    trunk/Build/source/utils/asymptote/rounding.h
    trunk/Build/source/utils/asymptote/runarray.cc
    trunk/Build/source/utils/asymptote/runarray.in
    trunk/Build/source/utils/asymptote/runbacktrace.in
    trunk/Build/source/utils/asymptote/runfile.cc
    trunk/Build/source/utils/asymptote/runfile.in
    trunk/Build/source/utils/asymptote/runhistory.cc
    trunk/Build/source/utils/asymptote/runhistory.in
    trunk/Build/source/utils/asymptote/runlabel.cc
    trunk/Build/source/utils/asymptote/runlabel.in
    trunk/Build/source/utils/asymptote/runmath.cc
    trunk/Build/source/utils/asymptote/runmath.in
    trunk/Build/source/utils/asymptote/runpair.cc
    trunk/Build/source/utils/asymptote/runpair.in
    trunk/Build/source/utils/asymptote/runpath.cc
    trunk/Build/source/utils/asymptote/runpath.in
    trunk/Build/source/utils/asymptote/runpath3d.cc
    trunk/Build/source/utils/asymptote/runpath3d.in
    trunk/Build/source/utils/asymptote/runpicture.cc
    trunk/Build/source/utils/asymptote/runpicture.in
    trunk/Build/source/utils/asymptote/runstring.cc
    trunk/Build/source/utils/asymptote/runstring.in
    trunk/Build/source/utils/asymptote/runsystem.cc
    trunk/Build/source/utils/asymptote/runsystem.in
    trunk/Build/source/utils/asymptote/runtime.cc
    trunk/Build/source/utils/asymptote/runtime.in
    trunk/Build/source/utils/asymptote/runtimebase.in
    trunk/Build/source/utils/asymptote/runtriple.cc
    trunk/Build/source/utils/asymptote/runtriple.in
    trunk/Build/source/utils/asymptote/seconds.h
    trunk/Build/source/utils/asymptote/settings.cc
    trunk/Build/source/utils/asymptote/settings.h
    trunk/Build/source/utils/asymptote/shaders.cc
    trunk/Build/source/utils/asymptote/shaders.h
    trunk/Build/source/utils/asymptote/simpson.cc
    trunk/Build/source/utils/asymptote/stack.cc
    trunk/Build/source/utils/asymptote/stack.h
    trunk/Build/source/utils/asymptote/statistics.h
    trunk/Build/source/utils/asymptote/stm.cc
    trunk/Build/source/utils/asymptote/stm.h
    trunk/Build/source/utils/asymptote/symbol.cc
    trunk/Build/source/utils/asymptote/symbol.h
    trunk/Build/source/utils/asymptote/texfile.cc
    trunk/Build/source/utils/asymptote/texfile.h
    trunk/Build/source/utils/asymptote/tr.cc
    trunk/Build/source/utils/asymptote/tr.h
    trunk/Build/source/utils/asymptote/transform.h
    trunk/Build/source/utils/asymptote/triple.h
    trunk/Build/source/utils/asymptote/types.cc
    trunk/Build/source/utils/asymptote/types.h
    trunk/Build/source/utils/asymptote/util.cc
    trunk/Build/source/utils/asymptote/util.h
    trunk/Build/source/utils/asymptote/varinit.cc
    trunk/Build/source/utils/asymptote/varinit.h
    trunk/Build/source/utils/asymptote/vm.h
    trunk/Build/source/utils/asymptote/wce
    trunk/Build/source/utils/asymptote/webgl/gl.js
    trunk/Build/source/utils/asymptote/webgl/license
    trunk/Build/source/utils/asymptote/xstream.h

Added Paths:
-----------
    trunk/Build/source/utils/asymptote/base/map.asy
    trunk/Build/source/utils/asymptote/build-scripts/asy-format.el
    trunk/Build/source/utils/asymptote/build-scripts/asy-indent.el
    trunk/Build/source/utils/asymptote/build-scripts/cc-format.el
    trunk/Build/source/utils/asymptote/build-scripts/cc-indent.el
    trunk/Build/source/utils/asymptote/build-scripts/run-in-indent.el
    trunk/Build/source/utils/asymptote/cc-mode2.el
    trunk/Build/source/utils/asymptote/examples/100d.pdb1
    trunk/Build/source/utils/asymptote/examples/axialshade.asy
    trunk/Build/source/utils/asymptote/examples/pOrbital.asy
    trunk/Build/source/utils/asymptote/examples/unitoctantx.asy

Removed Paths:
-------------
    trunk/Build/source/utils/asymptote/base/latin1.asy
    trunk/Build/source/utils/asymptote/base/unicode.asy
    trunk/Build/source/utils/asymptote/examples/p-orbital.asy

Modified: trunk/Build/source/utils/README
===================================================================
--- trunk/Build/source/utils/README	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/README	2021-01-02 16:31:31 UTC (rev 57291)
@@ -4,7 +4,7 @@
 Extra utilities we (optionally) compile for TeX Live.
 See comments in ../texk/README.
 
-asymptote 2.65 - checked 26mar20
+asymptote 2.68 - checked 2jan21
   update to TL from CTAN, to include prebuilt doc.
   see http://tug.org/texlive/build.html#asymptote
   and tlpkg/bin/tl-update-asy

Modified: trunk/Build/source/utils/asymptote/BUGS
===================================================================
--- trunk/Build/source/utils/asymptote/BUGS	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/BUGS	2021-01-02 16:31:31 UTC (rev 57291)
@@ -2,5 +2,5 @@
 is still present in the latest git developmental code before submitting a
 bug report.
 
-New bugs can be submitted using the Bug Tracking System at
-http://asymptote.sourceforge.net/
+New bugs can be submitted at
+https://github.com/vectorgraphics/asymptote/issues

Modified: trunk/Build/source/utils/asymptote/ChangeLog
===================================================================
--- trunk/Build/source/utils/asymptote/ChangeLog	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/ChangeLog	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1,3 +1,1329 @@
+commit 3b88c382bf0dd59daa6427a9fc4f03c246b5d218
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Nov 22 18:02:21 2020 -0700
+
+    Fix normalization in tube rendering.
+
+commit 31ab4195580be6ac65ad226d29a568c82147e166
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Nov 22 15:09:09 2020 -0700
+
+    Update freeglut installation instructions.
+
+commit 7cedd768019efd0fe435fa7d7a8b281298f4d6ba
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Nov 22 10:34:07 2020 -0700
+
+    Work around further floating point exceptions in OpenGL libraries.
+
+commit 437aef9cb8ae639727f635b51121a00fdb16423d
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Nov 22 01:29:47 2020 -0700
+
+    Add Label align(Label,dir) for aligning Label normal in direction dir.
+
+commit df6f1c2641fd51975a11244be7b66c477f73a856
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Nov 21 22:15:22 2020 -0700
+
+    Add settings.compress=true option to control PDF image compression.
+
+commit a36959ecbdc74fe83720dd28a009d65e16a0302a
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Nov 21 21:48:36 2020 -0700
+
+    Implement bool isometry(transform) function.
+
+commit 1108f83337b6d6f2ac33b9fd0bb0fb47c0578065
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Nov 21 21:18:53 2020 -0700
+
+    Fix bug2 #149 and #154 (thanks to Oliver Guibe).
+
+commit b1ab048d6cf6b703a992a296c870d3b1c5a63b3e
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Nov 21 20:54:05 2020 -0700
+
+    Skip over uninitialized elements of transposed arrays.
+
+commit 959cdd4823cb1e61b407878c89a66ae97a90e326
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Nov 20 23:33:21 2020 -0700
+
+     Work around floating point exceptions (FE_INVALID) in OpenGL libraries.
+
+commit d541f69d20ed7d7a88e25cfe08323780796439ff
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Nov 19 14:30:13 2020 -0700
+
+    Qualify namespace.
+
+commit f8de14a7ed23d3496188275092c731f8a0fc9aa5
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Nov 19 11:51:58 2020 -0700
+
+    Restore image enccoding.
+
+commit 9606da530260600112145360c3eaadada1ed645f
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Nov 16 09:57:35 2020 -0700
+
+    Fix comment.
+
+commit f513ffde5c8540e1b45a93fd0391541a6f4aa2f7
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Nov 16 09:53:28 2020 -0700
+
+    Read null fields as undefined values in cvs mode and in line mode.
+
+commit 5402f40f5c752ed3069a8102b9a1f46a561bc8b0
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Nov 15 23:35:42 2020 -0700
+
+    Fix warning message.
+
+commit e67fba800818c8713165829ee64268c445355da3
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Nov 15 00:26:51 2020 -0700
+
+    Fix more uninitialized variables.
+
+commit ea1eca1727d19625c5be8359cd88d38236eb0737
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Nov 15 00:06:41 2020 -0700
+
+    Fix uninitialized variable.
+
+commit a9d1f7abf90309502026af608db3aed4cb405ce2
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Nov 14 23:44:25 2020 -0700
+
+    Return unbounded direction in rationalSimplex.
+
+commit ac9ece43497c23bba3d0738db5a0fb1e8e7090d8
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Nov 8 12:49:10 2020 -0700
+
+    Fix comment.
+
+commit 4d6872d552573ba947d3a524549b159d322ff284
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Nov 8 12:39:12 2020 -0700
+
+    Add RELEASE variable.
+
+commit a3d85fb37e5a28e021f417b8355362b03f93b5d1
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Oct 27 21:49:55 2020 -0600
+
+    Always define xStandard in optimal case in rationalSimplex.
+
+commit 5ced24a1d9658364e76ddc04a9b61890ee53d543
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Oct 27 03:18:54 2020 -0600
+
+    Support logarithmic graphs of surfaces.
+
+commit e688d42e33a521facdb050c77b454b819478d3fd
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Oct 25 23:08:36 2020 -0600
+
+    Open files without assuming an asy suffix.
+
+commit 3361214340d58235f4dbb8f24017d0cd5d94da72
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Oct 25 22:24:51 2020 -0600
+
+    Use ps2write instead of eps2write where possible, for compatibility with gs 9.53.
+
+commit 42b291049920c2a023ab5f3598cc917eb36297ca
+Merge: e62d0401 d9826965
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Oct 25 20:18:21 2020 -0600
+
+    Merge branch 'spotrh-curl-config', standardized.
+
+commit d9826965be5768c417b790fb6ff6ba59aeb89246
+Merge: e62d0401 a055a0ae
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Oct 25 20:09:49 2020 -0600
+
+    Merge branch 'curl-config' of https://github.com/spotrh/asymptote into spotrh-curl-config.
+
+commit e62d040114aaadfa9c3a6d6a70cd001cdea11e36
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Oct 25 20:01:06 2020 -0600
+
+    Make end argument of Margin functions optional.
+
+commit e5db49aa7b3ede25ae2cf4c08adfe2fe533420b1
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Oct 25 19:59:54 2020 -0600
+
+    Expose solution to standard problem in rationalSimplex.
+
+commit 69e5f0cc8ccdb8128319c4cd8c1f13cae01ce82d
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Oct 10 00:11:57 2020 -0600
+
+    Make --version indicate if configured for OSMesa software rendering.
+
+commit d54e2ac82481e410ffa2bb52a1fb9d217d95eb98
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Oct 7 17:39:51 2020 -0600
+
+    Add high resolution wall clock time.
+
+commit a055a0ae813e7ed443b3d48e0822e5e7199bef65
+Author: Tom Callaway <spot at fedoraproject.org>
+Date:   Fri Oct 2 18:50:51 2020 -0400
+
+    add --disable-curl option to prevent curl check and compile without optional URL support
+
+commit 27a55b7891214aa0654e7a97207c5ba762ceb1aa
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Sep 14 13:48:03 2020 -0600
+
+    Fix centering of slides.
+
+commit 576b7333baf56cd833a1098dd85a22af1bbfdafb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Aug 28 21:56:16 2020 -0600
+
+    Support null characters and null strings in replace.
+
+commit be534393f9b3404573479dc9851817e6c5fbda94
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Aug 24 12:59:25 2020 -0600
+
+    Disable image encoding in PDF conversion.
+
+commit 1fd27cc14606206aba81bf131e0bef36e9329457
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Aug 22 12:15:26 2020 -0600
+
+    Fix extraction of git revision.
+
+commit 8dbece952d9ddece1349215243c473bafcc7b4c6
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Aug 22 09:56:46 2020 -0600
+
+    Fix configuration without readline support.
+
+commit d6500a226b021edf99002596f7226015950dc6af
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Aug 20 22:47:49 2020 -0600
+
+    Allow binary mode to read the entire file into a string.
+
+commit 880ef36e9878dfbcdcf28b953d11bfd392805643
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Aug 20 21:04:51 2020 -0600
+
+    Fix getc when reading NUL character.
+
+commit e3ac2208915f6c496974a8dc3342861de4f2e2d1
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Aug 15 12:52:42 2020 -0600
+
+    Fix commit 986d64236b299c1643451f4e774170cb8ebcec00.
+
+commit 6cea1c06c2054f1b7433e2d01ed6a2ec863b6726
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Aug 13 16:06:15 2020 -0600
+
+    Update URLs.
+
+commit af12ec3b6fcca4e273dad4fdd3b431bada30608f
+Merge: 986d6423 68682879
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Aug 9 08:29:58 2020 -0600
+
+    Merge pull request #170 from bmwiedemann/date
+    
+    Allow to override build date with SOURCE_DATE_EPOCH.
+
+commit 68682879ce9704606fb0d46734dfaba4966de9b5
+Author: Bernhard M. Wiedemann <bwiedemann at suse.de>
+Date:   Sun Aug 9 14:10:55 2020 +0200
+
+    Allow to override build date with SOURCE_DATE_EPOCH
+    
+    in order to make builds reproducible.
+    See https://reproducible-builds.org/ for why this is good
+    and https://reproducible-builds.org/specs/source-date-epoch/
+    for the definition of this variable.
+    
+    Also consistently use ISO 8601 date format to be understood everywhere.
+    This also avoids %B and %h that are locale-dependent.
+    
+    Also use UTC/gmtime to be independent of timezone.
+    
+    Also rewrite the shell `date` calls into perl to avoid
+    trouble with the different date command implementations.
+    
+    This PR was done while working on reproducible builds for openSUSE.
+
+commit 986d64236b299c1643451f4e774170cb8ebcec00
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Aug 8 11:18:38 2020 -0600
+
+    Fix last revision.
+
+commit 4c06e580baa7051128d3e8ab4b06a0315a1eecd7
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Aug 8 01:05:57 2020 -0600
+
+    Simplify code.
+
+commit d2f6e59eb42763c2e9a1f6ca5e057f6bf13991cd
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Aug 6 22:27:33 2020 -0600
+
+    Fix last revision.
+
+commit 7ae96b7754d1025c02be514e3d31433cce52b609
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Aug 6 22:05:07 2020 -0600
+
+    Remove -0 suffix from git version for tagged releases.
+
+commit 610c4624a7ac69ee4ccfedd6075b1cb28c14d7ce
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Aug 5 23:39:05 2020 -0600
+
+    Fix last revision.
+
+commit dc4243ccd1c5ab766241707ab10f16d7c9738ef7
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Aug 5 23:34:47 2020 -0600
+
+    Backport curlProgress to libCurl < 7.32.
+
+commit 94f99a26ab9b72f3a3fbc2239f9e7b529b7166e2
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Aug 5 22:18:03 2020 -0600
+
+    Increment version to 2.68.
+
+commit bccdb51e0cfa5b7b7bf5c08c1f9496a7ba9a012d
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Aug 5 17:45:17 2020 -0600
+
+    Reformat run*.in files.
+
+commit 37bf3ce87aed185a465da781db931a68aff7745d
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Aug 5 17:01:26 2020 -0600
+
+    Allow URL requests to be interrupted.
+
+commit 92d7b6fe3bbd0d1ee5238ac5d87469e6d17e89f4
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Aug 5 16:19:42 2020 -0600
+
+    Port to MSDOS.
+
+commit 9dc14b7b56eeaddae51c5f24012ac51a5faf93f9
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Aug 5 01:56:15 2020 -0600
+
+    Fix hang on quit under MSDOS.
+
+commit bfefd605c7eb661f03eba5405795d6dff3e9cd43
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Aug 4 22:50:32 2020 -0600
+
+    Fix readline interrupt handling under MacOS X.
+
+commit 1fb62259fe1b94a5b3ef0b44ce7f7d32a3be76b3
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Aug 4 12:40:53 2020 -0600
+
+    Remove xasy link from MSDOS build.
+
+commit 5050ce7ee703ef3ec3c4d84cd420a019178c6859
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Aug 3 14:18:29 2020 -0600
+
+    Reformat examples.
+
+commit 372ae2ca61bea75271c85549dd166b71d4dc72b4
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Aug 3 13:59:33 2020 -0600
+
+    Indent projection output.
+
+commit b552792d5adb112b469ea55e8b95ffc299969ec0
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Aug 3 13:20:15 2020 -0600
+
+    Add C++ and asy indenting and formatting Emacs lisp scripts.
+
+commit b03e2ba9dc2287c16869dc51e87fe5715eb3c2d4
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Aug 2 23:08:08 2020 -0600
+
+    Fix last revision.
+
+commit 55406a03c263d9a33c22f823110bee247146ffdc
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Aug 2 22:52:47 2020 -0600
+
+    Fix compilation without libcurl.
+
+commit e0f8c79e64f4b2d14f0dbd6f95472480bd718b72
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Aug 2 22:50:42 2020 -0600
+
+    Reformat base files.
+
+commit ef00491a49965e998549a2df0bb6d01fb4bb7d61
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Aug 2 21:13:13 2020 -0600
+
+    Reformat .cc and .h files.
+
+commit 5de4352e05ba6a03f95a128b81e702d6a3d27314
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Aug 2 20:21:07 2020 -0600
+
+    Update asygl.
+
+commit 98b22e43550672e01cf257f982380efa18f4f92b
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Aug 2 19:15:52 2020 -0600
+
+    Document newpage.
+
+commit 083efd7710a851e2e33331bcbac9ac42cf4dabe6
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Aug 2 18:12:45 2020 -0600
+
+    Avoid unnecessary remesh on zoom in AsyGL.
+
+commit 23c2ac57fd6336eda71251c25a7324732e1433d9
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Aug 2 18:00:30 2020 -0600
+
+    Force remeshing on export.
+
+commit bfc7bc0db8ca496f5ea9545024f84749ae3ea636
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Aug 2 17:50:26 2020 -0600
+
+    Fix exporting when devicepixelratio > 1.
+
+commit 5e57b75e78b4d596cdc00d3a35a2c8c40df17f90
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Aug 1 21:02:48 2020 -0600
+
+    Implement devicepixelratio setting.
+
+commit ef0bb9f3fd39c3528fd963b27c6989c3287faacf
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Aug 1 20:27:52 2020 -0600
+
+    Extend URL support to input().
+
+commit 45e8475ce686ca92aad94488c10824fc1f1d044f
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Aug 1 14:41:48 2020 -0600
+
+    Support importing URLs.
+
+commit 81b4d1e85225fb540c8cf64d733b810ab3ab07d6
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 31 18:18:57 2020 -0600
+
+    Remove obsolete code.
+
+commit 2e497032037cff813426a1ece1f42ec1ab924d68
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jul 29 22:58:25 2020 -0600
+
+    Fix interrupt handling under MacOS X.
+
+commit c2c8c095416e766063ad0af943d1a931d14095e0
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jul 29 01:52:40 2020 -0600
+
+    Implement portable whitespace skipping also for pairs.
+
+commit ed3e87bb4795ac6cf648af9b4f12e2418efad11a
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jul 29 01:35:03 2020 -0600
+
+    Implement portable way of skipping whitespace.
+    Make casts from empty strings yield uninitialized values.
+
+commit 8ba38823755e09de6463a42396e1db7291276254
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 28 21:06:49 2020 -0600
+
+    Simplify code.
+
+commit ad7054342d291ce32f71951b7e7eeea381d29efb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 28 21:05:19 2020 -0600
+
+    Fix numerical precision issue.
+
+commit 111cd165f5c7f4a0496a9efbf746d4f2a316a48c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jul 27 00:30:18 2020 -0600
+
+    Format documentation.
+
+commit 9193d9d8ee934b325e575d405631d4fb252b1d8d
+Merge: ef016d74 013e0cb2
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jul 27 00:20:41 2020 -0600
+
+    Merge pull request #144 from ivankokan/master
+    
+    Obsolete *encoding modules
+
+commit 013e0cb25362e46cecb40ea468aa95e66788dd12
+Merge: aa8a5244 ef016d74
+Author: Ivan Kokan <ivan.kokan at gmail.com>
+Date:   Mon Jul 27 02:26:20 2020 +0200
+
+    Merge branch 'master' into master
+
+commit ef016d741c443e8e84ff8248a9622c820813b754
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 26 17:47:02 2020 -0600
+
+    Document that clipping has no notion of depth.
+
+commit 1b11525273e0661d3a3f4f8dc988b29982e7f5c2
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 26 12:15:06 2020 -0600
+
+    Fix segmentation fault caused by obsolete code.
+
+commit eb1ec4d911ee9b4c3f34a07505183291d3793e6e
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 26 11:34:09 2020 -0600
+
+    Update documentation.
+
+commit 6473c8487d59a4891c406cd127b3bb2d200ebe62
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 26 11:02:35 2020 -0600
+
+    Simplify code.
+
+commit 52b458f036b7f9222a084ffef4e94092342608bf
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jul 25 20:56:11 2020 -0600
+
+    Fix copy constructors for path and path3.
+
+commit e5da02595a16d3a6adc60cd9d4589b5cf31b4fd3
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jul 25 17:59:27 2020 -0600
+
+    Port to MacOS X.
+
+commit bb56b10d431a5acd66b28c4a4bb22ba99ef7c1c8
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 24 00:09:24 2020 -0600
+
+    Improve repositioning of OpenGL window.
+
+commit 47f463e5a739c02838fd549e7a4dc3b0f8471f21
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jul 23 03:39:28 2020 -0600
+
+    Always reposition OpenGL window when not fitting to screen.
+
+commit 1ba366e2ba2380e17c81df2b6cd4114869745ad4
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jul 22 20:19:12 2020 -0600
+
+    Normalize triple dir(path3, path3).
+
+commit bc0b6499e5f71b36a3177f677db5277078164dbd
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jul 22 00:39:18 2020 -0600
+
+    Prevent xasy from hanging on asy errors.
+
+commit dee047a7596538e2012152c52a753938ea9d310b
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jul 20 00:31:32 2020 -0600
+
+    Update asygl.
+
+commit 7574872dca70fda79c6cd65e350b57fc135bd794
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jul 20 00:28:29 2020 -0600
+
+    Make + and - keys zoom in and out, rather than expand and shrink viewport.
+
+commit 2066ef194ec9f7c135b165ea8b157e78320306a6
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jul 18 22:46:22 2020 -0600
+
+    Update asygl.
+
+commit 5089b775299a17831a86c4ae38d1081de3e1282a
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jul 18 22:45:58 2020 -0600
+
+    Improve resizing.
+
+commit 242615a1b755ea943603daad9aa6060e5f2eca1e
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jul 18 20:44:53 2020 -0600
+
+    Workaround JSON bug by escaping colons.
+
+commit 7294cb2bf8a3fc0c182b36c9b1ee8b49cc5a8b3d
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 17 13:07:35 2020 -0600
+
+    Update asygl.
+
+commit 5a2bd75f8f8ee73c0617896f0d1183fe4c673c05
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 17 13:06:43 2020 -0600
+
+    Fix absolute mode.
+
+commit 55e4e0dba58565b91ae1dd1df715b49db339a305
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 17 12:47:08 2020 -0600
+
+    Update asygl.
+
+commit ba16a591ca3b924fb1e9db399f4c942d36341d68
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 17 12:46:45 2020 -0600
+
+    Reset initial zoom.
+
+commit c47728d59cb3d9a8ffb394cbffb79c2ddc631816
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 17 12:25:14 2020 -0600
+
+    Update asygl.
+
+commit e0281de557eb186728d66fd0c183d65a50b8f0b5
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 17 12:24:18 2020 -0600
+
+    Always listen for WebGL resize events.
+
+commit 99c614d893cea7dffb9a41c13c20460248944cd2
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jul 16 23:23:58 2020 -0600
+
+    Document settings.absolute.
+
+commit af6c53a9825bc1e2dc73f8aa8a720b299d6a4e6c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jul 16 23:00:29 2020 -0600
+
+    Fix invalid array dimensions error.
+
+commit b5eac1db427fbc956d01b243fffc2b4f20415355
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jul 15 11:41:01 2020 -0600
+
+    Update example.
+
+commit 9c9caaca5c63f04bde69205e0da9e163ee256344
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jul 15 02:59:52 2020 -0600
+
+    Disable cd with -noglobalread.
+
+commit 0278c8841589770d71e2803e57dcfb6ce002cfcf
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jul 15 01:00:25 2020 -0600
+
+    Allow reading from search path even with -noglobalread.
+
+commit cf7c0373f82cb7d1de78bb95d7b619e096552628
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jul 15 00:13:00 2020 -0600
+
+    Add examples directory to search path.
+
+commit 516d7847b2a58425c7763bbb0e79eebea7f72c15
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 14 23:14:10 2020 -0600
+
+    Fix inpath.
+
+commit 0a5015b2f86a656a8b04d2592a606b68bb6e4d53
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 14 16:42:20 2020 -0600
+
+    Add missing file.
+
+commit cde71e2634cd45113f60cd9aec96f0221e1b1d58
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 14 16:37:57 2020 -0600
+
+    Install data file.
+
+commit 2056aa9c63bd1bf9fc7f3cdb7415aa7c1cefbe07
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 14 16:12:41 2020 -0600
+
+    Add -globalread setting (default true).
+
+commit 246022516af218d6ae4cebf027965479d049b8d9
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 14 10:57:38 2020 -0600
+
+    Open files using search path.
+
+commit 2e4762d4381307876a100e42116592d8aba3a75a
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 14 01:56:07 2020 -0600
+
+    Reinstate putting clipPath definitions in <defs> section, with fix to Gouraud shading.
+
+commit 5b5c8aeddfe9e99eec14c30591713f4d128bb8cf
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 14 01:52:54 2020 -0600
+
+    Revert "Put clipPath definitions in <defs> section."
+    
+    This reverts commit fbf03b07cfbabaeb7be861ac652f4b46fdc0e2cb.
+
+commit fbf03b07cfbabaeb7be861ac652f4b46fdc0e2cb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 14 01:24:40 2020 -0600
+
+    Put clipPath definitions in <defs> section.
+
+commit 62bfac5dc40fe8f9ceefe2f834fdf6febd5971d5
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 14 00:56:40 2020 -0600
+
+    Use distinct clipping IDs.
+
+commit 5778d7e16e456bf9caacdadcf354ccfd41aff4c2
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 14 00:39:31 2020 -0600
+
+    Fix svg clipping.
+
+commit cd0faa137d52fea979e73b3748986cbcd396f882
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jul 13 02:23:24 2020 -0600
+
+    Remove unused svg transform.
+
+commit 29004b9576e08e6da0aae0df07ea08351e555953
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 12 16:42:38 2020 -0600
+
+    Remove duplicate </head>.
+
+commit a2eb67615714aaa43674da43b8e5be8f597dbb1f
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 12 09:34:59 2020 -0600
+
+    Support compilation and 2D svg to html conversion without GLM library.
+
+commit 89ca60bd9e8ea5b23d7deea2dfdf2d54b8496d25
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jul 11 23:50:35 2020 -0600
+
+    Display error location in interactive mode when importing files;
+    output to stderr.
+
+commit 4c0160df84ee208b7f0b4f6480405299d4ae94d4
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jul 11 02:27:54 2020 -0600
+
+    Display error location.
+
+commit bde2b3f814ffaf77f10bf78352b34f3584523734
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 10 19:37:51 2020 -0600
+
+    Remove body margin and scrollbar.
+
+commit 7bb9309de9929be530547de88d1cdeac052f2231
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 10 12:53:41 2020 -0600
+
+    Fit 2D html output to canvas unless settings.absolute=true.
+
+commit 497363ecde2cc4856756ed54ae2723799a183674
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 10 12:49:41 2020 -0600
+
+    Show dvisvgm diagnostics.
+
+commit 97843dd13d26027a05a108e16f60f910703648b7
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jul 9 16:08:10 2020 -0600
+
+    Fix tutorial URL.
+
+commit b6d53dc435fda60c836606f8d763dbdaf56e8501
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jul 9 09:34:10 2020 -0600
+
+    Fix format in documentation.
+
+commit aa8a5244e46c1d04300513a4107245a3575ceedd
+Author: ivankokan <ivan.kokan at gmail.com>
+Date:   Thu Jul 9 15:53:58 2020 +0200
+
+    Format docs
+
+commit 9cca9e9106e6ad4aa89389d25b11712d7ac4edec
+Merge: e0b8e3de d968c027
+Author: Ivan Kokan <ivan.kokan at gmail.com>
+Date:   Thu Jul 9 15:14:31 2020 +0200
+
+    Merge branch 'master' into master
+
+commit d968c027432b225800655e508fa00bff2da086b5
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jul 9 00:58:10 2020 -0600
+
+    Improve logo3.
+
+commit 3fd657ee90bc66143b86d7c15a3eb28200e88611
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 7 23:06:48 2020 -0600
+
+    Work around dvisvgm bug.
+
+commit 978d0e0d8ce48a7f71d1880dea6454133c8f6698
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 7 02:01:25 2020 -0600
+
+    Increment version to 2.67.
+
+commit 695f398ded015ec27835b833f29d220794c45831
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jul 6 22:54:59 2020 -0600
+
+    Enable PDF transparency for SVG and HTML formats.
+
+commit 4ec6f561926704c685739dd77183e2c56929db80
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jul 6 22:44:19 2020 -0600
+
+    Only implement PDF transparency for PDF formats.
+
+commit f030d57672c300689ad4b955f8bd5ab897cfffc9
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jul 6 22:34:53 2020 -0600
+
+    Remove unused code.
+
+commit c1083e547bd5c43c2baf253d5ffbf376aa1b49eb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jul 6 20:52:05 2020 -0600
+
+    Work around broken signals on MSWindows.
+
+commit 6e050f717ffeea7701c9de1e2b8ffe5ff9b9a7cb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jul 6 00:04:25 2020 -0600
+
+    Fix tempdir.
+
+commit a6c626a111b49512bf8e54e4482d3aef47d63555
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 5 22:20:28 2020 -0600
+
+    Update documentation.
+
+commit 7b7b491898243d71f190b4ebad02e92805b8d0d1
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 5 21:34:08 2020 -0600
+
+    Document the Asymptote Web Application.
+
+commit ef354c08562686b6afdd5aafd6e63fe1edfdf0ef
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 5 20:20:09 2020 -0600
+
+    Remove unused variable.
+
+commit 6129a12bd26dd018d38cd96c62e8fa74b5cf36a9
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 5 20:11:27 2020 -0600
+
+    Fix pdfreload.
+
+commit fa3122974baecf2d7743e87705f3b12c913e560b
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 5 01:44:07 2020 -0600
+
+    Use custom tmpdir for dvisvgm to avoid permission conflicts.
+
+commit 042ab6b6973dc045ad80a5e99ecf29034f67416b
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 5 00:20:44 2020 -0600
+
+    Fix pdfoffsets.
+
+commit b081ac0d5b435bcb1531fd8d6211b552f62a8679
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jul 4 03:26:15 2020 -0600
+
+    Update dependencies.
+
+commit bd9c1e2def171eea72ea13f7755a2601da4401f8
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 3 01:46:42 2020 -0600
+
+    Fix fullscreen mode. The default maxviewport value of (0,0) now specifies
+    the screen dimensions.
+
+commit 499234d65838272830fc133635729be93474ebfa
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jul 2 22:55:56 2020 -0600
+
+    Remove X-server dependency for offscreen rendering.
+
+commit 217bb1c86beaa5daa7dbea6691a9a7afb088c355
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jul 2 14:36:45 2020 -0600
+
+    Remove obsolete offscreen setting.
+
+commit 1ddfc8e10bb10020c77b550217743b9b77f0a845
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jul 2 11:35:12 2020 -0600
+
+    Add missing conditionals; simplify code.
+
+commit c19d2327b109655e9a99c795bc2724738af3fc3c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jul 2 11:20:01 2020 -0600
+
+    Support offscreen rendering again when configured with --enable-offscreen.
+
+commit b800078b4d81c126cf43984b12d876e919292e7c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jul 2 00:14:30 2020 -0600
+
+    Work around FE_INVALID when using Gallium libGL.
+
+commit 6c6267318f959de91711984d192d96846fe11dae
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jun 29 01:38:31 2020 -0600
+
+    Fix warning message.
+
+commit 117081fc1c6909080df76502b15dfcb1576cd0c6
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jun 29 01:31:13 2020 -0600
+
+    Fix warning message.
+
+commit d573cbb922fac2f8106e70afdf9637e2ce2d6d36
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jun 29 00:48:08 2020 -0600
+
+    Fix documentation of mapTemplate.
+
+commit 9bdd507eabc2e5f9dbe2b3c2fde74c0552156372
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jun 29 00:39:47 2020 -0600
+
+    Illustrate how to create parametrized code by implementing a struct
+    mapping keys to values, with a specified default. Also implement mapArray,
+    simplifying the construction of general array mappings.
+
+commit 9cdbfd99e9e6bc80055c3929016d7a65e589f690
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jun 27 23:35:55 2020 -0600
+
+    Redefine map2 to map, T1 to mapFrom and T2 to mapTo.
+
+commit 24631469c445b7722566ccfe1b4a91e6cca70c19
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jun 26 21:23:38 2020 -0600
+
+    Add map2 code for defining T2[] map(T2 f(T1), T1[] a).
+
+commit 503273b5f076f3a46083922b6e0f8a892001a763
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jun 26 04:31:57 2020 -0600
+
+    Fix bug #162: opening .asy file in Xasy crashes on MSWindows.
+
+commit 7ddc5b161a2cb3394e6ae0b986c8714fc6ff1e0e
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jun 25 00:10:46 2020 -0600
+
+    Extend currentlight.background to 2D images; by default, use a white background for both 2D and 3D HTML images.
+
+commit 61624215084386cbba889dd008c95fcfa3f436e1
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jun 24 22:32:49 2020 -0600
+
+    Fix 2D html tags.
+
+commit 1b8c77abebeb4a3e65d1f30eda6d5b60ffe820f2
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jun 22 14:58:38 2020 -0600
+
+    Fix xasy svg shading.
+
+commit 96cf6bb0c46c830c3676a442900e4bd968e0a50c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jun 22 01:38:25 2020 -0600
+
+    Fix Windows override in xasyconfig.cson.
+
+commit 448695a92747861476497f92e23e6d779596ed16
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jun 22 01:24:43 2020 -0600
+
+    Implement real abs2(pair) and real abs2(triple).
+
+commit 4e76a3267bb44d163378bd50f72eb6340089b469
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jun 22 00:04:38 2020 -0600
+
+    Fix deconstruction of png images into svg format.
+
+commit b1d4da9a0e0d69047df43c15bbe9b22f01ebb0d5
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jun 21 18:37:41 2020 -0600
+
+    Check array dimensions.
+
+commit 1264820193c3d27b79082431762636cb4c19b8ee
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jun 21 18:02:46 2020 -0600
+
+    Fix camera adjustment.
+
+commit 0353f3bd5edc99e5f83fdae04f7d14393dfa623d
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jun 21 16:39:19 2020 -0600
+
+    Improve detection of TeX errors.
+
+commit d0049ae28dcd4ee1664e27dff18a43dbbc7c8521
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jun 21 01:41:57 2020 -0600
+
+    Fix CPU to CPU optimization for Bezier curves by rendering one segment at a time.
+
+commit 6cafa5abb72d1ab2f69ab6ba9fc8ba7c4417bfe6
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jun 21 01:25:41 2020 -0600
+
+    Update asygl.
+
+commit 6a04bf13097bb8e196bdfcbf1f9c9b30fd5fe4b8
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jun 21 01:22:27 2020 -0600
+
+    Port CPU to GPU copying optimization to AsyGL library.
+
+commit 0fcf4e50d0fdaf43d839d15c8eea7ff99ab4ed71
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jun 20 00:01:45 2020 -0600
+
+    Update to new Ghostscript transparency model.
+
+commit d2e946715241e559433ae56b2cc726901b1474d6
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jun 19 19:12:15 2020 -0600
+
+    Output 2D html images using inline svg commands.
+
+commit 239b54d06b51b52b6fb1d7a929fada19039356a9
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jun 18 22:22:22 2020 -0600
+
+    Force PNG content to be embedded in SVG output.
+
+commit c1215bee4c483b75f547098fc0849e4f5277a404
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jun 18 18:55:12 2020 -0600
+
+    Fix tensor shading with latex engine and svg outformat.
+    Check for mismatched endspecial. Simplify code.
+
+commit cb9a4f90466dac50aeec00bd7dbb91cb609f5c0a
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jun 18 00:02:18 2020 -0600
+
+    Update asygl.
+
+commit d56cfbf30c5dfd26abdd13af139f2419ae28b3b1
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jun 18 00:01:46 2020 -0600
+
+    Fix WebGL shrink and expand.
+
+commit bb772d94c88a0968f744a02faadddbc0c4d214a4
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jun 17 22:00:11 2020 -0600
+
+    Increase WebGL precision of example.
+
+commit 55217bf80236b08d820ef235e84478100d094077
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jun 17 21:11:05 2020 -0600
+
+    Update asygl.
+
+commit 31d27c0d7a4dcb36f87ab2aa046371936dc6d176
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jun 17 21:10:09 2020 -0600
+
+    Extend WebGL viewport to edge of canvas; simplify code.
+
+commit 5b6237b879a56a222e9c3689181485646ab4ea51
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jun 17 16:04:49 2020 -0600
+
+    Update asygl.
+
+commit 07b4ae5679569041c070c6f50c0bd8eb3e0a97aa
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jun 17 16:04:03 2020 -0600
+
+    Fix WebGL aspect ratio and centering.
+
+commit c209a949e54d90bdf71a4d576602a6b004b894f3
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jun 17 10:57:13 2020 -0600
+
+    Update asygl.
+
+commit 9e93b99175d0aa06535022dbddeaebd7b75f4377
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jun 17 10:56:39 2020 -0600
+
+    Restore aspect ratio sizing code.
+
+commit eb022a5e1fc3c8bc2008e33980a47a99d269159b
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jun 17 08:30:47 2020 -0600
+
+    Update asygl.
+
+commit e773510775bf63cfb81fc44077c3651cccf49a9c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jun 17 08:27:04 2020 -0600
+
+    Center html output in Javascript code.
+
+commit d604442f8a09550276cf03721ab3c71047eb9f6b
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jun 14 02:31:48 2020 -0600
+
+    Increase precision of planar Bezier surfaces in WebGL.
+
+commit 38a8732d7c292de07142e789a7abf6115a52ed82
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jun 2 11:49:16 2020 -0600
+
+    Revert "Center html output."
+    
+    This reverts commit 8d6fcc11cbc1118f6f4253efb8766998f83425fe.
+
+commit 3546418498d27270de2ea77a8e59a97bc90697ef
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 24 23:03:01 2020 -0600
+
+    Remove clip from slopefield module.
+
+commit 8d6fcc11cbc1118f6f4253efb8766998f83425fe
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 24 21:31:48 2020 -0600
+
+    Center html output.
+
+commit 56f89ede630ce95f6d0e57c5adf58bc925229ad8
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon May 11 19:46:20 2020 -0600
+
+    Force copying of sorted transparent triangles to GPU.
+
+commit b44d17ae26dcd0f3d3ea63188f93528230390cfe
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 10 22:08:53 2020 -0600
+
+    Raise logo3 camera.
+
+commit d9bbb71b151c1ff1ee920045607240ed80ead95f
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed May 6 01:00:21 2020 -0600
+
+    Brighten default light Headlamp.
+
+commit d9b7e5f6759da978831a03be481f5b0712f77ba7
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed May 6 00:11:21 2020 -0600
+
+    Fix previous commit.
+
+commit a81b3656d2087a9f038fdd3417698d23d0518808
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 3 21:25:09 2020 -0600
+
+    Fix copying of materials from CPU to GPU.
+
+commit d536e5e45d45c7893d6703d8ef9c56c2df0d97b7
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 3 10:32:42 2020 -0600
+
+    Simplify code.
+
+commit a869eb33b2549b19fd67a64031d202a2fb834cd1
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 3 01:02:48 2020 -0600
+
+    Fix svg output for axialshade and radialshade.
+
+commit 90f4700de45c7b5a86c109d004209d8ef688bf88
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 3 00:21:51 2020 -0600
+
+    Work around dvisvgm --pdf limitations.
+
+commit 05faf64b39ec7ac03318a7b4c738cae9d107239a
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri May 1 04:31:10 2020 -0600
+
+    Copy vertex and  material data from CPU to GPU only when necessary.
+
+commit 091d66b78d5f6283140d9d3f1ca776629e88360d
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Apr 29 23:27:23 2020 -0600
+
+    Make svgemulation=true by default to emulate Gouraud shading in SVG;
+    remove obsolete experimental code.
+
+commit ada6af005b220947cd64c534d2f0e64f5b860b24
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Apr 29 00:20:26 2020 -0600
+
+    Improve emulation of SVG Gouraud shading with option -svgemulation.
+
+commit fa31a4f26318806e76146fcdf4d5a38493ddcd17
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Apr 27 09:04:14 2020 -0600
+
+    Fix typo in documentation.
+
+commit 154d7bbd45c8a2e3c92ed98ffdfb0d9614cab4dd
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Apr 26 18:17:56 2020 -0600
+
+    Work around dvisvgm --pdf limitations; fix -fsvg -render=0.
+
+commit 90b198134af21c9989e904ee72b78779b7ecbb2d
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Apr 26 15:56:54 2020 -0600
+
+    Fix segmentation fault; consolidate error messages.
+
+commit 1c15884c9505b3e2b01dfdc1bd21ace199d3b746
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Apr 25 19:30:15 2020 -0600
+
+    Flatten a monochrome tensor patch with interior internal control points to a
+    filled cyclic path.
+
+commit cb4c2c03e7cd77adceeab539e0d173798abf9717
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Apr 25 11:53:07 2020 -0600
+
+    Allow dvisvgm --pdf now that version 2.9.1 supports PNG images.
+
+commit 3063abbcfcf1d8b8b4fc6b67a37375bfc746f6cc
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Apr 25 08:58:11 2020 -0600
+
+    Consistently use dvisvgm -v3 verbosity option.
+
+commit 21b9f1a684678f931d56c26ccb8ea7fb11f5769c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Apr 25 00:08:59 2020 -0600
+
+    Fix export of 3D rendered bitmaps to svg.
+
+commit e0b8e3def55318505b24cd850b94efa2ac037d0b
+Author: ivankokan <ivan.kokan at gmail.com>
+Date:   Thu Apr 23 00:38:59 2020 +0200
+
+    Update sourceforge URLs in FAQ
+
+commit fcd9aeb92d892f97925f6f428a00efd376bd2da7
+Author: ivankokan <ivan.kokan at gmail.com>
+Date:   Thu Apr 23 00:32:10 2020 +0200
+
+    Update FAQ for international fonts question
+
+commit 825488fbb1395202f35b436df146da6f8560a6af
+Author: ivankokan <ivan.kokan at gmail.com>
+Date:   Thu Apr 23 00:01:44 2020 +0200
+
+    CJK package URL
+
+commit 285f855a0312465f1c1d96757a5098061d929725
+Merge: 35428571 881b585a
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Apr 13 14:56:25 2020 -0600
+
+    Merge pull request #151 from jsonn/patch-1
+    
+    Check for libc++ directly, not for the kernel
+
+commit 881b585a2f8f0a927ce7d77c59eba0a4774ce98e
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Apr 13 14:55:49 2020 -0600
+
+    Update comment.
+
+commit 44cb71efe77b4e7e9e12367bebcc39b0eebff767
+Author: Joerg Sonnenberger <joerg at bec.de>
+Date:   Mon Apr 13 21:49:01 2020 +0200
+
+    Check for libc++ directly, not for the kernel
+
+commit 35428571776efdcaedcc9f920e927526849727a0
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Apr 13 10:13:53 2020 -0600
+
+    Fix Bezier patch bounds bug introduced in bf3be19f7f1daf5730dabbf5c89e8a4f0f451a7d.
+
+commit 7f9480e35619e4cd6e7114cd025603c2e1937586
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Apr 13 10:10:31 2020 -0600
+
+    Revert "Fix export bug."
+    
+    This reverts commit 1566850db2aac0b78ec9806e35af514e7a185e63.
+
+commit decb4d5109744545082eb1843dcb2f1a52d4158c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Apr 3 08:39:40 2020 -0600
+
+    Add libtirpc dependency.
+
+commit 386b93b6d4770893d01ebc2ba25637546bca9f33
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Mar 25 22:23:40 2020 -0600
+
+    Increment version to 2.66.
+
 commit 1566850db2aac0b78ec9806e35af514e7a185e63
 Author: John Bowman <bowman at ualberta.ca>
 Date:   Tue Mar 24 23:30:17 2020 -0600
@@ -342,6 +1668,33 @@
 
     Fix test degenerate normals.
 
+commit c1a8c0a212aa32eed3a0e78b91ad1abc540795cf
+Author: ivankokan <ivan.kokan at gmail.com>
+Date:   Wed Feb 12 17:25:00 2020 +0100
+
+    Update documentation
+
+commit 173d1e8c9d2de43a11053b98f0f964af658a8a02
+Author: ivankokan <ivan.kokan at gmail.com>
+Date:   Wed Feb 12 14:35:31 2020 +0100
+
+    Remove latin1 module
+
+commit 525dbb95a60cc75f7f55075b8d0e1deaba981edf
+Author: ivankokan <ivan.kokan at gmail.com>
+Date:   Wed Feb 12 14:33:06 2020 +0100
+
+    Remove unicode module
+
+commit d560eaefbcffe9eb6c26db1d4fd1b365daa5799a
+Merge: 2898b83f 9beb5b6c
+Author: Ivan Kokan <ivan.kokan at gmail.com>
+Date:   Wed Feb 12 13:42:05 2020 +0100
+
+    Merge pull request #2 from vectorgraphics/master
+    
+    Sync
+
 commit 9beb5b6c72ce47c8fad8c33f14b78015c9baa40f
 Author: John Bowman <bowman at ualberta.ca>
 Date:   Wed Feb 5 22:26:02 2020 -0700

Modified: trunk/Build/source/utils/asymptote/Delaunay.cc
===================================================================
--- trunk/Build/source/utils/asymptote/Delaunay.cc	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/Delaunay.cc	2021-01-02 16:31:31 UTC (rev 57291)
@@ -13,7 +13,7 @@
   return (a > b) ? a : b;
 }
 
-int XYZCompare(const void *v1, const void *v2) 
+int XYZCompare(const void *v1, const void *v2)
 {
   double x1=((XYZ*)v1)->p[0];
   double x2=((XYZ*)v2)->p[0];
@@ -48,7 +48,7 @@
 
   if(presort) qsort(pxyz,nv,sizeof(XYZ),XYZCompare);
   else postsort=false;
-  
+
 /* Allocate memory for the completeness list, flag for each triangle */
   Int trimax = 4 * nv;
   Int *complete = new Int[trimax];
@@ -114,7 +114,7 @@
       double *a=pxyz[vj->p1].p;
       double *b=pxyz[vj->p2].p;
       double *c=pxyz[vj->p3].p;
-      
+
       if(incircle(a,b,c,d) <= 0.0) { // Point d is inside or on circumcircle
 /* Check that we haven't exceeded the edge list size */
         if(nedge + 3 >= emax) {
@@ -121,7 +121,7 @@
           emax += 100;
           IEDGE *p_EdgeTemp = new IEDGE[emax];
           for (Int i = 0; i < nedge; i++) {
-            p_EdgeTemp[i] = edges[i];   
+            p_EdgeTemp[i] = edges[i];
           }
           delete[] edges;
           edges = p_EdgeTemp;
@@ -199,7 +199,7 @@
   delete[] edges;
   delete[] complete;
 
-  if(postsort) { 
+  if(postsort) {
     for(Int i = 0; i < ntri; i++) {
       ITRIANGLE *vi=v+i;
       vi->p1=pxyz[vi->p1].i;
@@ -209,4 +209,4 @@
   }
 
   return 0;
-} 
+}

Modified: trunk/Build/source/utils/asymptote/GUI/Window1.py
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/Window1.py	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/GUI/Window1.py	2021-01-02 16:31:31 UTC (rev 57291)
@@ -772,11 +772,11 @@
         self.asyfyCanvas()
 
     def actionManual(self):
-        asyManualURL = 'http://asymptote.sourceforge.net/asymptote.pdf'
+        asyManualURL = 'https://asymptote.sourceforge.io/asymptote.pdf'
         webbrowser.open_new(asyManualURL)
 
     def actionAbout(self):
-        Qw.QMessageBox.about(self,"xasy","This is xasy "+xasyVersion.xasyVersion+"; a graphical front end to the Asymptote vector graphics language: http://asymptote.sourceforge.net/")
+        Qw.QMessageBox.about(self,"xasy","This is xasy "+xasyVersion.xasyVersion+"; a graphical front end to the Asymptote vector graphics language: https://asymptote.sourceforge.io/")
 
     def btnExportAsyOnClick(self):
         diag = Qw.QFileDialog(self)

Modified: trunk/Build/source/utils/asymptote/GUI/configs/xasyconfig.cson
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/configs/xasyconfig.cson	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/GUI/configs/xasyconfig.cson	2021-01-02 16:31:31 UTC (rev 57291)
@@ -54,7 +54,7 @@
 
 # Overrides
 
-windows:
+Windows:
     externalEditor: "notepad.exe"
 
 Darwin:

Modified: trunk/Build/source/utils/asymptote/GUI/icons_rc.py
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/icons_rc.py	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/GUI/icons_rc.py	2021-01-02 16:31:31 UTC (rev 57291)
@@ -9,13 +9,13 @@
 from PyQt5 import QtCore
 
 qt_resource_data = b"\
-\x00\x00\x03\xe6\
+\x00\x00\x02\x7d\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
 \x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
 \x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
 \x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
 \x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
@@ -27,53 +27,334 @@
 \x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
 \x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
 \x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x43\x68\x65\x76\x72\x6f\x6e\x5f\x63\x69\x72\x63\x6c\x65\
-\x64\x5f\x72\x69\x67\x68\x74\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x22\x0d\x0a\x09\x20\x78\x3d\x22\x30\x70\x78\
-\x22\x20\x79\x3d\x22\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\
-\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\
-\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\
-\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\
-\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\
-\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\x72\
-\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\
-\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\
-\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x31\x2c\x31\
-\x30\x4c\x38\x2e\x36\x39\x38\x2c\x37\x2e\x34\x39\x34\x63\x2d\x30\
-\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x38\x2d\x30\x2e\x31\x39\x36\
-\x2d\x30\x2e\x35\x31\x39\x2c\x30\x2d\x30\x2e\x37\x31\x38\x63\x30\
-\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\x35\x31\x35\
-\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\x37\x31\x2c\x30\x6c\x32\x2e\
-\x38\x30\x37\x2c\x32\x2e\x38\x36\x34\x0d\x0a\x09\x63\x30\x2e\x31\
-\x39\x36\x2c\x30\x2e\x31\x39\x39\x2c\x30\x2e\x31\x39\x36\x2c\x30\
-\x2e\x35\x32\x2c\x30\x2c\x30\x2e\x37\x31\x37\x6c\x2d\x32\x2e\x38\
-\x30\x37\x2c\x32\x2e\x38\x36\x34\x63\x2d\x30\x2e\x31\x39\x35\x2c\
-\x30\x2e\x31\x39\x39\x2d\x30\x2e\x35\x31\x34\x2c\x30\x2e\x31\x39\
-\x38\x2d\x30\x2e\x37\x31\x2c\x30\x63\x2d\x30\x2e\x31\x39\x36\x2d\
-\x30\x2e\x31\x39\x37\x2d\x30\x2e\x31\x39\x36\x2d\x30\x2e\x35\x31\
-\x38\x2c\x30\x2d\x30\x2e\x37\x31\x37\x4c\x31\x31\x2c\x31\x30\x7a\
-\x20\x4d\x31\x30\x2c\x30\x2e\x34\x0d\x0a\x09\x63\x35\x2e\x33\x30\
-\x32\x2c\x30\x2c\x39\x2e\x36\x2c\x34\x2e\x32\x39\x38\x2c\x39\x2e\
-\x36\x2c\x39\x2e\x36\x63\x30\x2c\x35\x2e\x33\x30\x33\x2d\x34\x2e\
-\x32\x39\x38\x2c\x39\x2e\x36\x2d\x39\x2e\x36\x2c\x39\x2e\x36\x53\
-\x30\x2e\x34\x2c\x31\x35\x2e\x33\x30\x33\x2c\x30\x2e\x34\x2c\x31\
-\x30\x43\x30\x2e\x34\x2c\x34\x2e\x36\x39\x38\x2c\x34\x2e\x36\x39\
-\x38\x2c\x30\x2e\x34\x2c\x31\x30\x2c\x30\x2e\x34\x7a\x20\x4d\x31\
-\x30\x2c\x31\x38\x2e\x33\x35\x34\x0d\x0a\x09\x63\x34\x2e\x36\x31\
-\x33\x2c\x30\x2c\x38\x2e\x33\x35\x34\x2d\x33\x2e\x37\x34\x2c\x38\
-\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x30\x2d\x34\x2e\x36\
-\x31\x34\x2d\x33\x2e\x37\x34\x31\x2d\x38\x2e\x33\x35\x34\x2d\x38\
-\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x2d\x34\x2e\x36\x31\
-\x35\x2c\x30\x2d\x38\x2e\x33\x35\x34\x2c\x33\x2e\x37\x34\x2d\x38\
-\x2e\x33\x35\x34\x2c\x38\x2e\x33\x35\x34\x0d\x0a\x09\x43\x31\x2e\
-\x36\x34\x35\x2c\x31\x34\x2e\x36\x31\x34\x2c\x35\x2e\x33\x38\x35\
-\x2c\x31\x38\x2e\x33\x35\x34\x2c\x31\x30\x2c\x31\x38\x2e\x33\x35\
-\x34\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\
-\x76\x67\x3e\x0d\x0a\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x5f\x38\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
+\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x32\
+\x37\x2c\x32\x33\x34\x2e\x36\x32\x35\x48\x31\x36\x37\x2e\x32\x39\
+\x36\x6c\x31\x31\x39\x2e\x37\x30\x32\x2d\x31\x31\x39\x2e\x37\x30\
+\x32\x4c\x32\x35\x36\x2c\x38\x35\x4c\x38\x35\x2c\x32\x35\x36\x6c\
+\x31\x37\x31\x2c\x31\x37\x31\x6c\x32\x39\x2e\x39\x32\x32\x2d\x32\
+\x39\x2e\x39\x32\x34\x4c\x31\x36\x37\x2e\x32\x39\x36\x2c\x32\x37\
+\x37\x2e\x33\x37\x35\x48\x34\x32\x37\x56\x32\x33\x34\x2e\x36\x32\
+\x35\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
+\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x02\x7f\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
+\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
+\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
+\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
+\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
+\x0a\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\
+\x3d\x22\x32\x38\x38\x2c\x39\x36\x20\x33\x33\x37\x2e\x39\x2c\x31\
+\x34\x35\x2e\x39\x20\x32\x37\x34\x2c\x32\x30\x39\x2e\x37\x20\x32\
+\x37\x34\x2c\x32\x30\x39\x2e\x37\x20\x31\x34\x35\x2e\x39\x2c\x33\
+\x33\x37\x2e\x39\x20\x39\x36\x2c\x32\x38\x38\x20\x39\x36\x2c\x34\
+\x31\x36\x20\x32\x32\x34\x2c\x34\x31\x36\x20\x31\x37\x34\x2e\x31\
+\x2c\x33\x36\x36\x2e\x31\x20\x33\x35\x37\x2e\x34\x2c\x31\x38\x32\
+\x2e\x39\x20\x33\x36\x36\x2e\x31\x2c\x31\x37\x34\x2e\x31\x20\x0d\
+\x0a\x09\x34\x31\x36\x2c\x32\x32\x34\x20\x34\x31\x36\x2c\x39\x36\
+\x20\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x07\x80\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
+\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x39\x33\x2e\x34\x36\
+\x2c\x32\x34\x39\x2e\x30\x35\x36\x63\x33\x2e\x37\x32\x33\x2d\x30\
+\x2e\x36\x37\x2c\x37\x2e\x35\x38\x39\x2d\x31\x2e\x30\x34\x31\x2c\
+\x31\x31\x2e\x35\x38\x36\x2d\x31\x2e\x30\x34\x31\x4c\x32\x30\x31\
+\x2e\x39\x32\x34\x2c\x32\x34\x38\x68\x31\x30\x33\x2e\x38\x32\x33\
+\x63\x34\x2e\x35\x30\x33\x2c\x30\x2c\x38\x2e\x38\x30\x36\x2d\x30\
+\x2e\x36\x31\x37\x2c\x31\x32\x2e\x39\x30\x38\x2d\x31\x2e\x37\x35\
+\x34\x0d\x0a\x09\x09\x63\x31\x39\x2e\x33\x37\x2d\x35\x2e\x33\x36\
+\x33\x2c\x33\x33\x2e\x33\x34\x35\x2d\x32\x32\x2e\x35\x33\x37\x2c\
+\x33\x33\x2e\x33\x34\x35\x2d\x34\x33\x2e\x36\x36\x33\x76\x2d\x33\
+\x30\x2e\x38\x32\x32\x76\x2d\x35\x36\x2e\x34\x30\x32\x63\x30\x2d\
+\x32\x34\x2e\x38\x33\x32\x2d\x32\x31\x2e\x31\x35\x2d\x34\x33\x2e\
+\x34\x38\x34\x2d\x34\x36\x2e\x32\x38\x39\x2d\x34\x37\x2e\x36\x30\
+\x36\x0d\x0a\x09\x09\x63\x2d\x31\x35\x2e\x39\x33\x31\x2d\x32\x2e\
+\x36\x32\x34\x2d\x33\x39\x2e\x32\x35\x38\x2d\x33\x2e\x38\x32\x37\
+\x2d\x35\x35\x2e\x30\x38\x39\x2d\x33\x2e\x37\x34\x39\x63\x2d\x31\
+\x35\x2e\x38\x32\x39\x2c\x30\x2e\x30\x38\x36\x2d\x33\x30\x2e\x39\
+\x38\x31\x2c\x31\x2e\x34\x30\x34\x2d\x34\x34\x2e\x32\x37\x37\x2c\
+\x33\x2e\x37\x34\x39\x43\x31\x36\x37\x2e\x31\x34\x33\x2c\x37\x34\
+\x2e\x35\x37\x36\x2c\x31\x36\x30\x2c\x38\x38\x2e\x39\x32\x38\x2c\
+\x31\x36\x30\x2c\x31\x31\x35\x2e\x33\x35\x39\x56\x31\x34\x34\x68\
+\x39\x36\x0d\x0a\x09\x09\x76\x31\x36\x48\x31\x32\x38\x2e\x38\x32\
+\x63\x2d\x33\x35\x2e\x36\x32\x38\x2c\x30\x2d\x36\x34\x2e\x35\x33\
+\x38\x2c\x34\x32\x2e\x35\x37\x31\x2d\x36\x34\x2e\x38\x31\x33\x2c\
+\x39\x35\x2e\x32\x34\x32\x43\x36\x34\x2e\x30\x30\x35\x2c\x32\x35\
+\x35\x2e\x34\x39\x35\x2c\x36\x34\x2c\x32\x35\x35\x2e\x37\x34\x37\
+\x2c\x36\x34\x2c\x32\x35\x36\x63\x30\x2c\x39\x2e\x35\x32\x33\x2c\
+\x30\x2e\x39\x34\x2c\x31\x38\x2e\x37\x32\x2c\x32\x2e\x36\x38\x35\
+\x2c\x32\x37\x2e\x34\x30\x34\x0d\x0a\x09\x09\x43\x37\x34\x2e\x36\
+\x34\x38\x2c\x33\x32\x33\x2e\x30\x37\x2c\x39\x39\x2e\x34\x35\x31\
+\x2c\x33\x35\x32\x2c\x31\x32\x38\x2e\x38\x32\x2c\x33\x35\x32\x48\
+\x31\x34\x34\x76\x2d\x32\x2e\x36\x36\x32\x76\x2d\x34\x33\x2e\x32\
+\x37\x33\x43\x31\x34\x34\x2c\x32\x37\x39\x2e\x32\x33\x38\x2c\x31\
+\x36\x34\x2e\x31\x34\x36\x2c\x32\x35\x34\x2e\x33\x33\x32\x2c\x31\
+\x39\x33\x2e\x34\x36\x2c\x32\x34\x39\x2e\x30\x35\x36\x7a\x20\x4d\
+\x32\x30\x33\x2e\x36\x35\x36\x2c\x31\x32\x37\x2e\x30\x30\x32\x0d\
+\x0a\x09\x09\x63\x2d\x39\x2e\x35\x39\x32\x2c\x30\x2d\x31\x37\x2e\
+\x33\x38\x34\x2d\x37\x2e\x37\x38\x35\x2d\x31\x37\x2e\x33\x38\x34\
+\x2d\x31\x37\x2e\x34\x30\x33\x63\x30\x2d\x39\x2e\x36\x36\x34\x2c\
+\x37\x2e\x37\x37\x34\x2d\x31\x37\x2e\x35\x32\x2c\x31\x37\x2e\x33\
+\x38\x34\x2d\x31\x37\x2e\x35\x32\x63\x39\x2e\x35\x37\x34\x2c\x30\
+\x2c\x31\x37\x2e\x33\x39\x39\x2c\x37\x2e\x38\x35\x35\x2c\x31\x37\
+\x2e\x33\x39\x39\x2c\x31\x37\x2e\x35\x32\x0d\x0a\x09\x09\x43\x32\
+\x32\x31\x2e\x30\x35\x36\x2c\x31\x31\x39\x2e\x32\x31\x37\x2c\x32\
+\x31\x33\x2e\x32\x34\x36\x2c\x31\x32\x37\x2e\x30\x30\x32\x2c\x32\
+\x30\x33\x2e\x36\x35\x36\x2c\x31\x32\x37\x2e\x30\x30\x32\x7a\x22\
+\x2f\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\
+\x34\x33\x2e\x39\x35\x31\x2c\x32\x32\x32\x2e\x35\x34\x33\x43\x34\
+\x33\x34\x2e\x37\x38\x2c\x31\x38\x36\x2e\x30\x32\x31\x2c\x34\x31\
+\x31\x2e\x30\x33\x33\x2c\x31\x36\x30\x2c\x33\x38\x33\x2e\x31\x38\
+\x2c\x31\x36\x30\x48\x33\x36\x38\x76\x32\x2e\x36\x32\x36\x76\x33\
+\x38\x2e\x30\x34\x36\x63\x30\x2c\x33\x33\x2e\x39\x31\x35\x2d\x32\
+\x32\x2e\x32\x38\x36\x2c\x35\x38\x2e\x34\x37\x34\x2d\x34\x39\x2e\
+\x34\x38\x39\x2c\x36\x32\x2e\x36\x38\x31\x0d\x0a\x09\x09\x63\x2d\
+\x32\x2e\x37\x33\x37\x2c\x30\x2e\x34\x32\x34\x2d\x35\x2e\x34\x38\
+\x33\x2c\x30\x2e\x36\x34\x36\x2d\x38\x2e\x33\x30\x31\x2c\x30\x2e\
+\x36\x34\x36\x48\x32\x30\x36\x2e\x33\x35\x31\x63\x2d\x34\x2e\x35\
+\x31\x38\x2c\x30\x2d\x38\x2e\x39\x30\x34\x2c\x30\x2e\x35\x38\x34\
+\x2d\x31\x33\x2e\x30\x34\x39\x2c\x31\x2e\x36\x37\x32\x43\x31\x37\
+\x34\x2e\x31\x38\x2c\x32\x37\x30\x2e\x36\x38\x39\x2c\x31\x36\x30\
+\x2c\x32\x38\x36\x2e\x36\x2c\x31\x36\x30\x2c\x33\x30\x37\x2e\x32\
+\x33\x36\x76\x33\x32\x2e\x39\x32\x32\x0d\x0a\x09\x09\x76\x35\x34\
+\x2e\x33\x30\x35\x63\x30\x2c\x32\x34\x2e\x38\x33\x32\x2c\x32\x34\
+\x2e\x39\x37\x37\x2c\x33\x39\x2e\x34\x32\x36\x2c\x34\x39\x2e\x34\
+\x38\x31\x2c\x34\x36\x2e\x35\x35\x31\x63\x32\x39\x2e\x33\x32\x37\
+\x2c\x38\x2e\x35\x33\x31\x2c\x36\x31\x2e\x32\x36\x37\x2c\x31\x30\
+\x2e\x30\x36\x38\x2c\x39\x36\x2e\x33\x36\x36\x2c\x30\x43\x33\x32\
+\x39\x2e\x31\x35\x2c\x34\x33\x34\x2e\x33\x35\x34\x2c\x33\x35\x32\
+\x2c\x34\x32\x30\x2e\x38\x39\x33\x2c\x33\x35\x32\x2c\x33\x39\x34\
+\x2e\x34\x36\x33\x56\x33\x36\x38\x0d\x0a\x09\x09\x68\x2d\x39\x36\
+\x76\x2d\x31\x36\x68\x31\x32\x37\x2e\x31\x38\x63\x32\x35\x2e\x32\
+\x34\x2c\x30\x2c\x34\x37\x2e\x31\x30\x37\x2d\x32\x31\x2e\x33\x36\
+\x35\x2c\x35\x37\x2e\x38\x31\x34\x2d\x35\x32\x2e\x35\x34\x39\x43\
+\x34\x34\x35\x2e\x34\x37\x34\x2c\x32\x38\x36\x2e\x34\x30\x34\x2c\
+\x34\x34\x38\x2c\x32\x37\x31\x2e\x36\x34\x31\x2c\x34\x34\x38\x2c\
+\x32\x35\x36\x0d\x0a\x09\x09\x43\x34\x34\x38\x2c\x32\x34\x34\x2e\
+\x32\x33\x32\x2c\x34\x34\x36\x2e\x35\x36\x37\x2c\x32\x33\x32\x2e\
+\x39\x36\x32\x2c\x34\x34\x33\x2e\x39\x35\x31\x2c\x32\x32\x32\x2e\
+\x35\x34\x33\x7a\x20\x4d\x33\x30\x37\x2e\x38\x36\x37\x2c\x33\x38\
+\x32\x2e\x38\x32\x63\x39\x2e\x35\x39\x2c\x30\x2c\x31\x37\x2e\x33\
+\x38\x31\x2c\x37\x2e\x37\x38\x35\x2c\x31\x37\x2e\x33\x38\x31\x2c\
+\x31\x37\x2e\x34\x0d\x0a\x09\x09\x63\x30\x2c\x39\x2e\x36\x35\x2d\
+\x37\x2e\x37\x39\x31\x2c\x31\x37\x2e\x35\x32\x31\x2d\x31\x37\x2e\
+\x33\x38\x31\x2c\x31\x37\x2e\x35\x32\x31\x63\x2d\x39\x2e\x35\x37\
+\x37\x2c\x30\x2d\x31\x37\x2e\x33\x39\x39\x2d\x37\x2e\x38\x37\x31\
+\x2d\x31\x37\x2e\x33\x39\x39\x2d\x31\x37\x2e\x35\x32\x31\x43\x32\
+\x39\x30\x2e\x34\x36\x38\x2c\x33\x39\x30\x2e\x35\x39\x2c\x32\x39\
+\x38\x2e\x32\x37\x34\x2c\x33\x38\x32\x2e\x38\x32\x2c\x33\x30\x37\
+\x2e\x38\x36\x37\x2c\x33\x38\x32\x2e\x38\x32\x7a\x22\x2f\x3e\x0d\
+\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x03\xc4\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4d\x61\x67\x6e\x69\x66\x79\x69\x6e\x67\x5f\x67\x6c\x61\
+\x73\x73\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
+\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6c\x69\
+\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\
+\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\x69\x6e\x6b\
+\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x79\x3d\x22\
+\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\
+\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\
+\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\
+\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\
+\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\
+\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\x34\x20\x30\x20\
+\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x0d\x0a\x3c\x70\x61\
+\x74\x68\x20\x64\x3d\x22\x4d\x31\x37\x2e\x35\x34\x35\x2c\x31\x35\
+\x2e\x34\x36\x37\x6c\x2d\x33\x2e\x37\x37\x39\x2d\x33\x2e\x37\x37\
+\x39\x63\x30\x2e\x35\x37\x2d\x30\x2e\x39\x33\x35\x2c\x30\x2e\x38\
+\x39\x38\x2d\x32\x2e\x30\x33\x35\x2c\x30\x2e\x38\x39\x38\x2d\x33\
+\x2e\x32\x31\x63\x30\x2d\x33\x2e\x34\x31\x37\x2d\x32\x2e\x39\x36\
+\x31\x2d\x36\x2e\x33\x37\x37\x2d\x36\x2e\x33\x37\x38\x2d\x36\x2e\
+\x33\x37\x37\x0d\x0a\x09\x43\x34\x2e\x38\x36\x39\x2c\x32\x2e\x31\
+\x2c\x32\x2e\x31\x2c\x34\x2e\x38\x37\x2c\x32\x2e\x31\x2c\x38\x2e\
+\x32\x38\x37\x63\x30\x2c\x33\x2e\x34\x31\x36\x2c\x32\x2e\x39\x36\
+\x31\x2c\x36\x2e\x33\x37\x37\x2c\x36\x2e\x33\x37\x37\x2c\x36\x2e\
+\x33\x37\x37\x63\x31\x2e\x31\x33\x37\x2c\x30\x2c\x32\x2e\x32\x2d\
+\x30\x2e\x33\x30\x39\x2c\x33\x2e\x31\x31\x35\x2d\x30\x2e\x38\x34\
+\x34\x6c\x33\x2e\x37\x39\x39\x2c\x33\x2e\x38\x30\x31\x0d\x0a\x09\
+\x63\x30\x2e\x33\x37\x32\x2c\x30\x2e\x33\x37\x31\x2c\x30\x2e\x39\
+\x37\x35\x2c\x30\x2e\x33\x37\x31\x2c\x31\x2e\x33\x34\x36\x2c\x30\
+\x6c\x30\x2e\x39\x34\x33\x2d\x30\x2e\x39\x34\x33\x43\x31\x38\x2e\
+\x30\x35\x31\x2c\x31\x36\x2e\x33\x30\x37\x2c\x31\x37\x2e\x39\x31\
+\x36\x2c\x31\x35\x2e\x38\x33\x38\x2c\x31\x37\x2e\x35\x34\x35\x2c\
+\x31\x35\x2e\x34\x36\x37\x7a\x20\x4d\x34\x2e\x30\x30\x34\x2c\x38\
+\x2e\x32\x38\x37\x0d\x0a\x09\x63\x30\x2d\x32\x2e\x33\x36\x36\x2c\
+\x31\x2e\x39\x31\x37\x2d\x34\x2e\x32\x38\x33\x2c\x34\x2e\x32\x38\
+\x32\x2d\x34\x2e\x32\x38\x33\x63\x32\x2e\x33\x36\x36\x2c\x30\x2c\
+\x34\x2e\x34\x37\x34\x2c\x32\x2e\x31\x30\x37\x2c\x34\x2e\x34\x37\
+\x34\x2c\x34\x2e\x34\x37\x34\x63\x30\x2c\x32\x2e\x33\x36\x35\x2d\
+\x31\x2e\x39\x31\x38\x2c\x34\x2e\x32\x38\x33\x2d\x34\x2e\x32\x38\
+\x33\x2c\x34\x2e\x32\x38\x33\x0d\x0a\x09\x43\x36\x2e\x31\x31\x31\
+\x2c\x31\x32\x2e\x37\x36\x2c\x34\x2e\x30\x30\x34\x2c\x31\x30\x2e\
+\x36\x35\x32\x2c\x34\x2e\x30\x30\x34\x2c\x38\x2e\x32\x38\x37\x7a\
+\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\
+\x3e\x0d\x0a\
+\x00\x00\x04\xaa\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x43\x6f\x64\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\
+\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\
+\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\
+\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\
+\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x32\x34\x70\x78\x22\x20\x79\
+\x3d\x22\x32\x34\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\x77\x42\
+\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\
+\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\
+\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\
+\x35\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\
+\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\
+\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\
+\x28\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\
+\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2e\x37\x31\x39\
+\x2c\x31\x34\x2e\x37\x35\x63\x2d\x30\x2e\x32\x33\x36\x2c\x30\x2d\
+\x30\x2e\x34\x37\x34\x2d\x30\x2e\x30\x38\x33\x2d\x30\x2e\x36\x36\
+\x34\x2d\x30\x2e\x32\x35\x32\x4c\x2d\x30\x2e\x30\x30\x35\x2c\x31\
+\x30\x6c\x35\x2e\x33\x34\x31\x2d\x34\x2e\x37\x34\x38\x43\x35\x2e\
+\x37\x34\x38\x2c\x34\x2e\x38\x38\x37\x2c\x36\x2e\x33\x38\x2c\x34\
+\x2e\x39\x32\x32\x2c\x36\x2e\x37\x34\x37\x2c\x35\x2e\x33\x33\x35\
+\x0d\x0a\x09\x63\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x31\x33\x2c\
+\x30\x2e\x33\x33\x2c\x31\x2e\x30\x34\x35\x2d\x30\x2e\x30\x38\x33\
+\x2c\x31\x2e\x34\x31\x32\x4c\x33\x2e\x30\x30\x35\x2c\x31\x30\x6c\
+\x33\x2e\x33\x37\x38\x2c\x33\x2e\x30\x30\x32\x63\x30\x2e\x34\x31\
+\x33\x2c\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x35\x2c\x30\x2e\x39\
+\x39\x39\x2c\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\x31\x32\x0d\x0a\
+\x09\x43\x36\x2e\x32\x36\x39\x2c\x31\x34\x2e\x36\x33\x37\x2c\x35\
+\x2e\x39\x39\x34\x2c\x31\x34\x2e\x37\x35\x2c\x35\x2e\x37\x31\x39\
+\x2c\x31\x34\x2e\x37\x35\x7a\x20\x4d\x31\x34\x2e\x36\x36\x34\x2c\
+\x31\x34\x2e\x37\x34\x38\x4c\x32\x30\x2e\x30\x30\x35\x2c\x31\x30\
+\x6c\x2d\x35\x2e\x30\x36\x2d\x34\x2e\x34\x39\x38\x63\x2d\x30\x2e\
+\x34\x31\x33\x2d\x30\x2e\x33\x36\x37\x2d\x31\x2e\x30\x34\x35\x2d\
+\x30\x2e\x33\x33\x2d\x31\x2e\x34\x31\x31\x2c\x30\x2e\x30\x38\x33\
+\x0d\x0a\x09\x63\x2d\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x31\x33\
+\x2d\x30\x2e\x33\x33\x2c\x31\x2e\x30\x34\x35\x2c\x30\x2e\x30\x38\
+\x33\x2c\x31\x2e\x34\x31\x32\x4c\x31\x36\x2e\x39\x39\x35\x2c\x31\
+\x30\x6c\x2d\x33\x2e\x36\x35\x39\x2c\x33\x2e\x32\x35\x32\x63\x2d\
+\x30\x2e\x34\x31\x33\x2c\x30\x2e\x33\x36\x37\x2d\x30\x2e\x34\x35\
+\x2c\x30\x2e\x39\x39\x39\x2d\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\
+\x31\x32\x43\x31\x33\x2e\x34\x35\x2c\x31\x34\x2e\x38\x38\x37\x2c\
+\x31\x33\x2e\x37\x32\x35\x2c\x31\x35\x2c\x31\x34\x2c\x31\x35\x0d\
+\x0a\x09\x43\x31\x34\x2e\x32\x33\x36\x2c\x31\x35\x2c\x31\x34\x2e\
+\x34\x37\x34\x2c\x31\x34\x2e\x39\x31\x37\x2c\x31\x34\x2e\x36\x36\
+\x34\x2c\x31\x34\x2e\x37\x34\x38\x7a\x20\x4d\x39\x2e\x39\x38\x36\
+\x2c\x31\x36\x2e\x31\x36\x35\x6c\x32\x2d\x31\x32\x63\x30\x2e\x30\
+\x39\x31\x2d\x30\x2e\x35\x34\x35\x2d\x30\x2e\x32\x37\x37\x2d\x31\
+\x2e\x30\x36\x2d\x30\x2e\x38\x32\x32\x2d\x31\x2e\x31\x35\x31\x0d\
+\x0a\x09\x63\x2d\x30\x2e\x35\x34\x37\x2d\x30\x2e\x30\x39\x32\x2d\
+\x31\x2e\x30\x36\x31\x2c\x30\x2e\x32\x37\x37\x2d\x31\x2e\x31\x35\
+\x2c\x30\x2e\x38\x32\x32\x6c\x2d\x32\x2c\x31\x32\x63\x2d\x30\x2e\
+\x30\x39\x31\x2c\x30\x2e\x35\x34\x35\x2c\x30\x2e\x32\x37\x37\x2c\
+\x31\x2e\x30\x36\x2c\x30\x2e\x38\x32\x32\x2c\x31\x2e\x31\x35\x31\
+\x43\x38\x2e\x38\x39\x32\x2c\x31\x36\x2e\x39\x39\x36\x2c\x38\x2e\
+\x39\x34\x36\x2c\x31\x37\x2c\x39\x2e\x30\x30\x31\x2c\x31\x37\x0d\
+\x0a\x09\x43\x39\x2e\x34\x38\x31\x2c\x31\x37\x2c\x39\x2e\x39\x30\
+\x35\x2c\x31\x36\x2e\x36\x35\x33\x2c\x39\x2e\x39\x38\x36\x2c\x31\
+\x36\x2e\x31\x36\x35\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\
+\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
 \x00\x00\x02\xf2\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -124,33 +405,8 @@
 \x35\x39\x39\x2c\x31\x30\x2c\x31\x37\x2e\x35\x39\x39\x7a\x22\x2f\
 \x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
 \x0a\
-\x00\x00\x01\x69\
+\x00\x00\x04\x64\
 \x3c\
-\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
-\x30\x2f\x73\x76\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\x31\
-\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\x32\
-\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\
-\x20\x35\x31\x32\x20\x35\x31\x32\x22\x3e\x3c\x67\x20\x74\x72\x61\
-\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\
-\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x3c\
-\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x2e\x33\x34\x20\x31\x35\
-\x2e\x36\x36\x41\x37\x2e\x39\x37\x20\x37\x2e\x39\x37\x20\x30\x20\
-\x30\x20\x30\x20\x39\x20\x31\x37\x2e\x39\x34\x56\x31\x30\x48\x35\
-\x56\x38\x68\x34\x56\x35\x2e\x38\x33\x61\x33\x20\x33\x20\x30\x20\
-\x31\x20\x31\x20\x32\x20\x30\x56\x38\x68\x34\x76\x32\x68\x2d\x34\
-\x76\x37\x2e\x39\x34\x61\x37\x2e\x39\x37\x20\x37\x2e\x39\x37\x20\
-\x30\x20\x30\x20\x30\x20\x34\x2e\x36\x36\x2d\x32\x2e\x32\x38\x6c\
-\x2d\x31\x2e\x34\x32\x2d\x31\x2e\x34\x32\x68\x35\x2e\x36\x36\x6c\
-\x2d\x32\x2e\x38\x33\x20\x32\x2e\x38\x33\x61\x31\x30\x20\x31\x30\
-\x20\x30\x20\x30\x20\x31\x2d\x31\x34\x2e\x31\x34\x20\x30\x4c\x2e\
-\x31\x20\x31\x34\x2e\x32\x34\x68\x35\x2e\x36\x36\x6c\x2d\x31\x2e\
-\x34\x32\x20\x31\x2e\x34\x32\x7a\x4d\x31\x30\x20\x34\x61\x31\x20\
-\x31\x20\x30\x20\x31\x20\x30\x20\x30\x2d\x32\x20\x31\x20\x31\x20\
-\x30\x20\x30\x20\x30\x20\x30\x20\x32\x7a\x22\x2f\x3e\x3c\x2f\x67\
-\x3e\x3c\x2f\x73\x76\x67\x3e\x0a\
-\x00\x00\x03\x46\
-\x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
@@ -176,34 +432,52 @@
 \x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
 \x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
 \x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
-\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
-\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
-\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
-\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
-\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x33\x37\x2e\x35\
-\x2c\x33\x38\x36\x2e\x36\x4c\x33\x30\x36\x2e\x39\x2c\x32\x35\x36\
-\x6c\x31\x33\x30\x2e\x36\x2d\x31\x33\x30\x2e\x36\x63\x31\x34\x2e\
-\x31\x2d\x31\x34\x2e\x31\x2c\x31\x34\x2e\x31\x2d\x33\x36\x2e\x38\
-\x2c\x30\x2d\x35\x30\x2e\x39\x63\x2d\x31\x34\x2e\x31\x2d\x31\x34\
-\x2e\x31\x2d\x33\x36\x2e\x38\x2d\x31\x34\x2e\x31\x2d\x35\x30\x2e\
-\x39\x2c\x30\x4c\x32\x35\x36\x2c\x32\x30\x35\x2e\x31\x4c\x31\x32\
-\x35\x2e\x34\x2c\x37\x34\x2e\x35\x0d\x0a\x09\x63\x2d\x31\x34\x2e\
-\x31\x2d\x31\x34\x2e\x31\x2d\x33\x36\x2e\x38\x2d\x31\x34\x2e\x31\
-\x2d\x35\x30\x2e\x39\x2c\x30\x63\x2d\x31\x34\x2e\x31\x2c\x31\x34\
-\x2e\x31\x2d\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\x35\
-\x30\x2e\x39\x4c\x32\x30\x35\x2e\x31\x2c\x32\x35\x36\x4c\x37\x34\
-\x2e\x35\x2c\x33\x38\x36\x2e\x36\x63\x2d\x31\x34\x2e\x31\x2c\x31\
-\x34\x2e\x31\x2d\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\
-\x35\x30\x2e\x39\x0d\x0a\x09\x63\x31\x34\x2e\x31\x2c\x31\x34\x2e\
-\x31\x2c\x33\x36\x2e\x38\x2c\x31\x34\x2e\x31\x2c\x35\x30\x2e\x39\
-\x2c\x30\x4c\x32\x35\x36\x2c\x33\x30\x36\x2e\x39\x6c\x31\x33\x30\
-\x2e\x36\x2c\x31\x33\x30\x2e\x36\x63\x31\x34\x2e\x31\x2c\x31\x34\
-\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x31\x34\x2e\x31\x2c\x35\x30\x2e\
-\x39\x2c\x30\x43\x34\x35\x31\x2e\x35\x2c\x34\x32\x33\x2e\x34\x2c\
-\x34\x35\x31\x2e\x35\x2c\x34\x30\x30\x2e\x36\x2c\x34\x33\x37\x2e\
-\x35\x2c\x33\x38\x36\x2e\x36\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\
-\x76\x67\x3e\x0d\x0a\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\x0d\x0a\x09\
+\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x31\
+\x37\x36\x63\x2d\x34\x34\x2e\x30\x30\x34\x2c\x30\x2d\x38\x30\x2e\
+\x30\x30\x31\x2c\x33\x36\x2d\x38\x30\x2e\x30\x30\x31\x2c\x38\x30\
+\x63\x30\x2c\x34\x34\x2e\x30\x30\x34\x2c\x33\x35\x2e\x39\x39\x37\
+\x2c\x38\x30\x2c\x38\x30\x2e\x30\x30\x31\x2c\x38\x30\x63\x34\x34\
+\x2e\x30\x30\x35\x2c\x30\x2c\x37\x39\x2e\x39\x39\x39\x2d\x33\x35\
+\x2e\x39\x39\x36\x2c\x37\x39\x2e\x39\x39\x39\x2d\x38\x30\x0d\x0a\
+\x09\x09\x09\x43\x33\x33\x35\x2e\x39\x39\x39\x2c\x32\x31\x32\x2c\
+\x33\x30\x30\x2e\x30\x30\x35\x2c\x31\x37\x36\x2c\x32\x35\x36\x2c\
+\x31\x37\x36\x7a\x20\x4d\x34\x34\x36\x2e\x39\x33\x38\x2c\x32\x33\
+\x34\x2e\x36\x36\x37\x63\x2d\x39\x2e\x36\x30\x35\x2d\x38\x38\x2e\
+\x35\x33\x31\x2d\x38\x31\x2e\x30\x37\x34\x2d\x31\x36\x30\x2d\x31\
+\x36\x39\x2e\x36\x30\x35\x2d\x31\x36\x39\x2e\x35\x39\x39\x56\x33\
+\x32\x68\x2d\x34\x32\x2e\x36\x36\x36\x76\x33\x33\x2e\x30\x36\x37\
+\x0d\x0a\x09\x09\x09\x63\x2d\x38\x38\x2e\x35\x33\x31\x2c\x39\x2e\
+\x35\x39\x39\x2d\x31\x36\x30\x2c\x38\x31\x2e\x30\x36\x38\x2d\x31\
+\x36\x39\x2e\x36\x30\x34\x2c\x31\x36\x39\x2e\x35\x39\x39\x48\x33\
+\x32\x76\x34\x32\x2e\x36\x36\x37\x68\x33\x33\x2e\x30\x36\x32\x63\
+\x39\x2e\x36\x30\x34\x2c\x38\x38\x2e\x35\x33\x31\x2c\x38\x31\x2e\
+\x30\x37\x32\x2c\x31\x36\x30\x2c\x31\x36\x39\x2e\x36\x30\x34\x2c\
+\x31\x36\x39\x2e\x36\x30\x34\x56\x34\x38\x30\x68\x34\x32\x2e\x36\
+\x36\x36\x76\x2d\x33\x33\x2e\x30\x36\x32\x0d\x0a\x09\x09\x09\x63\
+\x38\x38\x2e\x35\x33\x31\x2d\x39\x2e\x36\x30\x34\x2c\x31\x36\x30\
+\x2d\x38\x31\x2e\x30\x37\x33\x2c\x31\x36\x39\x2e\x36\x30\x35\x2d\
+\x31\x36\x39\x2e\x36\x30\x34\x48\x34\x38\x30\x76\x2d\x34\x32\x2e\
+\x36\x36\x37\x48\x34\x34\x36\x2e\x39\x33\x38\x7a\x20\x4d\x32\x35\
+\x36\x2c\x34\x30\x35\x2e\x33\x33\x33\x63\x2d\x38\x32\x2e\x31\x33\
+\x37\x2c\x30\x2d\x31\x34\x39\x2e\x33\x33\x34\x2d\x36\x37\x2e\x31\
+\x39\x38\x2d\x31\x34\x39\x2e\x33\x33\x34\x2d\x31\x34\x39\x2e\x33\
+\x33\x33\x0d\x0a\x09\x09\x09\x63\x30\x2d\x38\x32\x2e\x31\x33\x36\
+\x2c\x36\x37\x2e\x31\x39\x37\x2d\x31\x34\x39\x2e\x33\x33\x33\x2c\
+\x31\x34\x39\x2e\x33\x33\x34\x2d\x31\x34\x39\x2e\x33\x33\x33\x63\
+\x38\x32\x2e\x31\x33\x35\x2c\x30\x2c\x31\x34\x39\x2e\x33\x33\x32\
+\x2c\x36\x37\x2e\x31\x39\x38\x2c\x31\x34\x39\x2e\x33\x33\x32\x2c\
+\x31\x34\x39\x2e\x33\x33\x33\x43\x34\x30\x35\x2e\x33\x33\x32\x2c\
+\x33\x33\x38\x2e\x31\x33\x35\x2c\x33\x33\x38\x2e\x31\x33\x35\x2c\
+\x34\x30\x35\x2e\x33\x33\x33\x2c\x32\x35\x36\x2c\x34\x30\x35\x2e\
+\x33\x33\x33\x7a\x0d\x0a\x09\x09\x09\x22\x2f\x3e\x0d\x0a\x09\x3c\
+\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\
+\x3e\x0d\x0a\
 \x00\x00\x04\xca\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -283,6 +557,233 @@
 \x36\x37\x2c\x37\x2e\x34\x37\x30\x34\x0a\x09\x48\x33\x2e\x33\x37\
 \x33\x33\x4c\x37\x2e\x35\x2c\x33\x2e\x38\x39\x39\x33\x7a\x22\x2f\
 \x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\
+\x00\x00\x00\x6c\
+\x3c\
+\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
+\x30\x2f\x73\x76\x67\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\
+\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x3e\x3c\x70\x61\x74\x68\
+\x20\x64\x3d\x22\x4d\x31\x38\x20\x31\x32\x76\x31\x48\x38\x76\x35\
+\x6c\x2d\x36\x2d\x36\x20\x36\x2d\x36\x76\x35\x68\x38\x56\x32\x68\
+\x32\x7a\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
+\x00\x00\x04\xa2\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
+\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
+\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
+\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
+\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
+\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
+\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
+\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
+\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
+\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
+\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
+\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
+\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
+\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
+\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
+\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x43\x20\x34\
+\x2e\x31\x35\x35\x35\x36\x20\x2d\x33\x39\x2e\x32\x37\x34\x35\x20\
+\x36\x2e\x39\x38\x34\x37\x33\x20\x2d\x34\x36\x2e\x31\x30\x34\x37\
+\x20\x31\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\
+\x39\x43\x20\x32\x37\x2e\x34\x34\x31\x31\x20\x2d\x36\x37\x2e\x37\
+\x32\x36\x39\x20\x35\x33\x2e\x33\x30\x32\x31\x20\x2d\x36\x31\x2e\
+\x35\x34\x30\x35\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\
+\x2e\x35\x30\x32\x32\x43\x20\x35\x37\x2e\x36\x32\x37\x20\x2d\x33\
+\x32\x2e\x36\x35\x31\x39\x20\x35\x30\x2e\x35\x38\x35\x36\x20\x2d\
+\x32\x33\x2e\x35\x36\x32\x31\x20\x34\x30\x2e\x36\x37\x39\x34\x20\
+\x2d\x32\x32\x2e\x35\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\
+\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\
+\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\
+\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\
+\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\
+\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\
+\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\
+\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\
+\x32\x2e\x35\x30\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
+\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
+\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
+\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
+\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
+\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\x35\x37\x33\
+\x35\x27\x20\x63\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\x27\x20\x66\
+\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\
+\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
+\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
+\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
+\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
+\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
+\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\x39\x30\x33\
+\x36\x27\x20\x63\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\x33\x39\x27\
+\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\
+\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\
+\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\
+\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\
+\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\
+\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\
+\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\x36\x2e\x31\
+\x35\x32\x33\x27\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\x35\x30\x32\
+\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\
+\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\
+\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\
+\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\
+\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\
+\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\
+\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\x30\
+\x2e\x36\x37\x39\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\x32\x2e\x35\
+\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\
+\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\
+\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\
+\x3e\
+\x00\x00\x02\xb7\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x5f\x35\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
+\x0d\x0a\x09\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\
+\x6e\x74\x73\x3d\x22\x34\x30\x35\x2c\x31\x33\x36\x2e\x37\x39\x38\
+\x20\x33\x37\x35\x2e\x32\x30\x32\x2c\x31\x30\x37\x20\x32\x35\x36\
+\x2c\x32\x32\x36\x2e\x32\x30\x32\x20\x31\x33\x36\x2e\x37\x39\x38\
+\x2c\x31\x30\x37\x20\x31\x30\x37\x2c\x31\x33\x36\x2e\x37\x39\x38\
+\x20\x32\x32\x36\x2e\x32\x30\x32\x2c\x32\x35\x36\x20\x31\x30\x37\
+\x2c\x33\x37\x35\x2e\x32\x30\x32\x20\x31\x33\x36\x2e\x37\x39\x38\
+\x2c\x34\x30\x35\x20\x32\x35\x36\x2c\x32\x38\x35\x2e\x37\x39\x38\
+\x20\x0d\x0a\x09\x09\x09\x33\x37\x35\x2e\x32\x30\x32\x2c\x34\x30\
+\x35\x20\x34\x30\x35\x2c\x33\x37\x35\x2e\x32\x30\x32\x20\x32\x38\
+\x35\x2e\x37\x39\x38\x2c\x32\x35\x36\x20\x09\x09\x22\x2f\x3e\x0d\
+\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
+\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x05\xca\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\
+\x64\x3d\x22\x4d\x34\x35\x30\x2e\x36\x37\x39\x2c\x32\x37\x33\x2e\
+\x35\x63\x2d\x31\x34\x2e\x35\x38\x35\x2d\x31\x34\x2e\x35\x37\x37\
+\x2d\x33\x36\x2e\x30\x35\x34\x2d\x31\x35\x2e\x38\x39\x2d\x35\x30\
+\x2e\x36\x33\x39\x2d\x31\x2e\x33\x31\x32\x6c\x2d\x34\x31\x2e\x36\
+\x38\x37\x2c\x34\x31\x2e\x36\x36\x34\x63\x2d\x31\x30\x2e\x38\x35\
+\x32\x2c\x31\x30\x2e\x38\x33\x36\x2d\x32\x33\x2e\x39\x33\x2c\x31\
+\x30\x2e\x38\x35\x39\x2d\x33\x31\x2e\x35\x36\x34\x2c\x31\x2e\x38\
+\x35\x32\x0d\x0a\x09\x63\x2d\x35\x2e\x30\x35\x37\x2d\x35\x2e\x39\
+\x36\x38\x2d\x33\x2e\x30\x36\x31\x2d\x32\x34\x2e\x33\x37\x34\x2d\
+\x31\x2e\x36\x34\x34\x2d\x33\x36\x2e\x30\x34\x39\x6c\x32\x30\x2e\
+\x39\x30\x37\x2d\x31\x37\x31\x2e\x38\x34\x39\x63\x31\x2e\x38\x36\
+\x37\x2d\x31\x35\x2e\x33\x35\x33\x2d\x39\x2e\x30\x37\x2d\x33\x30\
+\x2e\x31\x38\x35\x2d\x32\x34\x2e\x34\x33\x2d\x33\x32\x2e\x30\x35\
+\x31\x0d\x0a\x09\x63\x2d\x31\x35\x2e\x33\x35\x38\x2d\x31\x2e\x38\
+\x36\x37\x2d\x32\x39\x2e\x33\x32\x32\x2c\x39\x2e\x39\x33\x39\x2d\
+\x33\x31\x2e\x31\x39\x31\x2c\x32\x35\x2e\x32\x38\x39\x4c\x32\x36\
+\x37\x2e\x33\x37\x2c\x32\x33\x36\x2e\x30\x32\x31\x63\x2d\x31\x2e\
+\x32\x30\x35\x2c\x33\x2e\x33\x35\x38\x2d\x33\x2e\x37\x39\x2c\x33\
+\x2e\x39\x33\x38\x2d\x34\x2e\x30\x38\x31\x2d\x30\x2e\x35\x38\x32\
+\x4c\x32\x35\x35\x2e\x34\x34\x2c\x36\x30\x0d\x0a\x09\x63\x30\x2d\
+\x31\x35\x2e\x34\x36\x35\x2d\x31\x32\x2e\x35\x34\x32\x2d\x32\x38\
+\x2d\x32\x38\x2e\x30\x31\x34\x2d\x32\x38\x63\x2d\x31\x35\x2e\x34\
+\x37\x33\x2c\x30\x2d\x32\x38\x2e\x30\x31\x35\x2c\x31\x32\x2e\x35\
+\x33\x35\x2d\x32\x38\x2e\x30\x31\x35\x2c\x32\x38\x6c\x2d\x30\x2e\
+\x35\x35\x32\x2c\x31\x37\x36\x2e\x37\x35\x32\x63\x30\x2e\x31\x34\
+\x36\x2c\x32\x2e\x30\x34\x2d\x31\x2e\x36\x30\x34\x2c\x32\x2e\x36\
+\x32\x34\x2d\x31\x2e\x39\x32\x2c\x30\x2e\x32\x39\x34\x4c\x31\x37\
+\x32\x2e\x30\x31\x36\x2c\x39\x39\x2e\x30\x37\x37\x0d\x0a\x09\x63\
+\x2d\x32\x2e\x37\x35\x2d\x31\x35\x2e\x32\x31\x39\x2d\x31\x37\x2e\
+\x33\x32\x33\x2d\x32\x36\x2e\x32\x30\x33\x2d\x33\x32\x2e\x35\x34\
+\x38\x2d\x32\x33\x2e\x34\x35\x33\x63\x2d\x31\x35\x2e\x32\x32\x37\
+\x2c\x32\x2e\x37\x34\x38\x2d\x32\x35\x2e\x33\x33\x39\x2c\x31\x38\
+\x2e\x31\x38\x37\x2d\x32\x32\x2e\x35\x39\x31\x2c\x33\x33\x2e\x34\
+\x30\x33\x6c\x32\x32\x2e\x31\x39\x33\x2c\x31\x36\x31\x2e\x34\x35\
+\x35\x0d\x0a\x09\x63\x30\x2e\x30\x32\x33\x2c\x32\x2e\x38\x37\x32\
+\x2d\x30\x2e\x39\x34\x31\x2c\x34\x2e\x35\x31\x33\x2d\x32\x2e\x33\
+\x30\x38\x2c\x30\x2e\x38\x33\x31\x6c\x2d\x33\x33\x2e\x31\x30\x39\
+\x2d\x38\x38\x2e\x35\x31\x37\x63\x2d\x35\x2e\x31\x38\x2d\x31\x34\
+\x2e\x35\x37\x32\x2d\x32\x31\x2e\x31\x39\x36\x2d\x32\x33\x2e\x30\
+\x36\x35\x2d\x33\x35\x2e\x37\x37\x36\x2d\x31\x37\x2e\x38\x38\x39\
+\x0d\x0a\x09\x63\x2d\x31\x34\x2e\x35\x37\x39\x2c\x35\x2e\x31\x37\
+\x37\x2d\x32\x32\x2e\x32\x30\x31\x2c\x32\x32\x2e\x30\x36\x31\x2d\
+\x31\x37\x2e\x30\x32\x33\x2c\x33\x36\x2e\x36\x33\x31\x6c\x35\x38\
+\x2e\x30\x34\x32\x2c\x31\x38\x39\x2e\x36\x32\x35\x63\x30\x2e\x33\
+\x30\x33\x2c\x31\x2e\x30\x34\x36\x2c\x30\x2e\x36\x32\x34\x2c\x32\
+\x2e\x30\x38\x35\x2c\x30\x2e\x39\x35\x33\x2c\x33\x2e\x31\x31\x38\
+\x6c\x30\x2e\x31\x32\x31\x2c\x30\x2e\x33\x39\x0d\x0a\x09\x63\x30\
+\x2e\x30\x31\x31\x2c\x30\x2e\x30\x33\x31\x2c\x30\x2e\x30\x32\x35\
+\x2c\x30\x2e\x30\x35\x38\x2c\x30\x2e\x30\x33\x35\x2c\x30\x2e\x30\
+\x38\x38\x43\x31\x32\x36\x2e\x30\x37\x39\x2c\x34\x34\x34\x2e\x32\
+\x33\x33\x2c\x31\x37\x32\x2e\x35\x37\x2c\x34\x38\x30\x2c\x32\x32\
+\x37\x2e\x34\x32\x37\x2c\x34\x38\x30\x63\x33\x35\x2e\x31\x31\x36\
+\x2c\x30\x2c\x37\x31\x2e\x35\x39\x31\x2d\x31\x32\x2e\x33\x37\x38\
+\x2c\x39\x39\x2e\x33\x35\x37\x2d\x33\x33\x2e\x36\x37\x32\x0d\x0a\
+\x09\x63\x30\x2e\x30\x30\x31\x2c\x30\x2c\x30\x2e\x30\x30\x33\x2d\
+\x30\x2e\x30\x30\x32\x2c\x30\x2e\x30\x30\x33\x2d\x30\x2e\x30\x30\
+\x32\x63\x32\x39\x2e\x39\x39\x2d\x31\x38\x2e\x30\x35\x31\x2c\x31\
+\x32\x36\x2e\x30\x37\x31\x2d\x31\x32\x31\x2e\x33\x34\x37\x2c\x31\
+\x32\x36\x2e\x30\x37\x31\x2d\x31\x32\x31\x2e\x33\x34\x37\x43\x34\
+\x36\x37\x2e\x34\x34\x35\x2c\x33\x31\x30\x2e\x34\x30\x32\x2c\x34\
+\x36\x35\x2e\x32\x36\x36\x2c\x32\x38\x38\x2e\x30\x38\x2c\x34\x35\
+\x30\x2e\x36\x37\x39\x2c\x32\x37\x33\x2e\x35\x7a\x22\x2f\x3e\x0d\
+\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
 \x00\x00\x05\xd4\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
@@ -379,6 +880,116 @@
 \x2d\x77\x69\x64\x74\x68\x3d\x27\x33\x2e\x35\x31\x33\x31\x32\x27\
 \x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\
 \x76\x67\x3e\
+\x00\x00\x02\xa1\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x53\x61\x76\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\
+\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\
+\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\
+\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\
+\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x35\x31\x32\x70\x78\x22\x20\
+\x79\x3d\x22\x35\x31\x32\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\
+\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\
+\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\
+\x32\x20\x35\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\
+\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\
+\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\
+\x69\x78\x28\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\
+\x29\x27\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\
+\x35\x2e\x31\x37\x33\x2c\x32\x48\x34\x43\x32\x2e\x38\x39\x39\x2c\
+\x32\x2c\x32\x2c\x32\x2e\x39\x2c\x32\x2c\x34\x76\x31\x32\x63\x30\
+\x2c\x31\x2e\x31\x2c\x30\x2e\x38\x39\x39\x2c\x32\x2c\x32\x2c\x32\
+\x68\x31\x32\x63\x31\x2e\x31\x30\x31\x2c\x30\x2c\x32\x2d\x30\x2e\
+\x39\x2c\x32\x2d\x32\x56\x35\x2e\x31\x32\x37\x4c\x31\x35\x2e\x31\
+\x37\x33\x2c\x32\x7a\x20\x4d\x31\x34\x2c\x38\x63\x30\x2c\x30\x2e\
+\x35\x34\x39\x2d\x30\x2e\x34\x35\x2c\x31\x2d\x31\x2c\x31\x48\x37\
+\x0d\x0a\x09\x43\x36\x2e\x34\x35\x2c\x39\x2c\x36\x2c\x38\x2e\x35\
+\x34\x39\x2c\x36\x2c\x38\x56\x33\x68\x38\x56\x38\x7a\x20\x4d\x31\
+\x33\x2c\x34\x68\x2d\x32\x76\x34\x68\x32\x56\x34\x7a\x22\x2f\x3e\
+\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\
+\x00\x00\x03\xe6\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
+\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
+\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\
+\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
+\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
+\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
+\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
+\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
+\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
+\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
+\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
+\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
+\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
+\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
+\x3d\x22\x43\x68\x65\x76\x72\x6f\x6e\x5f\x63\x69\x72\x63\x6c\x65\
+\x64\x5f\x72\x69\x67\x68\x74\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x22\x0d\x0a\x09\x20\x78\x3d\x22\x30\x70\x78\
+\x22\x20\x79\x3d\x22\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\
+\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\
+\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\
+\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\
+\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\
+\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\x72\
+\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\
+\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\
+\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x31\x2c\x31\
+\x30\x4c\x38\x2e\x36\x39\x38\x2c\x37\x2e\x34\x39\x34\x63\x2d\x30\
+\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x38\x2d\x30\x2e\x31\x39\x36\
+\x2d\x30\x2e\x35\x31\x39\x2c\x30\x2d\x30\x2e\x37\x31\x38\x63\x30\
+\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\x35\x31\x35\
+\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\x37\x31\x2c\x30\x6c\x32\x2e\
+\x38\x30\x37\x2c\x32\x2e\x38\x36\x34\x0d\x0a\x09\x63\x30\x2e\x31\
+\x39\x36\x2c\x30\x2e\x31\x39\x39\x2c\x30\x2e\x31\x39\x36\x2c\x30\
+\x2e\x35\x32\x2c\x30\x2c\x30\x2e\x37\x31\x37\x6c\x2d\x32\x2e\x38\
+\x30\x37\x2c\x32\x2e\x38\x36\x34\x63\x2d\x30\x2e\x31\x39\x35\x2c\
+\x30\x2e\x31\x39\x39\x2d\x30\x2e\x35\x31\x34\x2c\x30\x2e\x31\x39\
+\x38\x2d\x30\x2e\x37\x31\x2c\x30\x63\x2d\x30\x2e\x31\x39\x36\x2d\
+\x30\x2e\x31\x39\x37\x2d\x30\x2e\x31\x39\x36\x2d\x30\x2e\x35\x31\
+\x38\x2c\x30\x2d\x30\x2e\x37\x31\x37\x4c\x31\x31\x2c\x31\x30\x7a\
+\x20\x4d\x31\x30\x2c\x30\x2e\x34\x0d\x0a\x09\x63\x35\x2e\x33\x30\
+\x32\x2c\x30\x2c\x39\x2e\x36\x2c\x34\x2e\x32\x39\x38\x2c\x39\x2e\
+\x36\x2c\x39\x2e\x36\x63\x30\x2c\x35\x2e\x33\x30\x33\x2d\x34\x2e\
+\x32\x39\x38\x2c\x39\x2e\x36\x2d\x39\x2e\x36\x2c\x39\x2e\x36\x53\
+\x30\x2e\x34\x2c\x31\x35\x2e\x33\x30\x33\x2c\x30\x2e\x34\x2c\x31\
+\x30\x43\x30\x2e\x34\x2c\x34\x2e\x36\x39\x38\x2c\x34\x2e\x36\x39\
+\x38\x2c\x30\x2e\x34\x2c\x31\x30\x2c\x30\x2e\x34\x7a\x20\x4d\x31\
+\x30\x2c\x31\x38\x2e\x33\x35\x34\x0d\x0a\x09\x63\x34\x2e\x36\x31\
+\x33\x2c\x30\x2c\x38\x2e\x33\x35\x34\x2d\x33\x2e\x37\x34\x2c\x38\
+\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x30\x2d\x34\x2e\x36\
+\x31\x34\x2d\x33\x2e\x37\x34\x31\x2d\x38\x2e\x33\x35\x34\x2d\x38\
+\x2e\x33\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x2d\x34\x2e\x36\x31\
+\x35\x2c\x30\x2d\x38\x2e\x33\x35\x34\x2c\x33\x2e\x37\x34\x2d\x38\
+\x2e\x33\x35\x34\x2c\x38\x2e\x33\x35\x34\x0d\x0a\x09\x43\x31\x2e\
+\x36\x34\x35\x2c\x31\x34\x2e\x36\x31\x34\x2c\x35\x2e\x33\x38\x35\
+\x2c\x31\x38\x2e\x33\x35\x34\x2c\x31\x30\x2c\x31\x38\x2e\x33\x35\
+\x34\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\
+\x76\x67\x3e\x0d\x0a\
 \x00\x00\x03\x4c\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -434,7 +1045,7 @@
 \x2c\x34\x32\x32\x2e\x34\x2c\x32\x35\x36\x2c\x34\x32\x32\x2e\x34\
 \x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\
 \x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x07\x80\
+\x00\x00\x03\xeb\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
@@ -461,108 +1072,51 @@
 \x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
 \x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
 \x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
-\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x39\x33\x2e\x34\x36\
-\x2c\x32\x34\x39\x2e\x30\x35\x36\x63\x33\x2e\x37\x32\x33\x2d\x30\
-\x2e\x36\x37\x2c\x37\x2e\x35\x38\x39\x2d\x31\x2e\x30\x34\x31\x2c\
-\x31\x31\x2e\x35\x38\x36\x2d\x31\x2e\x30\x34\x31\x4c\x32\x30\x31\
-\x2e\x39\x32\x34\x2c\x32\x34\x38\x68\x31\x30\x33\x2e\x38\x32\x33\
-\x63\x34\x2e\x35\x30\x33\x2c\x30\x2c\x38\x2e\x38\x30\x36\x2d\x30\
-\x2e\x36\x31\x37\x2c\x31\x32\x2e\x39\x30\x38\x2d\x31\x2e\x37\x35\
-\x34\x0d\x0a\x09\x09\x63\x31\x39\x2e\x33\x37\x2d\x35\x2e\x33\x36\
-\x33\x2c\x33\x33\x2e\x33\x34\x35\x2d\x32\x32\x2e\x35\x33\x37\x2c\
-\x33\x33\x2e\x33\x34\x35\x2d\x34\x33\x2e\x36\x36\x33\x76\x2d\x33\
-\x30\x2e\x38\x32\x32\x76\x2d\x35\x36\x2e\x34\x30\x32\x63\x30\x2d\
-\x32\x34\x2e\x38\x33\x32\x2d\x32\x31\x2e\x31\x35\x2d\x34\x33\x2e\
-\x34\x38\x34\x2d\x34\x36\x2e\x32\x38\x39\x2d\x34\x37\x2e\x36\x30\
-\x36\x0d\x0a\x09\x09\x63\x2d\x31\x35\x2e\x39\x33\x31\x2d\x32\x2e\
-\x36\x32\x34\x2d\x33\x39\x2e\x32\x35\x38\x2d\x33\x2e\x38\x32\x37\
-\x2d\x35\x35\x2e\x30\x38\x39\x2d\x33\x2e\x37\x34\x39\x63\x2d\x31\
-\x35\x2e\x38\x32\x39\x2c\x30\x2e\x30\x38\x36\x2d\x33\x30\x2e\x39\
-\x38\x31\x2c\x31\x2e\x34\x30\x34\x2d\x34\x34\x2e\x32\x37\x37\x2c\
-\x33\x2e\x37\x34\x39\x43\x31\x36\x37\x2e\x31\x34\x33\x2c\x37\x34\
-\x2e\x35\x37\x36\x2c\x31\x36\x30\x2c\x38\x38\x2e\x39\x32\x38\x2c\
-\x31\x36\x30\x2c\x31\x31\x35\x2e\x33\x35\x39\x56\x31\x34\x34\x68\
-\x39\x36\x0d\x0a\x09\x09\x76\x31\x36\x48\x31\x32\x38\x2e\x38\x32\
-\x63\x2d\x33\x35\x2e\x36\x32\x38\x2c\x30\x2d\x36\x34\x2e\x35\x33\
-\x38\x2c\x34\x32\x2e\x35\x37\x31\x2d\x36\x34\x2e\x38\x31\x33\x2c\
-\x39\x35\x2e\x32\x34\x32\x43\x36\x34\x2e\x30\x30\x35\x2c\x32\x35\
-\x35\x2e\x34\x39\x35\x2c\x36\x34\x2c\x32\x35\x35\x2e\x37\x34\x37\
-\x2c\x36\x34\x2c\x32\x35\x36\x63\x30\x2c\x39\x2e\x35\x32\x33\x2c\
-\x30\x2e\x39\x34\x2c\x31\x38\x2e\x37\x32\x2c\x32\x2e\x36\x38\x35\
-\x2c\x32\x37\x2e\x34\x30\x34\x0d\x0a\x09\x09\x43\x37\x34\x2e\x36\
-\x34\x38\x2c\x33\x32\x33\x2e\x30\x37\x2c\x39\x39\x2e\x34\x35\x31\
-\x2c\x33\x35\x32\x2c\x31\x32\x38\x2e\x38\x32\x2c\x33\x35\x32\x48\
-\x31\x34\x34\x76\x2d\x32\x2e\x36\x36\x32\x76\x2d\x34\x33\x2e\x32\
-\x37\x33\x43\x31\x34\x34\x2c\x32\x37\x39\x2e\x32\x33\x38\x2c\x31\
-\x36\x34\x2e\x31\x34\x36\x2c\x32\x35\x34\x2e\x33\x33\x32\x2c\x31\
-\x39\x33\x2e\x34\x36\x2c\x32\x34\x39\x2e\x30\x35\x36\x7a\x20\x4d\
-\x32\x30\x33\x2e\x36\x35\x36\x2c\x31\x32\x37\x2e\x30\x30\x32\x0d\
-\x0a\x09\x09\x63\x2d\x39\x2e\x35\x39\x32\x2c\x30\x2d\x31\x37\x2e\
-\x33\x38\x34\x2d\x37\x2e\x37\x38\x35\x2d\x31\x37\x2e\x33\x38\x34\
-\x2d\x31\x37\x2e\x34\x30\x33\x63\x30\x2d\x39\x2e\x36\x36\x34\x2c\
-\x37\x2e\x37\x37\x34\x2d\x31\x37\x2e\x35\x32\x2c\x31\x37\x2e\x33\
-\x38\x34\x2d\x31\x37\x2e\x35\x32\x63\x39\x2e\x35\x37\x34\x2c\x30\
-\x2c\x31\x37\x2e\x33\x39\x39\x2c\x37\x2e\x38\x35\x35\x2c\x31\x37\
-\x2e\x33\x39\x39\x2c\x31\x37\x2e\x35\x32\x0d\x0a\x09\x09\x43\x32\
-\x32\x31\x2e\x30\x35\x36\x2c\x31\x31\x39\x2e\x32\x31\x37\x2c\x32\
-\x31\x33\x2e\x32\x34\x36\x2c\x31\x32\x37\x2e\x30\x30\x32\x2c\x32\
-\x30\x33\x2e\x36\x35\x36\x2c\x31\x32\x37\x2e\x30\x30\x32\x7a\x22\
-\x2f\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\
-\x34\x33\x2e\x39\x35\x31\x2c\x32\x32\x32\x2e\x35\x34\x33\x43\x34\
-\x33\x34\x2e\x37\x38\x2c\x31\x38\x36\x2e\x30\x32\x31\x2c\x34\x31\
-\x31\x2e\x30\x33\x33\x2c\x31\x36\x30\x2c\x33\x38\x33\x2e\x31\x38\
-\x2c\x31\x36\x30\x48\x33\x36\x38\x76\x32\x2e\x36\x32\x36\x76\x33\
-\x38\x2e\x30\x34\x36\x63\x30\x2c\x33\x33\x2e\x39\x31\x35\x2d\x32\
-\x32\x2e\x32\x38\x36\x2c\x35\x38\x2e\x34\x37\x34\x2d\x34\x39\x2e\
-\x34\x38\x39\x2c\x36\x32\x2e\x36\x38\x31\x0d\x0a\x09\x09\x63\x2d\
-\x32\x2e\x37\x33\x37\x2c\x30\x2e\x34\x32\x34\x2d\x35\x2e\x34\x38\
-\x33\x2c\x30\x2e\x36\x34\x36\x2d\x38\x2e\x33\x30\x31\x2c\x30\x2e\
-\x36\x34\x36\x48\x32\x30\x36\x2e\x33\x35\x31\x63\x2d\x34\x2e\x35\
-\x31\x38\x2c\x30\x2d\x38\x2e\x39\x30\x34\x2c\x30\x2e\x35\x38\x34\
-\x2d\x31\x33\x2e\x30\x34\x39\x2c\x31\x2e\x36\x37\x32\x43\x31\x37\
-\x34\x2e\x31\x38\x2c\x32\x37\x30\x2e\x36\x38\x39\x2c\x31\x36\x30\
-\x2c\x32\x38\x36\x2e\x36\x2c\x31\x36\x30\x2c\x33\x30\x37\x2e\x32\
-\x33\x36\x76\x33\x32\x2e\x39\x32\x32\x0d\x0a\x09\x09\x76\x35\x34\
-\x2e\x33\x30\x35\x63\x30\x2c\x32\x34\x2e\x38\x33\x32\x2c\x32\x34\
-\x2e\x39\x37\x37\x2c\x33\x39\x2e\x34\x32\x36\x2c\x34\x39\x2e\x34\
-\x38\x31\x2c\x34\x36\x2e\x35\x35\x31\x63\x32\x39\x2e\x33\x32\x37\
-\x2c\x38\x2e\x35\x33\x31\x2c\x36\x31\x2e\x32\x36\x37\x2c\x31\x30\
-\x2e\x30\x36\x38\x2c\x39\x36\x2e\x33\x36\x36\x2c\x30\x43\x33\x32\
-\x39\x2e\x31\x35\x2c\x34\x33\x34\x2e\x33\x35\x34\x2c\x33\x35\x32\
-\x2c\x34\x32\x30\x2e\x38\x39\x33\x2c\x33\x35\x32\x2c\x33\x39\x34\
-\x2e\x34\x36\x33\x56\x33\x36\x38\x0d\x0a\x09\x09\x68\x2d\x39\x36\
-\x76\x2d\x31\x36\x68\x31\x32\x37\x2e\x31\x38\x63\x32\x35\x2e\x32\
-\x34\x2c\x30\x2c\x34\x37\x2e\x31\x30\x37\x2d\x32\x31\x2e\x33\x36\
-\x35\x2c\x35\x37\x2e\x38\x31\x34\x2d\x35\x32\x2e\x35\x34\x39\x43\
-\x34\x34\x35\x2e\x34\x37\x34\x2c\x32\x38\x36\x2e\x34\x30\x34\x2c\
-\x34\x34\x38\x2c\x32\x37\x31\x2e\x36\x34\x31\x2c\x34\x34\x38\x2c\
-\x32\x35\x36\x0d\x0a\x09\x09\x43\x34\x34\x38\x2c\x32\x34\x34\x2e\
-\x32\x33\x32\x2c\x34\x34\x36\x2e\x35\x36\x37\x2c\x32\x33\x32\x2e\
-\x39\x36\x32\x2c\x34\x34\x33\x2e\x39\x35\x31\x2c\x32\x32\x32\x2e\
-\x35\x34\x33\x7a\x20\x4d\x33\x30\x37\x2e\x38\x36\x37\x2c\x33\x38\
-\x32\x2e\x38\x32\x63\x39\x2e\x35\x39\x2c\x30\x2c\x31\x37\x2e\x33\
-\x38\x31\x2c\x37\x2e\x37\x38\x35\x2c\x31\x37\x2e\x33\x38\x31\x2c\
-\x31\x37\x2e\x34\x0d\x0a\x09\x09\x63\x30\x2c\x39\x2e\x36\x35\x2d\
-\x37\x2e\x37\x39\x31\x2c\x31\x37\x2e\x35\x32\x31\x2d\x31\x37\x2e\
-\x33\x38\x31\x2c\x31\x37\x2e\x35\x32\x31\x63\x2d\x39\x2e\x35\x37\
-\x37\x2c\x30\x2d\x31\x37\x2e\x33\x39\x39\x2d\x37\x2e\x38\x37\x31\
-\x2d\x31\x37\x2e\x33\x39\x39\x2d\x31\x37\x2e\x35\x32\x31\x43\x32\
-\x39\x30\x2e\x34\x36\x38\x2c\x33\x39\x30\x2e\x35\x39\x2c\x32\x39\
-\x38\x2e\x32\x37\x34\x2c\x33\x38\x32\x2e\x38\x32\x2c\x33\x30\x37\
-\x2e\x38\x36\x37\x2c\x33\x38\x32\x2e\x38\x32\x7a\x22\x2f\x3e\x0d\
-\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\xc4\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
+\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
+\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
+\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
+\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
+\x0a\x3c\x67\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\
+\x4d\x32\x35\x36\x2c\x31\x32\x38\x63\x2d\x38\x31\x2e\x39\x2c\x30\
+\x2d\x31\x34\x35\x2e\x37\x2c\x34\x38\x2e\x38\x2d\x32\x32\x34\x2c\
+\x31\x32\x38\x63\x36\x37\x2e\x34\x2c\x36\x37\x2e\x37\x2c\x31\x32\
+\x34\x2c\x31\x32\x38\x2c\x32\x32\x34\x2c\x31\x32\x38\x63\x39\x39\
+\x2e\x39\x2c\x30\x2c\x31\x37\x33\x2e\x34\x2d\x37\x36\x2e\x34\x2c\
+\x32\x32\x34\x2d\x31\x32\x36\x2e\x36\x0d\x0a\x09\x09\x43\x34\x32\
+\x38\x2e\x32\x2c\x31\x39\x38\x2e\x36\x2c\x33\x35\x34\x2e\x38\x2c\
+\x31\x32\x38\x2c\x32\x35\x36\x2c\x31\x32\x38\x7a\x20\x4d\x32\x35\
+\x36\x2c\x33\x34\x37\x2e\x33\x63\x2d\x34\x39\x2e\x34\x2c\x30\x2d\
+\x38\x39\x2e\x36\x2d\x34\x31\x2d\x38\x39\x2e\x36\x2d\x39\x31\x2e\
+\x33\x63\x30\x2d\x35\x30\x2e\x34\x2c\x34\x30\x2e\x32\x2d\x39\x31\
+\x2e\x33\x2c\x38\x39\x2e\x36\x2d\x39\x31\x2e\x33\x73\x38\x39\x2e\
+\x36\x2c\x34\x31\x2c\x38\x39\x2e\x36\x2c\x39\x31\x2e\x33\x0d\x0a\
+\x09\x09\x43\x33\x34\x35\x2e\x36\x2c\x33\x30\x36\x2e\x34\x2c\x33\
+\x30\x35\x2e\x34\x2c\x33\x34\x37\x2e\x33\x2c\x32\x35\x36\x2c\x33\
+\x34\x37\x2e\x33\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x67\x3e\x0d\x0a\
+\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\
+\x32\x32\x34\x63\x30\x2d\x37\x2e\x39\x2c\x32\x2e\x39\x2d\x31\x35\
+\x2e\x31\x2c\x37\x2e\x36\x2d\x32\x30\x2e\x37\x63\x2d\x32\x2e\x35\
+\x2d\x30\x2e\x34\x2d\x35\x2d\x30\x2e\x36\x2d\x37\x2e\x36\x2d\x30\
+\x2e\x36\x63\x2d\x32\x38\x2e\x38\x2c\x30\x2d\x35\x32\x2e\x33\x2c\
+\x32\x33\x2e\x39\x2d\x35\x32\x2e\x33\x2c\x35\x33\x2e\x33\x63\x30\
+\x2c\x32\x39\x2e\x34\x2c\x32\x33\x2e\x35\x2c\x35\x33\x2e\x33\x2c\
+\x35\x32\x2e\x33\x2c\x35\x33\x2e\x33\x0d\x0a\x09\x09\x09\x73\x35\
+\x32\x2e\x33\x2d\x32\x33\x2e\x39\x2c\x35\x32\x2e\x33\x2d\x35\x33\
+\x2e\x33\x63\x30\x2d\x32\x2e\x33\x2d\x30\x2e\x32\x2d\x34\x2e\x36\
+\x2d\x30\x2e\x34\x2d\x36\x2e\x39\x63\x2d\x35\x2e\x35\x2c\x34\x2e\
+\x33\x2d\x31\x32\x2e\x33\x2c\x36\x2e\x39\x2d\x31\x39\x2e\x38\x2c\
+\x36\x2e\x39\x43\x32\x37\x30\x2e\x33\x2c\x32\x35\x36\x2c\x32\x35\
+\x36\x2c\x32\x34\x31\x2e\x37\x2c\x32\x35\x36\x2c\x32\x32\x34\x7a\
+\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\
+\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x02\x79\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
 \x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
 \x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
 \x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
 \x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
@@ -574,128 +1128,88 @@
 \x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
 \x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
 \x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4d\x61\x67\x6e\x69\x66\x79\x69\x6e\x67\x5f\x67\x6c\x61\
-\x73\x73\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
-\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6c\x69\
-\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\
-\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\x6c\x69\x6e\x6b\
-\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x79\x3d\x22\
-\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\
-\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\x6e\x61\x62\x6c\
-\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\x22\x6e\x65\
-\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x78\
-\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\
-\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\x34\x20\x30\x20\
-\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x0d\x0a\x3c\x70\x61\
-\x74\x68\x20\x64\x3d\x22\x4d\x31\x37\x2e\x35\x34\x35\x2c\x31\x35\
-\x2e\x34\x36\x37\x6c\x2d\x33\x2e\x37\x37\x39\x2d\x33\x2e\x37\x37\
-\x39\x63\x30\x2e\x35\x37\x2d\x30\x2e\x39\x33\x35\x2c\x30\x2e\x38\
-\x39\x38\x2d\x32\x2e\x30\x33\x35\x2c\x30\x2e\x38\x39\x38\x2d\x33\
-\x2e\x32\x31\x63\x30\x2d\x33\x2e\x34\x31\x37\x2d\x32\x2e\x39\x36\
-\x31\x2d\x36\x2e\x33\x37\x37\x2d\x36\x2e\x33\x37\x38\x2d\x36\x2e\
-\x33\x37\x37\x0d\x0a\x09\x43\x34\x2e\x38\x36\x39\x2c\x32\x2e\x31\
-\x2c\x32\x2e\x31\x2c\x34\x2e\x38\x37\x2c\x32\x2e\x31\x2c\x38\x2e\
-\x32\x38\x37\x63\x30\x2c\x33\x2e\x34\x31\x36\x2c\x32\x2e\x39\x36\
-\x31\x2c\x36\x2e\x33\x37\x37\x2c\x36\x2e\x33\x37\x37\x2c\x36\x2e\
-\x33\x37\x37\x63\x31\x2e\x31\x33\x37\x2c\x30\x2c\x32\x2e\x32\x2d\
-\x30\x2e\x33\x30\x39\x2c\x33\x2e\x31\x31\x35\x2d\x30\x2e\x38\x34\
-\x34\x6c\x33\x2e\x37\x39\x39\x2c\x33\x2e\x38\x30\x31\x0d\x0a\x09\
-\x63\x30\x2e\x33\x37\x32\x2c\x30\x2e\x33\x37\x31\x2c\x30\x2e\x39\
-\x37\x35\x2c\x30\x2e\x33\x37\x31\x2c\x31\x2e\x33\x34\x36\x2c\x30\
-\x6c\x30\x2e\x39\x34\x33\x2d\x30\x2e\x39\x34\x33\x43\x31\x38\x2e\
-\x30\x35\x31\x2c\x31\x36\x2e\x33\x30\x37\x2c\x31\x37\x2e\x39\x31\
-\x36\x2c\x31\x35\x2e\x38\x33\x38\x2c\x31\x37\x2e\x35\x34\x35\x2c\
-\x31\x35\x2e\x34\x36\x37\x7a\x20\x4d\x34\x2e\x30\x30\x34\x2c\x38\
-\x2e\x32\x38\x37\x0d\x0a\x09\x63\x30\x2d\x32\x2e\x33\x36\x36\x2c\
-\x31\x2e\x39\x31\x37\x2d\x34\x2e\x32\x38\x33\x2c\x34\x2e\x32\x38\
-\x32\x2d\x34\x2e\x32\x38\x33\x63\x32\x2e\x33\x36\x36\x2c\x30\x2c\
-\x34\x2e\x34\x37\x34\x2c\x32\x2e\x31\x30\x37\x2c\x34\x2e\x34\x37\
-\x34\x2c\x34\x2e\x34\x37\x34\x63\x30\x2c\x32\x2e\x33\x36\x35\x2d\
-\x31\x2e\x39\x31\x38\x2c\x34\x2e\x32\x38\x33\x2d\x34\x2e\x32\x38\
-\x33\x2c\x34\x2e\x32\x38\x33\x0d\x0a\x09\x43\x36\x2e\x31\x31\x31\
-\x2c\x31\x32\x2e\x37\x36\x2c\x34\x2e\x30\x30\x34\x2c\x31\x30\x2e\
-\x36\x35\x32\x2c\x34\x2e\x30\x30\x34\x2c\x38\x2e\x32\x38\x37\x7a\
-\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\
-\x3e\x0d\x0a\
-\x00\x00\x04\xaa\
+\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
+\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
+\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
+\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
+\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
+\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
+\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
+\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
+\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x5f\x31\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
+\x0d\x0a\x09\x09\x3c\x67\x3e\x0d\x0a\x09\x09\x09\x3c\x70\x6f\x6c\
+\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x31\x38\x36\
+\x2e\x33\x30\x31\x2c\x33\x33\x39\x2e\x38\x39\x33\x20\x39\x36\x2c\
+\x32\x34\x39\x2e\x34\x36\x31\x20\x36\x34\x2c\x32\x37\x39\x2e\x39\
+\x36\x38\x20\x31\x38\x36\x2e\x33\x30\x31\x2c\x34\x30\x32\x20\x34\
+\x34\x38\x2c\x31\x34\x30\x2e\x35\x30\x36\x20\x34\x31\x36\x2c\x31\
+\x31\x30\x20\x09\x09\x09\x22\x2f\x3e\x0d\x0a\x09\x09\x3c\x2f\x67\
+\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\
+\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x03\x7c\
 \x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x43\x6f\x64\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\
-\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\
-\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\
-\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\
-\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x32\x34\x70\x78\x22\x20\x79\
-\x3d\x22\x32\x34\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\x77\x42\
-\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\
-\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\
-\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\
-\x35\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\
-\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\
-\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\
-\x28\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\
-\x3e\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x35\x2e\x37\x31\x39\
-\x2c\x31\x34\x2e\x37\x35\x63\x2d\x30\x2e\x32\x33\x36\x2c\x30\x2d\
-\x30\x2e\x34\x37\x34\x2d\x30\x2e\x30\x38\x33\x2d\x30\x2e\x36\x36\
-\x34\x2d\x30\x2e\x32\x35\x32\x4c\x2d\x30\x2e\x30\x30\x35\x2c\x31\
-\x30\x6c\x35\x2e\x33\x34\x31\x2d\x34\x2e\x37\x34\x38\x43\x35\x2e\
-\x37\x34\x38\x2c\x34\x2e\x38\x38\x37\x2c\x36\x2e\x33\x38\x2c\x34\
-\x2e\x39\x32\x32\x2c\x36\x2e\x37\x34\x37\x2c\x35\x2e\x33\x33\x35\
-\x0d\x0a\x09\x63\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x31\x33\x2c\
-\x30\x2e\x33\x33\x2c\x31\x2e\x30\x34\x35\x2d\x30\x2e\x30\x38\x33\
-\x2c\x31\x2e\x34\x31\x32\x4c\x33\x2e\x30\x30\x35\x2c\x31\x30\x6c\
-\x33\x2e\x33\x37\x38\x2c\x33\x2e\x30\x30\x32\x63\x30\x2e\x34\x31\
-\x33\x2c\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x35\x2c\x30\x2e\x39\
-\x39\x39\x2c\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\x31\x32\x0d\x0a\
-\x09\x43\x36\x2e\x32\x36\x39\x2c\x31\x34\x2e\x36\x33\x37\x2c\x35\
-\x2e\x39\x39\x34\x2c\x31\x34\x2e\x37\x35\x2c\x35\x2e\x37\x31\x39\
-\x2c\x31\x34\x2e\x37\x35\x7a\x20\x4d\x31\x34\x2e\x36\x36\x34\x2c\
-\x31\x34\x2e\x37\x34\x38\x4c\x32\x30\x2e\x30\x30\x35\x2c\x31\x30\
-\x6c\x2d\x35\x2e\x30\x36\x2d\x34\x2e\x34\x39\x38\x63\x2d\x30\x2e\
-\x34\x31\x33\x2d\x30\x2e\x33\x36\x37\x2d\x31\x2e\x30\x34\x35\x2d\
-\x30\x2e\x33\x33\x2d\x31\x2e\x34\x31\x31\x2c\x30\x2e\x30\x38\x33\
-\x0d\x0a\x09\x63\x2d\x30\x2e\x33\x36\x37\x2c\x30\x2e\x34\x31\x33\
-\x2d\x30\x2e\x33\x33\x2c\x31\x2e\x30\x34\x35\x2c\x30\x2e\x30\x38\
-\x33\x2c\x31\x2e\x34\x31\x32\x4c\x31\x36\x2e\x39\x39\x35\x2c\x31\
-\x30\x6c\x2d\x33\x2e\x36\x35\x39\x2c\x33\x2e\x32\x35\x32\x63\x2d\
-\x30\x2e\x34\x31\x33\x2c\x30\x2e\x33\x36\x37\x2d\x30\x2e\x34\x35\
-\x2c\x30\x2e\x39\x39\x39\x2d\x30\x2e\x30\x38\x33\x2c\x31\x2e\x34\
-\x31\x32\x43\x31\x33\x2e\x34\x35\x2c\x31\x34\x2e\x38\x38\x37\x2c\
-\x31\x33\x2e\x37\x32\x35\x2c\x31\x35\x2c\x31\x34\x2c\x31\x35\x0d\
-\x0a\x09\x43\x31\x34\x2e\x32\x33\x36\x2c\x31\x35\x2c\x31\x34\x2e\
-\x34\x37\x34\x2c\x31\x34\x2e\x39\x31\x37\x2c\x31\x34\x2e\x36\x36\
-\x34\x2c\x31\x34\x2e\x37\x34\x38\x7a\x20\x4d\x39\x2e\x39\x38\x36\
-\x2c\x31\x36\x2e\x31\x36\x35\x6c\x32\x2d\x31\x32\x63\x30\x2e\x30\
-\x39\x31\x2d\x30\x2e\x35\x34\x35\x2d\x30\x2e\x32\x37\x37\x2d\x31\
-\x2e\x30\x36\x2d\x30\x2e\x38\x32\x32\x2d\x31\x2e\x31\x35\x31\x0d\
-\x0a\x09\x63\x2d\x30\x2e\x35\x34\x37\x2d\x30\x2e\x30\x39\x32\x2d\
-\x31\x2e\x30\x36\x31\x2c\x30\x2e\x32\x37\x37\x2d\x31\x2e\x31\x35\
-\x2c\x30\x2e\x38\x32\x32\x6c\x2d\x32\x2c\x31\x32\x63\x2d\x30\x2e\
-\x30\x39\x31\x2c\x30\x2e\x35\x34\x35\x2c\x30\x2e\x32\x37\x37\x2c\
-\x31\x2e\x30\x36\x2c\x30\x2e\x38\x32\x32\x2c\x31\x2e\x31\x35\x31\
-\x43\x38\x2e\x38\x39\x32\x2c\x31\x36\x2e\x39\x39\x36\x2c\x38\x2e\
-\x39\x34\x36\x2c\x31\x37\x2c\x39\x2e\x30\x30\x31\x2c\x31\x37\x0d\
-\x0a\x09\x43\x39\x2e\x34\x38\x31\x2c\x31\x37\x2c\x39\x2e\x39\x30\
-\x35\x2c\x31\x36\x2e\x36\x35\x33\x2c\x39\x2e\x39\x38\x36\x2c\x31\
-\x36\x2e\x31\x36\x35\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\
-\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
+\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
+\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
+\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
+\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
+\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
+\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
+\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
+\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
+\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
+\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
+\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
+\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
+\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\
+\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x32\
+\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\x36\
+\x32\x2e\x32\x33\x32\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\
+\x36\x32\x2e\x32\x33\x32\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\x35\
+\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\
+\x35\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\
+\x35\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\
+\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\
+\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\
+\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\
+\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\
+\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\
+\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\
+\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\
+\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\
+\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\
+\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\
+\x36\x34\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\
+\x35\x38\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\
+\x20\x34\x37\x2e\x31\x37\x36\x32\x20\x2d\x33\x32\x2e\x31\x32\x43\
+\x20\x34\x37\x2e\x31\x37\x36\x32\x20\x2d\x34\x30\x2e\x34\x33\x35\
+\x33\x20\x34\x30\x2e\x34\x33\x35\x33\x20\x2d\x34\x37\x2e\x31\x37\
+\x36\x32\x20\x33\x32\x2e\x31\x32\x20\x2d\x34\x37\x2e\x31\x37\x36\
+\x32\x43\x20\x32\x33\x2e\x38\x30\x34\x37\x20\x2d\x34\x37\x2e\x31\
+\x37\x36\x32\x20\x31\x37\x2e\x30\x36\x33\x37\x20\x2d\x34\x30\x2e\
+\x34\x33\x35\x33\x20\x31\x37\x2e\x30\x36\x33\x37\x20\x2d\x33\x32\
+\x2e\x31\x32\x43\x20\x31\x37\x2e\x30\x36\x33\x37\x20\x2d\x32\x33\
+\x2e\x38\x30\x34\x37\x20\x32\x33\x2e\x38\x30\x34\x37\x20\x2d\x31\
+\x37\x2e\x30\x36\x33\x37\x20\x33\x32\x2e\x31\x32\x20\x2d\x31\x37\
+\x2e\x30\x36\x33\x37\x43\x20\x34\x30\x2e\x34\x33\x35\x33\x20\x2d\
+\x31\x37\x2e\x30\x36\x33\x37\x20\x34\x37\x2e\x31\x37\x36\x32\x20\
+\x2d\x32\x33\x2e\x38\x30\x34\x37\x20\x34\x37\x2e\x31\x37\x36\x32\
+\x20\x2d\x33\x32\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\
+\x23\x30\x30\x30\x30\x30\x30\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
+\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
 \x00\x00\x03\x26\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -794,86 +1308,6 @@
 \x48\x39\x36\x76\x33\x32\x68\x33\x32\x30\x56\x39\x36\x7a\x22\x2f\
 \x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
 \x0a\
-\x00\x00\x04\xd5\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
-\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
-\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
-\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
-\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
-\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
-\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
-\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
-\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
-\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
-\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
-\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
-\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
-\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
-\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
-\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x43\x20\x32\
-\x2e\x32\x38\x39\x32\x32\x20\x2d\x33\x39\x2e\x33\x31\x31\x33\x20\
-\x36\x2e\x33\x36\x37\x30\x32\x20\x2d\x34\x36\x2e\x32\x33\x38\x36\
-\x20\x31\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\
-\x39\x43\x20\x32\x39\x2e\x36\x36\x38\x37\x20\x2d\x36\x37\x2e\x35\
-\x35\x36\x38\x20\x35\x35\x2e\x32\x32\x39\x32\x20\x2d\x36\x30\x2e\
-\x36\x34\x32\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\x2e\
-\x35\x30\x32\x32\x43\x20\x35\x36\x2e\x36\x31\x33\x36\x20\x2d\x33\
-\x33\x2e\x34\x33\x38\x31\x20\x34\x39\x2e\x31\x31\x33\x32\x20\x2d\
-\x32\x36\x2e\x35\x39\x35\x39\x20\x34\x30\x2e\x36\x37\x39\x34\x20\
-\x2d\x32\x32\x2e\x35\x32\x38\x31\x43\x20\x32\x35\x2e\x33\x39\x39\
-\x35\x20\x2d\x31\x35\x2e\x31\x35\x38\x32\x20\x37\x2e\x31\x39\x39\
-\x33\x35\x20\x2d\x31\x38\x2e\x31\x34\x33\x36\x20\x33\x2e\x39\x35\
-\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\
-\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\
-\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\
-\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\
-\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\
-\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\
-\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\
-\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\
-\x68\x3d\x27\x32\x2e\x35\x30\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\
-\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\
-\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\
-\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\
-\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\
-\x35\x37\x33\x35\x27\x20\x63\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\
-\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\
-\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\
-\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\
-\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\
-\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\
-\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\
-\x39\x30\x33\x36\x27\x20\x63\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\
-\x33\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\
-\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\
-\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\
-\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\
-\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\
-\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\
-\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\
-\x36\x2e\x31\x35\x32\x33\x27\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\
-\x35\x30\x32\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\
-\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\
-\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\
-\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\
-\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\
-\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\
-\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\
-\x27\x34\x30\x2e\x36\x37\x39\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\
-\x32\x2e\x35\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\
-\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\
-\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\
-\x73\x76\x67\x3e\
 \x00\x00\x03\x36\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -928,13 +1362,13 @@
 \x2c\x34\x34\x38\x20\x31\x39\x32\x2c\x33\x39\x36\x2e\x37\x39\x35\
 \x20\x09\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\
 \x76\x67\x3e\x0d\x0a\
-\x00\x00\x02\x7d\
+\x00\x00\x03\x0c\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
 \x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
 \x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
 \x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
 \x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
@@ -946,37 +1380,46 @@
 \x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
 \x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
 \x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x38\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
-\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x32\
-\x37\x2c\x32\x33\x34\x2e\x36\x32\x35\x48\x31\x36\x37\x2e\x32\x39\
-\x36\x6c\x31\x31\x39\x2e\x37\x30\x32\x2d\x31\x31\x39\x2e\x37\x30\
-\x32\x4c\x32\x35\x36\x2c\x38\x35\x4c\x38\x35\x2c\x32\x35\x36\x6c\
-\x31\x37\x31\x2c\x31\x37\x31\x6c\x32\x39\x2e\x39\x32\x32\x2d\x32\
-\x39\x2e\x39\x32\x34\x4c\x31\x36\x37\x2e\x32\x39\x36\x2c\x32\x37\
-\x37\x2e\x33\x37\x35\x48\x34\x32\x37\x56\x32\x33\x34\x2e\x36\x32\
-\x35\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
-\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x05\x27\
+\x3d\x22\x43\x68\x65\x63\x6b\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\
+\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\
+\x78\x3d\x22\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\x65\x6e\
+\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\
+\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\
+\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\
+\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\
+\x4d\x38\x2e\x32\x39\x34\x2c\x31\x36\x2e\x39\x39\x38\x63\x2d\x30\
+\x2e\x34\x33\x35\x2c\x30\x2d\x30\x2e\x38\x34\x37\x2d\x30\x2e\x32\
+\x30\x33\x2d\x31\x2e\x31\x31\x31\x2d\x30\x2e\x35\x35\x33\x4c\x33\
+\x2e\x36\x31\x2c\x31\x31\x2e\x37\x32\x34\x63\x2d\x30\x2e\x34\x36\
+\x35\x2d\x30\x2e\x36\x31\x33\x2d\x30\x2e\x33\x34\x34\x2d\x31\x2e\
+\x34\x38\x36\x2c\x30\x2e\x32\x37\x2d\x31\x2e\x39\x35\x31\x0d\x0a\
+\x09\x63\x30\x2e\x36\x31\x35\x2d\x30\x2e\x34\x36\x37\x2c\x31\x2e\
+\x34\x38\x38\x2d\x30\x2e\x33\x34\x34\x2c\x31\x2e\x39\x35\x33\x2c\
+\x30\x2e\x32\x37\x6c\x32\x2e\x33\x35\x31\x2c\x33\x2e\x31\x30\x34\
+\x6c\x35\x2e\x39\x31\x31\x2d\x39\x2e\x34\x39\x32\x63\x30\x2e\x34\
+\x30\x37\x2d\x30\x2e\x36\x35\x32\x2c\x31\x2e\x32\x36\x37\x2d\x30\
+\x2e\x38\x35\x32\x2c\x31\x2e\x39\x32\x31\x2d\x30\x2e\x34\x34\x35\
+\x0d\x0a\x09\x63\x30\x2e\x36\x35\x33\x2c\x30\x2e\x34\x30\x36\x2c\
+\x30\x2e\x38\x35\x34\x2c\x31\x2e\x32\x36\x36\x2c\x30\x2e\x34\x34\
+\x36\x2c\x31\x2e\x39\x32\x4c\x39\x2e\x34\x37\x38\x2c\x31\x36\x2e\
+\x33\x34\x63\x2d\x30\x2e\x32\x34\x32\x2c\x30\x2e\x33\x39\x31\x2d\
+\x30\x2e\x36\x36\x31\x2c\x30\x2e\x36\x33\x35\x2d\x31\x2e\x31\x32\
+\x2c\x30\x2e\x36\x35\x36\x43\x38\x2e\x33\x33\x36\x2c\x31\x36\x2e\
+\x39\x39\x38\x2c\x38\x2e\x33\x31\x36\x2c\x31\x36\x2e\x39\x39\x38\
+\x2c\x38\x2e\x32\x39\x34\x2c\x31\x36\x2e\x39\x39\x38\x7a\x22\x2f\
+\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x03\xf5\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
 \x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
+\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\
 \x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
 \x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
 \x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
@@ -988,74 +1431,55 @@
 \x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
 \x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
 \x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x43\x68\x65\x76\x72\x6f\x6e\x5f\x63\x69\x72\x63\x6c\x65\
+\x64\x5f\x6c\x65\x66\x74\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\
+\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\
+\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\
+\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\
+\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\
+\x6c\x69\x6e\x6b\x22\x0d\x0a\x09\x20\x78\x3d\x22\x30\x70\x78\x22\
+\x20\x79\x3d\x22\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
 \x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
 \x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
 \x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
 \x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x31\x32\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\
-\x3e\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\
-\x35\x36\x2c\x36\x34\x43\x31\x35\x30\x2e\x34\x30\x31\x2c\x36\x34\
-\x2c\x36\x34\x2c\x31\x35\x30\x2e\x34\x30\x31\x2c\x36\x34\x2c\x32\
-\x35\x36\x63\x30\x2c\x31\x30\x35\x2e\x36\x30\x34\x2c\x38\x36\x2e\
-\x34\x30\x31\x2c\x31\x39\x32\x2c\x31\x39\x32\x2c\x31\x39\x32\x63\
-\x31\x38\x2e\x31\x33\x36\x2c\x30\x2c\x33\x32\x2d\x31\x33\x2e\x38\
-\x36\x34\x2c\x33\x32\x2d\x33\x32\x0d\x0a\x09\x09\x09\x63\x30\x2d\
-\x38\x2e\x35\x33\x31\x2d\x33\x2e\x31\x39\x38\x2d\x31\x36\x2d\x38\
-\x2e\x35\x33\x31\x2d\x32\x31\x2e\x33\x33\x33\x63\x2d\x35\x2e\x33\
-\x33\x33\x2d\x35\x2e\x33\x33\x34\x2d\x38\x2e\x35\x33\x31\x2d\x31\
-\x32\x2e\x38\x30\x33\x2d\x38\x2e\x35\x33\x31\x2d\x32\x31\x2e\x33\
-\x33\x34\x63\x30\x2d\x31\x38\x2e\x31\x33\x35\x2c\x31\x33\x2e\x38\
-\x36\x34\x2d\x33\x32\x2c\x33\x32\x2d\x33\x32\x68\x33\x38\x2e\x33\
-\x39\x36\x0d\x0a\x09\x09\x09\x63\x35\x38\x2e\x36\x36\x37\x2c\x30\
-\x2c\x31\x30\x36\x2e\x36\x36\x37\x2d\x34\x38\x2c\x31\x30\x36\x2e\
-\x36\x36\x37\x2d\x31\x30\x36\x2e\x36\x36\x36\x43\x34\x34\x38\x2c\
-\x31\x34\x30\x2e\x38\x30\x32\x2c\x33\x36\x31\x2e\x36\x30\x34\x2c\
-\x36\x34\x2c\x32\x35\x36\x2c\x36\x34\x7a\x20\x4d\x31\x33\x38\x2e\
-\x36\x36\x37\x2c\x32\x35\x36\x63\x2d\x31\x38\x2e\x31\x33\x36\x2c\
-\x30\x2d\x33\x32\x2d\x31\x33\x2e\x38\x36\x34\x2d\x33\x32\x2d\x33\
-\x32\x73\x31\x33\x2e\x38\x36\x34\x2d\x33\x32\x2c\x33\x32\x2d\x33\
-\x32\x0d\x0a\x09\x09\x09\x63\x31\x38\x2e\x31\x33\x35\x2c\x30\x2c\
-\x33\x32\x2c\x31\x33\x2e\x38\x36\x34\x2c\x33\x32\x2c\x33\x32\x53\
-\x31\x35\x36\x2e\x38\x30\x32\x2c\x32\x35\x36\x2c\x31\x33\x38\x2e\
-\x36\x36\x37\x2c\x32\x35\x36\x7a\x20\x4d\x32\x30\x32\x2e\x36\x36\
-\x37\x2c\x31\x37\x30\x2e\x36\x36\x37\x63\x2d\x31\x38\x2e\x31\x33\
-\x36\x2c\x30\x2d\x33\x32\x2d\x31\x33\x2e\x38\x36\x35\x2d\x33\x32\
-\x2d\x33\x32\x63\x30\x2d\x31\x38\x2e\x31\x33\x36\x2c\x31\x33\x2e\
-\x38\x36\x34\x2d\x33\x32\x2c\x33\x32\x2d\x33\x32\x0d\x0a\x09\x09\
-\x09\x63\x31\x38\x2e\x31\x33\x35\x2c\x30\x2c\x33\x32\x2c\x31\x33\
-\x2e\x38\x36\x34\x2c\x33\x32\x2c\x33\x32\x43\x32\x33\x34\x2e\x36\
-\x36\x37\x2c\x31\x35\x36\x2e\x38\x30\x32\x2c\x32\x32\x30\x2e\x38\
-\x30\x32\x2c\x31\x37\x30\x2e\x36\x36\x37\x2c\x32\x30\x32\x2e\x36\
-\x36\x37\x2c\x31\x37\x30\x2e\x36\x36\x37\x7a\x20\x4d\x33\x30\x39\
-\x2e\x33\x33\x33\x2c\x31\x37\x30\x2e\x36\x36\x37\x63\x2d\x31\x38\
-\x2e\x31\x33\x35\x2c\x30\x2d\x33\x32\x2d\x31\x33\x2e\x38\x36\x35\
-\x2d\x33\x32\x2d\x33\x32\x0d\x0a\x09\x09\x09\x63\x30\x2d\x31\x38\
-\x2e\x31\x33\x36\x2c\x31\x33\x2e\x38\x36\x35\x2d\x33\x32\x2c\x33\
-\x32\x2d\x33\x32\x63\x31\x38\x2e\x31\x33\x36\x2c\x30\x2c\x33\x32\
-\x2c\x31\x33\x2e\x38\x36\x34\x2c\x33\x32\x2c\x33\x32\x43\x33\x34\
-\x31\x2e\x33\x33\x33\x2c\x31\x35\x36\x2e\x38\x30\x32\x2c\x33\x32\
-\x37\x2e\x34\x36\x39\x2c\x31\x37\x30\x2e\x36\x36\x37\x2c\x33\x30\
-\x39\x2e\x33\x33\x33\x2c\x31\x37\x30\x2e\x36\x36\x37\x7a\x20\x4d\
-\x33\x37\x33\x2e\x33\x33\x33\x2c\x32\x35\x36\x0d\x0a\x09\x09\x09\
-\x63\x2d\x31\x38\x2e\x31\x33\x35\x2c\x30\x2d\x33\x32\x2d\x31\x33\
-\x2e\x38\x36\x34\x2d\x33\x32\x2d\x33\x32\x73\x31\x33\x2e\x38\x36\
-\x35\x2d\x33\x32\x2c\x33\x32\x2d\x33\x32\x63\x31\x38\x2e\x31\x33\
-\x36\x2c\x30\x2c\x33\x32\x2c\x31\x33\x2e\x38\x36\x34\x2c\x33\x32\
-\x2c\x33\x32\x53\x33\x39\x31\x2e\x34\x36\x39\x2c\x32\x35\x36\x2c\
-\x33\x37\x33\x2e\x33\x33\x33\x2c\x32\x35\x36\x7a\x22\x2f\x3e\x0d\
-\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
-\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x02\x7d\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\x72\x61\
+\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\
+\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x0d\
+\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x31\x2e\x33\x30\
+\x32\x2c\x36\x2e\x37\x37\x36\x63\x2d\x30\x2e\x31\x39\x36\x2d\x30\
+\x2e\x31\x39\x37\x2d\x30\x2e\x35\x31\x35\x2d\x30\x2e\x31\x39\x37\
+\x2d\x30\x2e\x37\x31\x2c\x30\x4c\x37\x2e\x37\x38\x35\x2c\x39\x2e\
+\x36\x34\x31\x63\x2d\x30\x2e\x31\x39\x36\x2c\x30\x2e\x31\x39\x39\
+\x2d\x30\x2e\x31\x39\x36\x2c\x30\x2e\x35\x32\x2c\x30\x2c\x30\x2e\
+\x37\x31\x37\x6c\x32\x2e\x38\x30\x37\x2c\x32\x2e\x38\x36\x34\x0d\
+\x0a\x09\x63\x30\x2e\x31\x39\x35\x2c\x30\x2e\x31\x39\x39\x2c\x30\
+\x2e\x35\x31\x34\x2c\x30\x2e\x31\x39\x38\x2c\x30\x2e\x37\x31\x2c\
+\x30\x63\x30\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\
+\x31\x39\x36\x2d\x30\x2e\x35\x31\x38\x2c\x30\x2d\x30\x2e\x37\x31\
+\x37\x4c\x39\x2c\x31\x30\x6c\x32\x2e\x33\x30\x32\x2d\x32\x2e\x35\
+\x30\x36\x43\x31\x31\x2e\x34\x39\x38\x2c\x37\x2e\x32\x39\x36\x2c\
+\x31\x31\x2e\x34\x39\x38\x2c\x36\x2e\x39\x37\x36\x2c\x31\x31\x2e\
+\x33\x30\x32\x2c\x36\x2e\x37\x37\x36\x7a\x0d\x0a\x09\x20\x4d\x31\
+\x30\x2c\x30\x2e\x34\x63\x2d\x35\x2e\x33\x30\x32\x2c\x30\x2d\x39\
+\x2e\x36\x2c\x34\x2e\x32\x39\x38\x2d\x39\x2e\x36\x2c\x39\x2e\x36\
+\x63\x30\x2c\x35\x2e\x33\x30\x33\x2c\x34\x2e\x32\x39\x38\x2c\x39\
+\x2e\x36\x2c\x39\x2e\x36\x2c\x39\x2e\x36\x73\x39\x2e\x36\x2d\x34\
+\x2e\x32\x39\x37\x2c\x39\x2e\x36\x2d\x39\x2e\x36\x43\x31\x39\x2e\
+\x36\x2c\x34\x2e\x36\x39\x38\x2c\x31\x35\x2e\x33\x30\x32\x2c\x30\
+\x2e\x34\x2c\x31\x30\x2c\x30\x2e\x34\x7a\x20\x4d\x31\x30\x2c\x31\
+\x38\x2e\x33\x35\x34\x0d\x0a\x09\x63\x2d\x34\x2e\x36\x31\x35\x2c\
+\x30\x2d\x38\x2e\x33\x35\x34\x2d\x33\x2e\x37\x34\x2d\x38\x2e\x33\
+\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x30\x2d\x34\x2e\x36\x31\x34\
+\x2c\x33\x2e\x37\x33\x39\x2d\x38\x2e\x33\x35\x34\x2c\x38\x2e\x33\
+\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x34\x2e\x36\x31\x33\x2c\x30\
+\x2c\x38\x2e\x33\x35\x34\x2c\x33\x2e\x37\x34\x2c\x38\x2e\x33\x35\
+\x34\x2c\x38\x2e\x33\x35\x34\x0d\x0a\x09\x43\x31\x38\x2e\x33\x35\
+\x34\x2c\x31\x34\x2e\x36\x31\x34\x2c\x31\x34\x2e\x36\x31\x33\x2c\
+\x31\x38\x2e\x33\x35\x34\x2c\x31\x30\x2c\x31\x38\x2e\x33\x35\x34\
+\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\
+\x67\x3e\x0d\x0a\
+\x00\x00\x02\xc9\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
@@ -1082,114 +1506,94 @@
 \x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
 \x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
 \x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x38\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
-\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x38\x35\
-\x2c\x32\x37\x37\x2e\x33\x37\x35\x68\x32\x35\x39\x2e\x37\x30\x34\
-\x4c\x32\x32\x35\x2e\x30\x30\x32\x2c\x33\x39\x37\x2e\x30\x37\x37\
-\x4c\x32\x35\x36\x2c\x34\x32\x37\x6c\x31\x37\x31\x2d\x31\x37\x31\
-\x4c\x32\x35\x36\x2c\x38\x35\x6c\x2d\x32\x39\x2e\x39\x32\x32\x2c\
-\x32\x39\x2e\x39\x32\x34\x6c\x31\x31\x38\x2e\x36\x32\x36\x2c\x31\
-\x31\x39\x2e\x37\x30\x31\x48\x38\x35\x56\x32\x37\x37\x2e\x33\x37\
-\x35\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
-\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\x52\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
+\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
+\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
+\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
+\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
+\x0a\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\
+\x3d\x22\x34\x38\x30\x2c\x32\x35\x36\x20\x33\x38\x34\x2c\x31\x36\
+\x30\x20\x33\x38\x34\x2c\x32\x33\x36\x20\x32\x37\x36\x2c\x32\x33\
+\x36\x20\x32\x37\x36\x2c\x31\x32\x38\x20\x33\x35\x32\x2c\x31\x32\
+\x38\x20\x32\x35\x36\x2c\x33\x32\x20\x31\x36\x30\x2c\x31\x32\x38\
+\x20\x32\x33\x36\x2c\x31\x32\x38\x20\x32\x33\x36\x2c\x32\x33\x36\
+\x20\x31\x32\x38\x2c\x32\x33\x36\x20\x31\x32\x38\x2c\x31\x36\x30\
+\x20\x33\x32\x2c\x32\x35\x36\x20\x31\x32\x38\x2c\x33\x35\x32\x20\
+\x0d\x0a\x09\x31\x32\x38\x2c\x32\x37\x36\x20\x32\x33\x36\x2c\x32\
+\x37\x36\x20\x32\x33\x36\x2c\x33\x38\x34\x20\x31\x36\x30\x2c\x33\
+\x38\x34\x20\x32\x35\x36\x2c\x34\x38\x30\x20\x33\x35\x32\x2c\x33\
+\x38\x34\x20\x32\x37\x35\x2e\x38\x2c\x33\x38\x34\x20\x32\x37\x35\
+\x2e\x34\x2c\x32\x37\x35\x2e\x35\x20\x33\x38\x34\x2c\x32\x37\x35\
+\x2e\x38\x20\x33\x38\x34\x2c\x33\x35\x32\x20\x22\x2f\x3e\x0d\x0a\
+\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x04\x1c\
 \x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\
-\x64\x3d\x22\x4d\x34\x33\x37\x2e\x33\x33\x34\x2c\x31\x34\x34\x48\
-\x32\x35\x36\x2e\x30\x30\x36\x6c\x2d\x34\x32\x2e\x36\x36\x38\x2d\
-\x34\x38\x48\x37\x34\x2e\x36\x36\x36\x43\x35\x31\x2e\x31\x39\x37\
-\x2c\x39\x36\x2c\x33\x32\x2c\x31\x31\x35\x2e\x31\x39\x38\x2c\x33\
-\x32\x2c\x31\x33\x38\x2e\x36\x36\x37\x76\x32\x33\x34\x2e\x36\x36\
-\x36\x43\x33\x32\x2c\x33\x39\x36\x2e\x38\x30\x32\x2c\x35\x31\x2e\
-\x31\x39\x37\x2c\x34\x31\x36\x2c\x37\x34\x2e\x36\x36\x36\x2c\x34\
-\x31\x36\x68\x33\x36\x32\x2e\x36\x36\x38\x0d\x0a\x09\x43\x34\x36\
-\x30\x2e\x38\x30\x33\x2c\x34\x31\x36\x2c\x34\x38\x30\x2c\x33\x39\
-\x36\x2e\x38\x30\x32\x2c\x34\x38\x30\x2c\x33\x37\x33\x2e\x33\x33\
-\x33\x56\x31\x38\x36\x2e\x36\x36\x37\x43\x34\x38\x30\x2c\x31\x36\
-\x33\x2e\x31\x39\x38\x2c\x34\x36\x30\x2e\x38\x30\x33\x2c\x31\x34\
-\x34\x2c\x34\x33\x37\x2e\x33\x33\x34\x2c\x31\x34\x34\x7a\x20\x4d\
-\x34\x34\x38\x2c\x33\x37\x33\x2e\x33\x33\x33\x0d\x0a\x09\x63\x30\
-\x2c\x35\x2e\x37\x38\x32\x2d\x34\x2e\x38\x38\x35\x2c\x31\x30\x2e\
-\x36\x36\x37\x2d\x31\x30\x2e\x36\x36\x36\x2c\x31\x30\x2e\x36\x36\
-\x37\x48\x37\x34\x2e\x36\x36\x36\x43\x36\x38\x2e\x38\x38\x34\x2c\
-\x33\x38\x34\x2c\x36\x34\x2c\x33\x37\x39\x2e\x31\x31\x35\x2c\x36\
-\x34\x2c\x33\x37\x33\x2e\x33\x33\x33\x56\x31\x37\x36\x68\x33\x37\
-\x33\x2e\x33\x33\x34\x63\x35\x2e\x37\x38\x31\x2c\x30\x2c\x31\x30\
-\x2e\x36\x36\x36\x2c\x34\x2e\x38\x38\x35\x2c\x31\x30\x2e\x36\x36\
-\x36\x2c\x31\x30\x2e\x36\x36\x37\x0d\x0a\x09\x56\x33\x37\x33\x2e\
-\x33\x33\x33\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
-\x0a\
-\x00\x00\x02\x21\
-\x00\
-\x00\x07\xaf\x78\x9c\xdd\x55\x4d\x6f\x9c\x30\x10\xbd\xf7\x57\x4c\
-\xd5\x83\xdb\x03\xc6\xdf\x86\x28\x24\x52\x57\xea\x29\xbd\x25\x97\
-\xde\x68\xf0\x82\x9b\x5d\x58\x01\x5d\xb6\xff\xbe\x66\xd7\x60\x4a\
-\xaa\xf4\x92\x43\x15\x90\x30\xf3\x18\xbf\x99\xe7\xf1\x98\xeb\xdb\
-\xd3\x7e\x07\x47\xd3\x76\xb6\xa9\x33\x44\x31\x41\x60\xea\xc7\xa6\
-\xb0\x75\x99\xa1\x87\xfb\x2f\x51\x82\x6e\x6f\xde\x5d\xbf\x8f\x22\
-\xb8\xaf\x6c\x07\x5b\xbb\x33\x30\xe4\x1d\x94\xa6\x36\x6d\xde\x9b\
-\x02\xbe\xff\x82\xe2\x68\xbb\x63\xb9\x07\x86\x13\x88\x22\xe7\xef\
-\xac\x25\x2b\x45\xe0\xe2\xd4\x5d\x86\xaa\xbe\x3f\x5c\xc5\xf1\x30\
-\x0c\x78\xe0\xb8\x69\xcb\x98\x11\x42\x62\xe7\xef\x5d\xae\x4e\x3b\
-\x5b\x3f\xfd\xcd\x91\xa6\x69\x1a\x9f\xbf\x22\x18\x6c\xd1\x57\x19\
-\x52\x1c\x3b\x50\x1d\x7a\x04\x95\xb1\x65\xd5\x4f\x90\x1e\xa1\xa3\
-\x35\xc3\xe7\xe6\x94\x21\xa9\xb0\x20\xa9\x00\xc9\x71\x22\x13\x0e\
-\x7e\x9a\x1f\x35\x72\x09\x97\x60\x8b\x0c\x1d\xf2\xd2\xd0\x8b\xd9\
-\xb7\x79\xdd\x6d\x9b\x76\x9f\xa1\x7d\xde\xb7\xf6\xf4\x91\x38\x67\
-\xc5\x94\x00\x32\xde\x93\x31\x71\x53\xaa\x47\xf2\x4f\xe3\xec\x43\
-\xde\x57\xe0\xe8\xbe\x42\x8a\xb9\xd0\x82\x41\xc4\x38\x26\x94\xde\
-\x05\xc0\xbf\x3c\x47\x36\xcf\x90\x7f\x03\x8b\x39\x12\x53\x29\x29\
-\x05\x9a\x62\x29\x38\x85\x88\x62\x2d\x95\x54\xc0\x19\xa6\x6c\x36\
-\x37\x20\x04\x56\xa9\x4a\x83\x83\x14\x38\x49\x99\x0a\x14\x33\x30\
-\xe7\xfa\x02\x32\x09\x9c\x01\xae\xb0\xd2\x42\x6e\x02\x22\x08\x4e\
-\x94\x4a\x42\x64\xf7\xc2\x94\x14\x53\x6a\xde\xdc\x84\xdc\x27\x87\
-\x59\xdd\x44\x31\x03\x3e\xca\xdd\x7a\xa5\xbf\xa1\x71\xab\xee\x32\
-\xf4\x41\x6f\xc7\x1b\xc5\xae\x2e\x71\xf9\x8a\xa5\x0d\x42\x53\xac\
-\x29\x49\x97\x42\xdd\xbe\x22\x9c\x2d\x84\x6a\xcc\x09\xd5\xb3\xd0\
-\x8b\xb9\x14\xea\x1d\x82\x50\x4f\x11\x84\x4e\x51\x02\x22\xb1\xa4\
-\x89\x0c\x24\x17\x76\x1f\xe3\x3c\x2c\xaa\x7c\x81\x43\xd2\x7e\xf2\
-\x5a\xc5\xbc\x6e\x75\x53\x1b\x04\x5d\xdf\x36\x4f\xc6\xad\x22\x39\
-\x5f\x13\x10\xb9\x2e\x34\x8f\xf9\x21\x43\x6d\xf3\xb3\x2e\xfe\x80\
-\x7f\x34\xb6\x5e\xe3\x7b\xdb\x9b\x76\x67\xdd\xe0\x4e\x03\x82\x09\
-\xd7\x72\xfe\xe6\x5b\x99\xbb\x7c\x38\x65\xaf\x5f\xa7\xf5\x0a\xbe\
-\xe1\x1e\xf4\x0a\xdf\x5c\x09\x5f\x68\x35\xc9\x30\x4b\xf4\xe2\x4c\
-\x51\x0c\x8b\x84\xcf\x67\x8a\x37\x17\xad\x36\x39\x84\x6a\x79\x8a\
-\xf5\x46\xf9\x6f\x96\xf1\xf2\x70\xbf\xc8\x9b\xdf\xf9\x80\xe2\xe1\
-\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
+\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
+\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
+\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
+\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
+\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
+\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
+\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
+\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
+\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
+\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
+\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
+\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
+\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
+\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
+\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
+\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
+\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
+\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\
+\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x32\
+\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\x36\
+\x32\x2e\x32\x33\x32\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\
+\x36\x32\x2e\x32\x33\x32\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\x35\
+\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\
+\x35\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\
+\x35\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\
+\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\
+\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\
+\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\
+\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\
+\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\
+\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\
+\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\
+\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\
+\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\
+\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\
+\x36\x34\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\
+\x35\x38\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\
+\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x33\x32\x2e\x31\x32\x4c\x20\
+\x36\x32\x2e\x32\x33\x32\x35\x20\x2d\x33\x32\x2e\x31\x32\x27\x20\
+\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\
+\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\
+\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\
+\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\
+\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\
+\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\
+\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\
+\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\x2f\x3e\x0a\x3c\
+\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\
+\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\
+\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\
+\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\
+\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\x32\x2e\
+\x31\x32\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\x33\x32\x2e\x31\
+\x32\x20\x2d\x36\x32\x2e\x32\x33\x32\x35\x27\x20\x66\x69\x6c\x6c\
+\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\
+\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\
+\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\
+\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\
+\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\
+\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\
+\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\
+\x3d\x27\x34\x2e\x30\x31\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
+\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
 \x00\x00\x04\x3d\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
@@ -1260,7 +1664,7 @@
 \x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\
 \x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\
 \x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
-\x00\x00\x02\xc9\
+\x00\x00\x03\x46\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
@@ -1292,23 +1696,83 @@
 \x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
 \x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
 \x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
-\x0a\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\
-\x3d\x22\x34\x38\x30\x2c\x32\x35\x36\x20\x33\x38\x34\x2c\x31\x36\
-\x30\x20\x33\x38\x34\x2c\x32\x33\x36\x20\x32\x37\x36\x2c\x32\x33\
-\x36\x20\x32\x37\x36\x2c\x31\x32\x38\x20\x33\x35\x32\x2c\x31\x32\
-\x38\x20\x32\x35\x36\x2c\x33\x32\x20\x31\x36\x30\x2c\x31\x32\x38\
-\x20\x32\x33\x36\x2c\x31\x32\x38\x20\x32\x33\x36\x2c\x32\x33\x36\
-\x20\x31\x32\x38\x2c\x32\x33\x36\x20\x31\x32\x38\x2c\x31\x36\x30\
-\x20\x33\x32\x2c\x32\x35\x36\x20\x31\x32\x38\x2c\x33\x35\x32\x20\
-\x0d\x0a\x09\x31\x32\x38\x2c\x32\x37\x36\x20\x32\x33\x36\x2c\x32\
-\x37\x36\x20\x32\x33\x36\x2c\x33\x38\x34\x20\x31\x36\x30\x2c\x33\
-\x38\x34\x20\x32\x35\x36\x2c\x34\x38\x30\x20\x33\x35\x32\x2c\x33\
-\x38\x34\x20\x32\x37\x35\x2e\x38\x2c\x33\x38\x34\x20\x32\x37\x35\
-\x2e\x34\x2c\x32\x37\x35\x2e\x35\x20\x33\x38\x34\x2c\x32\x37\x35\
-\x2e\x38\x20\x33\x38\x34\x2c\x33\x35\x32\x20\x22\x2f\x3e\x0d\x0a\
-\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x02\xfc\
+\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x33\x37\x2e\x35\
+\x2c\x33\x38\x36\x2e\x36\x4c\x33\x30\x36\x2e\x39\x2c\x32\x35\x36\
+\x6c\x31\x33\x30\x2e\x36\x2d\x31\x33\x30\x2e\x36\x63\x31\x34\x2e\
+\x31\x2d\x31\x34\x2e\x31\x2c\x31\x34\x2e\x31\x2d\x33\x36\x2e\x38\
+\x2c\x30\x2d\x35\x30\x2e\x39\x63\x2d\x31\x34\x2e\x31\x2d\x31\x34\
+\x2e\x31\x2d\x33\x36\x2e\x38\x2d\x31\x34\x2e\x31\x2d\x35\x30\x2e\
+\x39\x2c\x30\x4c\x32\x35\x36\x2c\x32\x30\x35\x2e\x31\x4c\x31\x32\
+\x35\x2e\x34\x2c\x37\x34\x2e\x35\x0d\x0a\x09\x63\x2d\x31\x34\x2e\
+\x31\x2d\x31\x34\x2e\x31\x2d\x33\x36\x2e\x38\x2d\x31\x34\x2e\x31\
+\x2d\x35\x30\x2e\x39\x2c\x30\x63\x2d\x31\x34\x2e\x31\x2c\x31\x34\
+\x2e\x31\x2d\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\x35\
+\x30\x2e\x39\x4c\x32\x30\x35\x2e\x31\x2c\x32\x35\x36\x4c\x37\x34\
+\x2e\x35\x2c\x33\x38\x36\x2e\x36\x63\x2d\x31\x34\x2e\x31\x2c\x31\
+\x34\x2e\x31\x2d\x31\x34\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x30\x2c\
+\x35\x30\x2e\x39\x0d\x0a\x09\x63\x31\x34\x2e\x31\x2c\x31\x34\x2e\
+\x31\x2c\x33\x36\x2e\x38\x2c\x31\x34\x2e\x31\x2c\x35\x30\x2e\x39\
+\x2c\x30\x4c\x32\x35\x36\x2c\x33\x30\x36\x2e\x39\x6c\x31\x33\x30\
+\x2e\x36\x2c\x31\x33\x30\x2e\x36\x63\x31\x34\x2e\x31\x2c\x31\x34\
+\x2e\x31\x2c\x33\x36\x2e\x38\x2c\x31\x34\x2e\x31\x2c\x35\x30\x2e\
+\x39\x2c\x30\x43\x34\x35\x31\x2e\x35\x2c\x34\x32\x33\x2e\x34\x2c\
+\x34\x35\x31\x2e\x35\x2c\x34\x30\x30\x2e\x36\x2c\x34\x33\x37\x2e\
+\x35\x2c\x33\x38\x36\x2e\x36\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\
+\x76\x67\x3e\x0d\x0a\
+\x00\x00\x01\xdd\
+\x00\
+\x00\x06\xe4\x78\x9c\xcd\x54\x4d\x6f\x9b\x40\x10\x3d\x13\x29\xff\
+\x61\xba\xb7\x4a\xec\x17\xc4\xd4\xa6\xa6\x51\xfd\x21\xcb\x52\x9a\
+\x58\x6a\xea\xaa\xa7\x0a\xc3\x16\x50\x28\x20\x58\xc0\xce\xaf\xef\
+\xee\x92\x54\x51\x95\xfa\x18\xfb\xb0\x33\xda\x79\x6f\xde\xbc\x65\
+\x24\xa6\xd7\xfb\xdf\x39\x74\xa2\x6e\xb2\xb2\x08\x10\x27\x0c\x81\
+\x28\xa2\x32\xce\x8a\x24\x40\xad\xfc\x85\xc7\xe8\xfa\xd3\xe5\xc5\
+\xf4\x1d\xc6\xb0\x12\x85\xa8\x43\x59\xd6\x3e\x7c\x8e\xcb\x9d\x80\
+\x75\x9e\xb7\x8d\x34\x25\xe0\x1e\x71\x08\xb7\xe1\xeb\x76\x05\xcb\
+\x7d\x55\xd6\x12\x36\x79\x9b\xe0\x75\x01\xc4\x14\xb7\xc3\x10\x1f\
+\x3c\xc2\x18\xcc\xda\x2c\x8f\x81\xbd\x07\xc0\xd8\xe8\x2f\xee\xe6\
+\xf7\x3f\x36\x4b\x68\xba\x04\x36\xdf\x66\x37\xeb\x39\x20\x4c\xe9\
+\x77\x77\x4e\xe9\xe2\x7e\x61\x24\x38\xe1\x94\x2e\x6f\x11\xa0\x54\
+\xca\xca\xa7\xb4\xef\x7b\xd2\xbb\xa4\xac\x13\xba\xaa\xc3\x2a\xcd\
+\xa2\x86\x2a\x22\xd5\x44\xd5\x44\x95\x18\xe7\x24\x96\x31\xd2\x33\
+\xb4\xf4\x8b\xa7\x72\x04\x59\x1c\xa0\x9b\xf0\x20\xea\x9f\xea\xa2\
+\xbe\x44\xd1\x04\xaf\x48\x3b\x8c\x31\x2d\xf5\x44\xf1\xf7\x79\x56\
+\x3c\xbc\x46\xe4\x93\xc9\x84\x1a\x54\x51\x03\xc4\xaa\x3d\x82\xc3\
+\x90\x2f\x2f\x2c\xe8\xb3\x58\xa6\x01\x1a\x71\x47\x03\xa9\xc8\x92\
+\x54\xfe\xbd\x76\x99\xe8\x67\xa5\xee\x02\x06\xaa\xa6\x0f\x82\x46\
+\x1e\x72\x11\x20\x51\x84\xbb\x5c\xe0\x5d\x18\x3d\x24\x75\xd9\x16\
+\xb1\x5f\x88\x1e\x5e\x30\x3f\x1a\x6f\x7e\x53\x85\x91\xa2\x57\xb5\
+\x68\x44\xdd\x09\xf3\xea\x44\x05\x6b\x88\xd6\xb4\x0a\x65\x0a\xea\
+\xd1\x5f\xb8\xc7\x6c\x3e\x72\x89\x1b\x31\xdb\x25\x1f\xb0\x6b\x7b\
+\x2a\xaa\xa3\x73\x8a\x47\x8c\x8c\x22\xac\x00\x9b\xe9\x22\x76\xf1\
+\x13\xdc\x0d\x10\x33\x98\xfb\xdc\xa0\x73\x6a\x00\xd3\xa2\x4b\xb6\
+\x51\xd4\x67\x6b\xe6\x3c\xea\x4f\x60\x59\xf4\x1f\x1f\xce\x78\x7c\
+\x16\x3e\xae\xb8\x77\x3a\x1f\x53\xfa\xff\x25\x39\x63\xfe\x26\xa6\
+\xcc\x9c\x23\x4b\x3a\x07\x1f\x7a\x49\x27\xf3\x71\x6c\x49\x57\x6c\
+\xf2\x26\xa6\xcc\x9c\x23\x4b\x3a\x07\x1f\x7a\x49\x27\xf3\x31\x2c\
+\xe9\x39\xaa\x7f\xb6\xca\x7f\x00\x99\x18\x96\x19\
+\x00\x00\x01\x1c\
 \x3c\
+\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
+\x30\x2f\x73\x76\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\x31\
+\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\x32\
+\x70\x78\x22\x0a\x20\x20\x20\x20\x20\x76\x69\x65\x77\x42\x6f\x78\
+\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x3e\x0a\
+\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
+\x74\x72\x69\x78\x28\x34\x38\x20\x30\x20\x30\x20\x34\x38\x20\x34\
+\x38\x20\x34\x38\x29\x27\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\
+\x64\x3d\x22\x4d\x30\x20\x30\x76\x32\x68\x2e\x35\x63\x30\x2d\x2e\
+\x35\x35\x2e\x34\x35\x2d\x31\x20\x31\x2d\x31\x68\x31\x2e\x35\x76\
+\x35\x2e\x35\x63\x30\x20\x2e\x32\x38\x2d\x2e\x32\x32\x2e\x35\x2d\
+\x2e\x35\x2e\x35\x68\x2d\x2e\x35\x76\x31\x68\x34\x76\x2d\x31\x68\
+\x2d\x2e\x35\x63\x2d\x2e\x32\x38\x20\x30\x2d\x2e\x35\x2d\x2e\x32\
+\x32\x2d\x2e\x35\x2d\x2e\x35\x76\x2d\x35\x2e\x35\x68\x31\x2e\x35\
+\x63\x2e\x35\x35\x20\x30\x20\x31\x20\x2e\x34\x35\x20\x31\x20\x31\
+\x68\x2e\x35\x76\x2d\x32\x68\x2d\x38\x7a\x22\x20\x2f\x3e\x0a\x3c\
+\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\
+\x00\x00\x05\x27\
+\x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
 \x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
@@ -1339,25 +1803,60 @@
 \x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
 \x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
 \x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x32\x30\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\
+\x22\x49\x63\x6f\x6e\x5f\x31\x32\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\
 \x3e\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\
-\x35\x36\x2c\x34\x38\x43\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\
-\x2c\x34\x38\x2c\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x32\
-\x35\x36\x73\x39\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\x2c\x32\x30\
-\x38\x2c\x32\x30\x38\x73\x32\x30\x38\x2d\x39\x33\x2e\x36\x30\x31\
-\x2c\x32\x30\x38\x2d\x32\x30\x38\x53\x33\x37\x30\x2e\x33\x39\x39\
-\x2c\x34\x38\x2c\x32\x35\x36\x2c\x34\x38\x7a\x20\x4d\x32\x35\x36\
-\x2c\x34\x32\x32\x2e\x33\x39\x39\x0d\x0a\x09\x09\x09\x63\x2d\x39\
-\x31\x2e\x35\x31\x38\x2c\x30\x2d\x31\x36\x36\x2e\x33\x39\x39\x2d\
-\x37\x34\x2e\x38\x38\x32\x2d\x31\x36\x36\x2e\x33\x39\x39\x2d\x31\
-\x36\x36\x2e\x33\x39\x39\x53\x31\x36\x34\x2e\x34\x38\x32\x2c\x38\
-\x39\x2e\x36\x2c\x32\x35\x36\x2c\x38\x39\x2e\x36\x53\x34\x32\x32\
-\x2e\x34\x2c\x31\x36\x34\x2e\x34\x38\x32\x2c\x34\x32\x32\x2e\x34\
-\x2c\x32\x35\x36\x53\x33\x34\x37\x2e\x35\x31\x38\x2c\x34\x32\x32\
-\x2e\x33\x39\x39\x2c\x32\x35\x36\x2c\x34\x32\x32\x2e\x33\x39\x39\
-\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\
-\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\x6c\
+\x35\x36\x2c\x36\x34\x43\x31\x35\x30\x2e\x34\x30\x31\x2c\x36\x34\
+\x2c\x36\x34\x2c\x31\x35\x30\x2e\x34\x30\x31\x2c\x36\x34\x2c\x32\
+\x35\x36\x63\x30\x2c\x31\x30\x35\x2e\x36\x30\x34\x2c\x38\x36\x2e\
+\x34\x30\x31\x2c\x31\x39\x32\x2c\x31\x39\x32\x2c\x31\x39\x32\x63\
+\x31\x38\x2e\x31\x33\x36\x2c\x30\x2c\x33\x32\x2d\x31\x33\x2e\x38\
+\x36\x34\x2c\x33\x32\x2d\x33\x32\x0d\x0a\x09\x09\x09\x63\x30\x2d\
+\x38\x2e\x35\x33\x31\x2d\x33\x2e\x31\x39\x38\x2d\x31\x36\x2d\x38\
+\x2e\x35\x33\x31\x2d\x32\x31\x2e\x33\x33\x33\x63\x2d\x35\x2e\x33\
+\x33\x33\x2d\x35\x2e\x33\x33\x34\x2d\x38\x2e\x35\x33\x31\x2d\x31\
+\x32\x2e\x38\x30\x33\x2d\x38\x2e\x35\x33\x31\x2d\x32\x31\x2e\x33\
+\x33\x34\x63\x30\x2d\x31\x38\x2e\x31\x33\x35\x2c\x31\x33\x2e\x38\
+\x36\x34\x2d\x33\x32\x2c\x33\x32\x2d\x33\x32\x68\x33\x38\x2e\x33\
+\x39\x36\x0d\x0a\x09\x09\x09\x63\x35\x38\x2e\x36\x36\x37\x2c\x30\
+\x2c\x31\x30\x36\x2e\x36\x36\x37\x2d\x34\x38\x2c\x31\x30\x36\x2e\
+\x36\x36\x37\x2d\x31\x30\x36\x2e\x36\x36\x36\x43\x34\x34\x38\x2c\
+\x31\x34\x30\x2e\x38\x30\x32\x2c\x33\x36\x31\x2e\x36\x30\x34\x2c\
+\x36\x34\x2c\x32\x35\x36\x2c\x36\x34\x7a\x20\x4d\x31\x33\x38\x2e\
+\x36\x36\x37\x2c\x32\x35\x36\x63\x2d\x31\x38\x2e\x31\x33\x36\x2c\
+\x30\x2d\x33\x32\x2d\x31\x33\x2e\x38\x36\x34\x2d\x33\x32\x2d\x33\
+\x32\x73\x31\x33\x2e\x38\x36\x34\x2d\x33\x32\x2c\x33\x32\x2d\x33\
+\x32\x0d\x0a\x09\x09\x09\x63\x31\x38\x2e\x31\x33\x35\x2c\x30\x2c\
+\x33\x32\x2c\x31\x33\x2e\x38\x36\x34\x2c\x33\x32\x2c\x33\x32\x53\
+\x31\x35\x36\x2e\x38\x30\x32\x2c\x32\x35\x36\x2c\x31\x33\x38\x2e\
+\x36\x36\x37\x2c\x32\x35\x36\x7a\x20\x4d\x32\x30\x32\x2e\x36\x36\
+\x37\x2c\x31\x37\x30\x2e\x36\x36\x37\x63\x2d\x31\x38\x2e\x31\x33\
+\x36\x2c\x30\x2d\x33\x32\x2d\x31\x33\x2e\x38\x36\x35\x2d\x33\x32\
+\x2d\x33\x32\x63\x30\x2d\x31\x38\x2e\x31\x33\x36\x2c\x31\x33\x2e\
+\x38\x36\x34\x2d\x33\x32\x2c\x33\x32\x2d\x33\x32\x0d\x0a\x09\x09\
+\x09\x63\x31\x38\x2e\x31\x33\x35\x2c\x30\x2c\x33\x32\x2c\x31\x33\
+\x2e\x38\x36\x34\x2c\x33\x32\x2c\x33\x32\x43\x32\x33\x34\x2e\x36\
+\x36\x37\x2c\x31\x35\x36\x2e\x38\x30\x32\x2c\x32\x32\x30\x2e\x38\
+\x30\x32\x2c\x31\x37\x30\x2e\x36\x36\x37\x2c\x32\x30\x32\x2e\x36\
+\x36\x37\x2c\x31\x37\x30\x2e\x36\x36\x37\x7a\x20\x4d\x33\x30\x39\
+\x2e\x33\x33\x33\x2c\x31\x37\x30\x2e\x36\x36\x37\x63\x2d\x31\x38\
+\x2e\x31\x33\x35\x2c\x30\x2d\x33\x32\x2d\x31\x33\x2e\x38\x36\x35\
+\x2d\x33\x32\x2d\x33\x32\x0d\x0a\x09\x09\x09\x63\x30\x2d\x31\x38\
+\x2e\x31\x33\x36\x2c\x31\x33\x2e\x38\x36\x35\x2d\x33\x32\x2c\x33\
+\x32\x2d\x33\x32\x63\x31\x38\x2e\x31\x33\x36\x2c\x30\x2c\x33\x32\
+\x2c\x31\x33\x2e\x38\x36\x34\x2c\x33\x32\x2c\x33\x32\x43\x33\x34\
+\x31\x2e\x33\x33\x33\x2c\x31\x35\x36\x2e\x38\x30\x32\x2c\x33\x32\
+\x37\x2e\x34\x36\x39\x2c\x31\x37\x30\x2e\x36\x36\x37\x2c\x33\x30\
+\x39\x2e\x33\x33\x33\x2c\x31\x37\x30\x2e\x36\x36\x37\x7a\x20\x4d\
+\x33\x37\x33\x2e\x33\x33\x33\x2c\x32\x35\x36\x0d\x0a\x09\x09\x09\
+\x63\x2d\x31\x38\x2e\x31\x33\x35\x2c\x30\x2d\x33\x32\x2d\x31\x33\
+\x2e\x38\x36\x34\x2d\x33\x32\x2d\x33\x32\x73\x31\x33\x2e\x38\x36\
+\x35\x2d\x33\x32\x2c\x33\x32\x2d\x33\x32\x63\x31\x38\x2e\x31\x33\
+\x36\x2c\x30\x2c\x33\x32\x2c\x31\x33\x2e\x38\x36\x34\x2c\x33\x32\
+\x2c\x33\x32\x53\x33\x39\x31\x2e\x34\x36\x39\x2c\x32\x35\x36\x2c\
+\x33\x37\x33\x2e\x33\x33\x33\x2c\x32\x35\x36\x7a\x22\x2f\x3e\x0d\
+\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
+\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x02\x7d\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
@@ -1388,32 +1887,17 @@
 \x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
 \x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
 \x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
-\x0d\x0a\x09\x09\x3c\x72\x65\x63\x74\x20\x78\x3d\x22\x31\x37\x38\
-\x2e\x38\x34\x36\x22\x20\x79\x3d\x22\x39\x32\x2e\x30\x38\x37\x22\
-\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\
-\x69\x78\x28\x2d\x30\x2e\x37\x30\x37\x31\x20\x2d\x30\x2e\x37\x30\
-\x37\x31\x20\x30\x2e\x37\x30\x37\x31\x20\x2d\x30\x2e\x37\x30\x37\
-\x31\x20\x32\x32\x34\x2e\x33\x34\x37\x36\x20\x36\x33\x31\x2e\x31\
-\x34\x39\x38\x29\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x38\
-\x2e\x30\x38\x35\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x33\x35\
-\x34\x2e\x30\x34\x39\x22\x2f\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\
-\x20\x64\x3d\x22\x4d\x34\x37\x31\x2e\x37\x32\x33\x2c\x38\x38\x2e\
-\x33\x39\x33\x6c\x2d\x34\x38\x2e\x31\x31\x35\x2d\x34\x38\x2e\x31\
-\x31\x34\x63\x2d\x31\x31\x2e\x37\x32\x33\x2d\x31\x31\x2e\x37\x32\
-\x34\x2d\x33\x31\x2e\x35\x35\x38\x2d\x31\x30\x2e\x38\x39\x36\x2d\
-\x34\x34\x2e\x33\x30\x34\x2c\x31\x2e\x38\x35\x6c\x2d\x34\x35\x2e\
-\x32\x30\x32\x2c\x34\x35\x2e\x32\x30\x33\x6c\x39\x30\x2e\x35\x36\
-\x39\x2c\x39\x30\x2e\x35\x36\x38\x6c\x34\x35\x2e\x32\x30\x32\x2d\
-\x34\x35\x2e\x32\x30\x32\x0d\x0a\x09\x09\x43\x34\x38\x32\x2e\x36\
-\x31\x36\x2c\x31\x31\x39\x2e\x39\x35\x32\x2c\x34\x38\x33\x2e\x34\
-\x34\x35\x2c\x31\x30\x30\x2e\x31\x31\x36\x2c\x34\x37\x31\x2e\x37\
-\x32\x33\x2c\x38\x38\x2e\x33\x39\x33\x7a\x22\x2f\x3e\x0d\x0a\x09\
-\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\
-\x22\x36\x34\x2e\x30\x32\x31\x2c\x33\x36\x33\x2e\x32\x35\x32\x20\
-\x33\x32\x2c\x34\x38\x30\x20\x31\x34\x38\x2e\x37\x33\x37\x2c\x34\
-\x34\x37\x2e\x39\x37\x39\x20\x09\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\
-\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
+\x22\x49\x63\x6f\x6e\x5f\x38\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
+\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x38\x35\
+\x2c\x32\x37\x37\x2e\x33\x37\x35\x68\x32\x35\x39\x2e\x37\x30\x34\
+\x4c\x32\x32\x35\x2e\x30\x30\x32\x2c\x33\x39\x37\x2e\x30\x37\x37\
+\x4c\x32\x35\x36\x2c\x34\x32\x37\x6c\x31\x37\x31\x2d\x31\x37\x31\
+\x4c\x32\x35\x36\x2c\x38\x35\x6c\x2d\x32\x39\x2e\x39\x32\x32\x2c\
+\x32\x39\x2e\x39\x32\x34\x6c\x31\x31\x38\x2e\x36\x32\x36\x2c\x31\
+\x31\x39\x2e\x37\x30\x31\x48\x38\x35\x56\x32\x37\x37\x2e\x33\x37\
+\x35\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
+\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
 \x00\x00\x04\x4e\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
@@ -1485,7 +1969,7 @@
 \x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\
 \x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\
 \x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
-\x00\x00\x02\xf7\
+\x00\x00\x03\x52\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
@@ -1512,146 +1996,35 @@
 \x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
 \x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
 \x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
-\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
-\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
-\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
-\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
-\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x31\x37\x2e\x34\
-\x2c\x32\x32\x34\x48\x32\x38\x38\x56\x39\x34\x2e\x36\x63\x30\x2d\
-\x31\x36\x2e\x39\x2d\x31\x34\x2e\x33\x2d\x33\x30\x2e\x36\x2d\x33\
-\x32\x2d\x33\x30\x2e\x36\x63\x2d\x31\x37\x2e\x37\x2c\x30\x2d\x33\
-\x32\x2c\x31\x33\x2e\x37\x2d\x33\x32\x2c\x33\x30\x2e\x36\x56\x32\
-\x32\x34\x48\x39\x34\x2e\x36\x43\x37\x37\x2e\x37\x2c\x32\x32\x34\
-\x2c\x36\x34\x2c\x32\x33\x38\x2e\x33\x2c\x36\x34\x2c\x32\x35\x36\
-\x0d\x0a\x09\x63\x30\x2c\x31\x37\x2e\x37\x2c\x31\x33\x2e\x37\x2c\
-\x33\x32\x2c\x33\x30\x2e\x36\x2c\x33\x32\x48\x32\x32\x34\x76\x31\
-\x32\x39\x2e\x34\x63\x30\x2c\x31\x36\x2e\x39\x2c\x31\x34\x2e\x33\
-\x2c\x33\x30\x2e\x36\x2c\x33\x32\x2c\x33\x30\x2e\x36\x63\x31\x37\
-\x2e\x37\x2c\x30\x2c\x33\x32\x2d\x31\x33\x2e\x37\x2c\x33\x32\x2d\
-\x33\x30\x2e\x36\x56\x32\x38\x38\x68\x31\x32\x39\x2e\x34\x63\x31\
-\x36\x2e\x39\x2c\x30\x2c\x33\x30\x2e\x36\x2d\x31\x34\x2e\x33\x2c\
-\x33\x30\x2e\x36\x2d\x33\x32\x0d\x0a\x09\x43\x34\x34\x38\x2c\x32\
-\x33\x38\x2e\x33\x2c\x34\x33\x34\x2e\x33\x2c\x32\x32\x34\x2c\x34\
-\x31\x37\x2e\x34\x2c\x32\x32\x34\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\
-\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\x0c\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x30\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x43\x68\x65\x63\x6b\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\x20\x79\
-\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\x77\x42\x6f\
-\x78\x3d\x22\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\x65\x6e\
-\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3d\
-\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x20\
-\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\
-\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\
-\x4d\x38\x2e\x32\x39\x34\x2c\x31\x36\x2e\x39\x39\x38\x63\x2d\x30\
-\x2e\x34\x33\x35\x2c\x30\x2d\x30\x2e\x38\x34\x37\x2d\x30\x2e\x32\
-\x30\x33\x2d\x31\x2e\x31\x31\x31\x2d\x30\x2e\x35\x35\x33\x4c\x33\
-\x2e\x36\x31\x2c\x31\x31\x2e\x37\x32\x34\x63\x2d\x30\x2e\x34\x36\
-\x35\x2d\x30\x2e\x36\x31\x33\x2d\x30\x2e\x33\x34\x34\x2d\x31\x2e\
-\x34\x38\x36\x2c\x30\x2e\x32\x37\x2d\x31\x2e\x39\x35\x31\x0d\x0a\
-\x09\x63\x30\x2e\x36\x31\x35\x2d\x30\x2e\x34\x36\x37\x2c\x31\x2e\
-\x34\x38\x38\x2d\x30\x2e\x33\x34\x34\x2c\x31\x2e\x39\x35\x33\x2c\
-\x30\x2e\x32\x37\x6c\x32\x2e\x33\x35\x31\x2c\x33\x2e\x31\x30\x34\
-\x6c\x35\x2e\x39\x31\x31\x2d\x39\x2e\x34\x39\x32\x63\x30\x2e\x34\
-\x30\x37\x2d\x30\x2e\x36\x35\x32\x2c\x31\x2e\x32\x36\x37\x2d\x30\
-\x2e\x38\x35\x32\x2c\x31\x2e\x39\x32\x31\x2d\x30\x2e\x34\x34\x35\
-\x0d\x0a\x09\x63\x30\x2e\x36\x35\x33\x2c\x30\x2e\x34\x30\x36\x2c\
-\x30\x2e\x38\x35\x34\x2c\x31\x2e\x32\x36\x36\x2c\x30\x2e\x34\x34\
-\x36\x2c\x31\x2e\x39\x32\x4c\x39\x2e\x34\x37\x38\x2c\x31\x36\x2e\
-\x33\x34\x63\x2d\x30\x2e\x32\x34\x32\x2c\x30\x2e\x33\x39\x31\x2d\
-\x30\x2e\x36\x36\x31\x2c\x30\x2e\x36\x33\x35\x2d\x31\x2e\x31\x32\
-\x2c\x30\x2e\x36\x35\x36\x43\x38\x2e\x33\x33\x36\x2c\x31\x36\x2e\
-\x39\x39\x38\x2c\x38\x2e\x33\x31\x36\x2c\x31\x36\x2e\x39\x39\x38\
-\x2c\x38\x2e\x32\x39\x34\x2c\x31\x36\x2e\x39\x39\x38\x7a\x22\x2f\
-\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\xf5\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x43\x68\x65\x76\x72\x6f\x6e\x5f\x63\x69\x72\x63\x6c\x65\
-\x64\x5f\x6c\x65\x66\x74\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\
-\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\
-\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\
-\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\
-\x6c\x69\x6e\x6b\x22\x0d\x0a\x09\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
 \x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
 \x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
 \x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
 \x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x74\x72\x61\
-\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\
-\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x0d\
-\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\x31\x2e\x33\x30\
-\x32\x2c\x36\x2e\x37\x37\x36\x63\x2d\x30\x2e\x31\x39\x36\x2d\x30\
-\x2e\x31\x39\x37\x2d\x30\x2e\x35\x31\x35\x2d\x30\x2e\x31\x39\x37\
-\x2d\x30\x2e\x37\x31\x2c\x30\x4c\x37\x2e\x37\x38\x35\x2c\x39\x2e\
-\x36\x34\x31\x63\x2d\x30\x2e\x31\x39\x36\x2c\x30\x2e\x31\x39\x39\
-\x2d\x30\x2e\x31\x39\x36\x2c\x30\x2e\x35\x32\x2c\x30\x2c\x30\x2e\
-\x37\x31\x37\x6c\x32\x2e\x38\x30\x37\x2c\x32\x2e\x38\x36\x34\x0d\
-\x0a\x09\x63\x30\x2e\x31\x39\x35\x2c\x30\x2e\x31\x39\x39\x2c\x30\
-\x2e\x35\x31\x34\x2c\x30\x2e\x31\x39\x38\x2c\x30\x2e\x37\x31\x2c\
-\x30\x63\x30\x2e\x31\x39\x36\x2d\x30\x2e\x31\x39\x37\x2c\x30\x2e\
-\x31\x39\x36\x2d\x30\x2e\x35\x31\x38\x2c\x30\x2d\x30\x2e\x37\x31\
-\x37\x4c\x39\x2c\x31\x30\x6c\x32\x2e\x33\x30\x32\x2d\x32\x2e\x35\
-\x30\x36\x43\x31\x31\x2e\x34\x39\x38\x2c\x37\x2e\x32\x39\x36\x2c\
-\x31\x31\x2e\x34\x39\x38\x2c\x36\x2e\x39\x37\x36\x2c\x31\x31\x2e\
-\x33\x30\x32\x2c\x36\x2e\x37\x37\x36\x7a\x0d\x0a\x09\x20\x4d\x31\
-\x30\x2c\x30\x2e\x34\x63\x2d\x35\x2e\x33\x30\x32\x2c\x30\x2d\x39\
-\x2e\x36\x2c\x34\x2e\x32\x39\x38\x2d\x39\x2e\x36\x2c\x39\x2e\x36\
-\x63\x30\x2c\x35\x2e\x33\x30\x33\x2c\x34\x2e\x32\x39\x38\x2c\x39\
-\x2e\x36\x2c\x39\x2e\x36\x2c\x39\x2e\x36\x73\x39\x2e\x36\x2d\x34\
-\x2e\x32\x39\x37\x2c\x39\x2e\x36\x2d\x39\x2e\x36\x43\x31\x39\x2e\
-\x36\x2c\x34\x2e\x36\x39\x38\x2c\x31\x35\x2e\x33\x30\x32\x2c\x30\
-\x2e\x34\x2c\x31\x30\x2c\x30\x2e\x34\x7a\x20\x4d\x31\x30\x2c\x31\
-\x38\x2e\x33\x35\x34\x0d\x0a\x09\x63\x2d\x34\x2e\x36\x31\x35\x2c\
-\x30\x2d\x38\x2e\x33\x35\x34\x2d\x33\x2e\x37\x34\x2d\x38\x2e\x33\
-\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x30\x2d\x34\x2e\x36\x31\x34\
-\x2c\x33\x2e\x37\x33\x39\x2d\x38\x2e\x33\x35\x34\x2c\x38\x2e\x33\
-\x35\x34\x2d\x38\x2e\x33\x35\x34\x63\x34\x2e\x36\x31\x33\x2c\x30\
-\x2c\x38\x2e\x33\x35\x34\x2c\x33\x2e\x37\x34\x2c\x38\x2e\x33\x35\
-\x34\x2c\x38\x2e\x33\x35\x34\x0d\x0a\x09\x43\x31\x38\x2e\x33\x35\
-\x34\x2c\x31\x34\x2e\x36\x31\x34\x2c\x31\x34\x2e\x36\x31\x33\x2c\
-\x31\x38\x2e\x33\x35\x34\x2c\x31\x30\x2c\x31\x38\x2e\x33\x35\x34\
-\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\
-\x67\x3e\x0d\x0a\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\
+\x64\x3d\x22\x4d\x34\x33\x37\x2e\x33\x33\x34\x2c\x31\x34\x34\x48\
+\x32\x35\x36\x2e\x30\x30\x36\x6c\x2d\x34\x32\x2e\x36\x36\x38\x2d\
+\x34\x38\x48\x37\x34\x2e\x36\x36\x36\x43\x35\x31\x2e\x31\x39\x37\
+\x2c\x39\x36\x2c\x33\x32\x2c\x31\x31\x35\x2e\x31\x39\x38\x2c\x33\
+\x32\x2c\x31\x33\x38\x2e\x36\x36\x37\x76\x32\x33\x34\x2e\x36\x36\
+\x36\x43\x33\x32\x2c\x33\x39\x36\x2e\x38\x30\x32\x2c\x35\x31\x2e\
+\x31\x39\x37\x2c\x34\x31\x36\x2c\x37\x34\x2e\x36\x36\x36\x2c\x34\
+\x31\x36\x68\x33\x36\x32\x2e\x36\x36\x38\x0d\x0a\x09\x43\x34\x36\
+\x30\x2e\x38\x30\x33\x2c\x34\x31\x36\x2c\x34\x38\x30\x2c\x33\x39\
+\x36\x2e\x38\x30\x32\x2c\x34\x38\x30\x2c\x33\x37\x33\x2e\x33\x33\
+\x33\x56\x31\x38\x36\x2e\x36\x36\x37\x43\x34\x38\x30\x2c\x31\x36\
+\x33\x2e\x31\x39\x38\x2c\x34\x36\x30\x2e\x38\x30\x33\x2c\x31\x34\
+\x34\x2c\x34\x33\x37\x2e\x33\x33\x34\x2c\x31\x34\x34\x7a\x20\x4d\
+\x34\x34\x38\x2c\x33\x37\x33\x2e\x33\x33\x33\x0d\x0a\x09\x63\x30\
+\x2c\x35\x2e\x37\x38\x32\x2d\x34\x2e\x38\x38\x35\x2c\x31\x30\x2e\
+\x36\x36\x37\x2d\x31\x30\x2e\x36\x36\x36\x2c\x31\x30\x2e\x36\x36\
+\x37\x48\x37\x34\x2e\x36\x36\x36\x43\x36\x38\x2e\x38\x38\x34\x2c\
+\x33\x38\x34\x2c\x36\x34\x2c\x33\x37\x39\x2e\x31\x31\x35\x2c\x36\
+\x34\x2c\x33\x37\x33\x2e\x33\x33\x33\x56\x31\x37\x36\x68\x33\x37\
+\x33\x2e\x33\x33\x34\x63\x35\x2e\x37\x38\x31\x2c\x30\x2c\x31\x30\
+\x2e\x36\x36\x36\x2c\x34\x2e\x38\x38\x35\x2c\x31\x30\x2e\x36\x36\
+\x36\x2c\x31\x30\x2e\x36\x36\x37\x0d\x0a\x09\x56\x33\x37\x33\x2e\
+\x33\x33\x33\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
+\x0a\
 \x00\x00\x03\x22\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -1705,7 +2078,7 @@
 \x35\x2c\x33\x39\x32\x2c\x32\x35\x36\x2c\x33\x39\x32\x7a\x22\x2f\
 \x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\
 \x0a\
-\x00\x00\x02\xb7\
+\x00\x00\x03\x6c\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
@@ -1736,161 +2109,70 @@
 \x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
 \x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
 \x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x35\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
-\x0d\x0a\x09\x09\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\
-\x6e\x74\x73\x3d\x22\x34\x30\x35\x2c\x31\x33\x36\x2e\x37\x39\x38\
-\x20\x33\x37\x35\x2e\x32\x30\x32\x2c\x31\x30\x37\x20\x32\x35\x36\
-\x2c\x32\x32\x36\x2e\x32\x30\x32\x20\x31\x33\x36\x2e\x37\x39\x38\
-\x2c\x31\x30\x37\x20\x31\x30\x37\x2c\x31\x33\x36\x2e\x37\x39\x38\
-\x20\x32\x32\x36\x2e\x32\x30\x32\x2c\x32\x35\x36\x20\x31\x30\x37\
-\x2c\x33\x37\x35\x2e\x32\x30\x32\x20\x31\x33\x36\x2e\x37\x39\x38\
-\x2c\x34\x30\x35\x20\x32\x35\x36\x2c\x32\x38\x35\x2e\x37\x39\x38\
-\x20\x0d\x0a\x09\x09\x09\x33\x37\x35\x2e\x32\x30\x32\x2c\x34\x30\
-\x35\x20\x34\x30\x35\x2c\x33\x37\x35\x2e\x32\x30\x32\x20\x32\x38\
-\x35\x2e\x37\x39\x38\x2c\x32\x35\x36\x20\x09\x09\x22\x2f\x3e\x0d\
-\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\
-\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x02\x79\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x5f\x31\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\
-\x0d\x0a\x09\x09\x3c\x67\x3e\x0d\x0a\x09\x09\x09\x3c\x70\x6f\x6c\
-\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\x22\x31\x38\x36\
-\x2e\x33\x30\x31\x2c\x33\x33\x39\x2e\x38\x39\x33\x20\x39\x36\x2c\
-\x32\x34\x39\x2e\x34\x36\x31\x20\x36\x34\x2c\x32\x37\x39\x2e\x39\
-\x36\x38\x20\x31\x38\x36\x2e\x33\x30\x31\x2c\x34\x30\x32\x20\x34\
-\x34\x38\x2c\x31\x34\x30\x2e\x35\x30\x36\x20\x34\x31\x36\x2c\x31\
-\x31\x30\x20\x09\x09\x09\x22\x2f\x3e\x0d\x0a\x09\x09\x3c\x2f\x67\
-\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\
-\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\xeb\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x73\
-\x74\x79\x6c\x65\x3d\x22\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\
-\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
-\x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
-\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
-\x0a\x3c\x67\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\
-\x4d\x32\x35\x36\x2c\x31\x32\x38\x63\x2d\x38\x31\x2e\x39\x2c\x30\
-\x2d\x31\x34\x35\x2e\x37\x2c\x34\x38\x2e\x38\x2d\x32\x32\x34\x2c\
-\x31\x32\x38\x63\x36\x37\x2e\x34\x2c\x36\x37\x2e\x37\x2c\x31\x32\
-\x34\x2c\x31\x32\x38\x2c\x32\x32\x34\x2c\x31\x32\x38\x63\x39\x39\
-\x2e\x39\x2c\x30\x2c\x31\x37\x33\x2e\x34\x2d\x37\x36\x2e\x34\x2c\
-\x32\x32\x34\x2d\x31\x32\x36\x2e\x36\x0d\x0a\x09\x09\x43\x34\x32\
-\x38\x2e\x32\x2c\x31\x39\x38\x2e\x36\x2c\x33\x35\x34\x2e\x38\x2c\
-\x31\x32\x38\x2c\x32\x35\x36\x2c\x31\x32\x38\x7a\x20\x4d\x32\x35\
-\x36\x2c\x33\x34\x37\x2e\x33\x63\x2d\x34\x39\x2e\x34\x2c\x30\x2d\
-\x38\x39\x2e\x36\x2d\x34\x31\x2d\x38\x39\x2e\x36\x2d\x39\x31\x2e\
-\x33\x63\x30\x2d\x35\x30\x2e\x34\x2c\x34\x30\x2e\x32\x2d\x39\x31\
-\x2e\x33\x2c\x38\x39\x2e\x36\x2d\x39\x31\x2e\x33\x73\x38\x39\x2e\
-\x36\x2c\x34\x31\x2c\x38\x39\x2e\x36\x2c\x39\x31\x2e\x33\x0d\x0a\
-\x09\x09\x43\x33\x34\x35\x2e\x36\x2c\x33\x30\x36\x2e\x34\x2c\x33\
-\x30\x35\x2e\x34\x2c\x33\x34\x37\x2e\x33\x2c\x32\x35\x36\x2c\x33\
-\x34\x37\x2e\x33\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x67\x3e\x0d\x0a\
-\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\
-\x32\x32\x34\x63\x30\x2d\x37\x2e\x39\x2c\x32\x2e\x39\x2d\x31\x35\
-\x2e\x31\x2c\x37\x2e\x36\x2d\x32\x30\x2e\x37\x63\x2d\x32\x2e\x35\
-\x2d\x30\x2e\x34\x2d\x35\x2d\x30\x2e\x36\x2d\x37\x2e\x36\x2d\x30\
-\x2e\x36\x63\x2d\x32\x38\x2e\x38\x2c\x30\x2d\x35\x32\x2e\x33\x2c\
-\x32\x33\x2e\x39\x2d\x35\x32\x2e\x33\x2c\x35\x33\x2e\x33\x63\x30\
-\x2c\x32\x39\x2e\x34\x2c\x32\x33\x2e\x35\x2c\x35\x33\x2e\x33\x2c\
-\x35\x32\x2e\x33\x2c\x35\x33\x2e\x33\x0d\x0a\x09\x09\x09\x73\x35\
-\x32\x2e\x33\x2d\x32\x33\x2e\x39\x2c\x35\x32\x2e\x33\x2d\x35\x33\
-\x2e\x33\x63\x30\x2d\x32\x2e\x33\x2d\x30\x2e\x32\x2d\x34\x2e\x36\
-\x2d\x30\x2e\x34\x2d\x36\x2e\x39\x63\x2d\x35\x2e\x35\x2c\x34\x2e\
-\x33\x2d\x31\x32\x2e\x33\x2c\x36\x2e\x39\x2d\x31\x39\x2e\x38\x2c\
-\x36\x2e\x39\x43\x32\x37\x30\x2e\x33\x2c\x32\x35\x36\x2c\x32\x35\
-\x36\x2c\x32\x34\x31\x2e\x37\x2c\x32\x35\x36\x2c\x32\x32\x34\x7a\
-\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\
-\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x01\xdd\
+\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x3e\x0d\x0a\x09\
+\x0d\x0a\x09\x09\x3c\x72\x65\x63\x74\x20\x78\x3d\x22\x31\x37\x38\
+\x2e\x38\x34\x36\x22\x20\x79\x3d\x22\x39\x32\x2e\x30\x38\x37\x22\
+\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\
+\x69\x78\x28\x2d\x30\x2e\x37\x30\x37\x31\x20\x2d\x30\x2e\x37\x30\
+\x37\x31\x20\x30\x2e\x37\x30\x37\x31\x20\x2d\x30\x2e\x37\x30\x37\
+\x31\x20\x32\x32\x34\x2e\x33\x34\x37\x36\x20\x36\x33\x31\x2e\x31\
+\x34\x39\x38\x29\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x38\
+\x2e\x30\x38\x35\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x33\x35\
+\x34\x2e\x30\x34\x39\x22\x2f\x3e\x0d\x0a\x09\x3c\x70\x61\x74\x68\
+\x20\x64\x3d\x22\x4d\x34\x37\x31\x2e\x37\x32\x33\x2c\x38\x38\x2e\
+\x33\x39\x33\x6c\x2d\x34\x38\x2e\x31\x31\x35\x2d\x34\x38\x2e\x31\
+\x31\x34\x63\x2d\x31\x31\x2e\x37\x32\x33\x2d\x31\x31\x2e\x37\x32\
+\x34\x2d\x33\x31\x2e\x35\x35\x38\x2d\x31\x30\x2e\x38\x39\x36\x2d\
+\x34\x34\x2e\x33\x30\x34\x2c\x31\x2e\x38\x35\x6c\x2d\x34\x35\x2e\
+\x32\x30\x32\x2c\x34\x35\x2e\x32\x30\x33\x6c\x39\x30\x2e\x35\x36\
+\x39\x2c\x39\x30\x2e\x35\x36\x38\x6c\x34\x35\x2e\x32\x30\x32\x2d\
+\x34\x35\x2e\x32\x30\x32\x0d\x0a\x09\x09\x43\x34\x38\x32\x2e\x36\
+\x31\x36\x2c\x31\x31\x39\x2e\x39\x35\x32\x2c\x34\x38\x33\x2e\x34\
+\x34\x35\x2c\x31\x30\x30\x2e\x31\x31\x36\x2c\x34\x37\x31\x2e\x37\
+\x32\x33\x2c\x38\x38\x2e\x33\x39\x33\x7a\x22\x2f\x3e\x0d\x0a\x09\
+\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\x3d\
+\x22\x36\x34\x2e\x30\x32\x31\x2c\x33\x36\x33\x2e\x32\x35\x32\x20\
+\x33\x32\x2c\x34\x38\x30\x20\x31\x34\x38\x2e\x37\x33\x37\x2c\x34\
+\x34\x37\x2e\x39\x37\x39\x20\x09\x22\x2f\x3e\x0d\x0a\x3c\x2f\x67\
+\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x02\x21\
 \x00\
-\x00\x06\xe4\x78\x9c\xcd\x54\x4d\x6f\x9b\x40\x10\x3d\x13\x29\xff\
-\x61\xba\xb7\x4a\xec\x17\xc4\xd4\xa6\xa6\x51\xfd\x21\xcb\x52\x9a\
-\x58\x6a\xea\xaa\xa7\x0a\xc3\x16\x50\x28\x20\x58\xc0\xce\xaf\xef\
-\xee\x92\x54\x51\x95\xfa\x18\xfb\xb0\x33\xda\x79\x6f\xde\xbc\x65\
-\x24\xa6\xd7\xfb\xdf\x39\x74\xa2\x6e\xb2\xb2\x08\x10\x27\x0c\x81\
-\x28\xa2\x32\xce\x8a\x24\x40\xad\xfc\x85\xc7\xe8\xfa\xd3\xe5\xc5\
-\xf4\x1d\xc6\xb0\x12\x85\xa8\x43\x59\xd6\x3e\x7c\x8e\xcb\x9d\x80\
-\x75\x9e\xb7\x8d\x34\x25\xe0\x1e\x71\x08\xb7\xe1\xeb\x76\x05\xcb\
-\x7d\x55\xd6\x12\x36\x79\x9b\xe0\x75\x01\xc4\x14\xb7\xc3\x10\x1f\
-\x3c\xc2\x18\xcc\xda\x2c\x8f\x81\xbd\x07\xc0\xd8\xe8\x2f\xee\xe6\
-\xf7\x3f\x36\x4b\x68\xba\x04\x36\xdf\x66\x37\xeb\x39\x20\x4c\xe9\
-\x77\x77\x4e\xe9\xe2\x7e\x61\x24\x38\xe1\x94\x2e\x6f\x11\xa0\x54\
-\xca\xca\xa7\xb4\xef\x7b\xd2\xbb\xa4\xac\x13\xba\xaa\xc3\x2a\xcd\
-\xa2\x86\x2a\x22\xd5\x44\xd5\x44\x95\x18\xe7\x24\x96\x31\xd2\x33\
-\xb4\xf4\x8b\xa7\x72\x04\x59\x1c\xa0\x9b\xf0\x20\xea\x9f\xea\xa2\
-\xbe\x44\xd1\x04\xaf\x48\x3b\x8c\x31\x2d\xf5\x44\xf1\xf7\x79\x56\
-\x3c\xbc\x46\xe4\x93\xc9\x84\x1a\x54\x51\x03\xc4\xaa\x3d\x82\xc3\
-\x90\x2f\x2f\x2c\xe8\xb3\x58\xa6\x01\x1a\x71\x47\x03\xa9\xc8\x92\
-\x54\xfe\xbd\x76\x99\xe8\x67\xa5\xee\x02\x06\xaa\xa6\x0f\x82\x46\
-\x1e\x72\x11\x20\x51\x84\xbb\x5c\xe0\x5d\x18\x3d\x24\x75\xd9\x16\
-\xb1\x5f\x88\x1e\x5e\x30\x3f\x1a\x6f\x7e\x53\x85\x91\xa2\x57\xb5\
-\x68\x44\xdd\x09\xf3\xea\x44\x05\x6b\x88\xd6\xb4\x0a\x65\x0a\xea\
-\xd1\x5f\xb8\xc7\x6c\x3e\x72\x89\x1b\x31\xdb\x25\x1f\xb0\x6b\x7b\
-\x2a\xaa\xa3\x73\x8a\x47\x8c\x8c\x22\xac\x00\x9b\xe9\x22\x76\xf1\
-\x13\xdc\x0d\x10\x33\x98\xfb\xdc\xa0\x73\x6a\x00\xd3\xa2\x4b\xb6\
-\x51\xd4\x67\x6b\xe6\x3c\xea\x4f\x60\x59\xf4\x1f\x1f\xce\x78\x7c\
-\x16\x3e\xae\xb8\x77\x3a\x1f\x53\xfa\xff\x25\x39\x63\xfe\x26\xa6\
-\xcc\x9c\x23\x4b\x3a\x07\x1f\x7a\x49\x27\xf3\x71\x6c\x49\x57\x6c\
-\xf2\x26\xa6\xcc\x9c\x23\x4b\x3a\x07\x1f\x7a\x49\x27\xf3\x31\x2c\
-\xe9\x39\xaa\x7f\xb6\xca\x7f\x00\x99\x18\x96\x19\
-\x00\x00\x02\x7f\
+\x00\x07\xaf\x78\x9c\xdd\x55\x4d\x6f\x9c\x30\x10\xbd\xf7\x57\x4c\
+\xd5\x83\xdb\x03\xc6\xdf\x86\x28\x24\x52\x57\xea\x29\xbd\x25\x97\
+\xde\x68\xf0\x82\x9b\x5d\x58\x01\x5d\xb6\xff\xbe\x66\xd7\x60\x4a\
+\xaa\xf4\x92\x43\x15\x90\x30\xf3\x18\xbf\x99\xe7\xf1\x98\xeb\xdb\
+\xd3\x7e\x07\x47\xd3\x76\xb6\xa9\x33\x44\x31\x41\x60\xea\xc7\xa6\
+\xb0\x75\x99\xa1\x87\xfb\x2f\x51\x82\x6e\x6f\xde\x5d\xbf\x8f\x22\
+\xb8\xaf\x6c\x07\x5b\xbb\x33\x30\xe4\x1d\x94\xa6\x36\x6d\xde\x9b\
+\x02\xbe\xff\x82\xe2\x68\xbb\x63\xb9\x07\x86\x13\x88\x22\xe7\xef\
+\xac\x25\x2b\x45\xe0\xe2\xd4\x5d\x86\xaa\xbe\x3f\x5c\xc5\xf1\x30\
+\x0c\x78\xe0\xb8\x69\xcb\x98\x11\x42\x62\xe7\xef\x5d\xae\x4e\x3b\
+\x5b\x3f\xfd\xcd\x91\xa6\x69\x1a\x9f\xbf\x22\x18\x6c\xd1\x57\x19\
+\x52\x1c\x3b\x50\x1d\x7a\x04\x95\xb1\x65\xd5\x4f\x90\x1e\xa1\xa3\
+\x35\xc3\xe7\xe6\x94\x21\xa9\xb0\x20\xa9\x00\xc9\x71\x22\x13\x0e\
+\x7e\x9a\x1f\x35\x72\x09\x97\x60\x8b\x0c\x1d\xf2\xd2\xd0\x8b\xd9\
+\xb7\x79\xdd\x6d\x9b\x76\x9f\xa1\x7d\xde\xb7\xf6\xf4\x91\x38\x67\
+\xc5\x94\x00\x32\xde\x93\x31\x71\x53\xaa\x47\xf2\x4f\xe3\xec\x43\
+\xde\x57\xe0\xe8\xbe\x42\x8a\xb9\xd0\x82\x41\xc4\x38\x26\x94\xde\
+\x05\xc0\xbf\x3c\x47\x36\xcf\x90\x7f\x03\x8b\x39\x12\x53\x29\x29\
+\x05\x9a\x62\x29\x38\x85\x88\x62\x2d\x95\x54\xc0\x19\xa6\x6c\x36\
+\x37\x20\x04\x56\xa9\x4a\x83\x83\x14\x38\x49\x99\x0a\x14\x33\x30\
+\xe7\xfa\x02\x32\x09\x9c\x01\xae\xb0\xd2\x42\x6e\x02\x22\x08\x4e\
+\x94\x4a\x42\x64\xf7\xc2\x94\x14\x53\x6a\xde\xdc\x84\xdc\x27\x87\
+\x59\xdd\x44\x31\x03\x3e\xca\xdd\x7a\xa5\xbf\xa1\x71\xab\xee\x32\
+\xf4\x41\x6f\xc7\x1b\xc5\xae\x2e\x71\xf9\x8a\xa5\x0d\x42\x53\xac\
+\x29\x49\x97\x42\xdd\xbe\x22\x9c\x2d\x84\x6a\xcc\x09\xd5\xb3\xd0\
+\x8b\xb9\x14\xea\x1d\x82\x50\x4f\x11\x84\x4e\x51\x02\x22\xb1\xa4\
+\x89\x0c\x24\x17\x76\x1f\xe3\x3c\x2c\xaa\x7c\x81\x43\xd2\x7e\xf2\
+\x5a\xc5\xbc\x6e\x75\x53\x1b\x04\x5d\xdf\x36\x4f\xc6\xad\x22\x39\
+\x5f\x13\x10\xb9\x2e\x34\x8f\xf9\x21\x43\x6d\xf3\xb3\x2e\xfe\x80\
+\x7f\x34\xb6\x5e\xe3\x7b\xdb\x9b\x76\x67\xdd\xe0\x4e\x03\x82\x09\
+\xd7\x72\xfe\xe6\x5b\x99\xbb\x7c\x38\x65\xaf\x5f\xa7\xf5\x0a\xbe\
+\xe1\x1e\xf4\x0a\xdf\x5c\x09\x5f\x68\x35\xc9\x30\x4b\xf4\xe2\x4c\
+\x51\x0c\x8b\x84\xcf\x67\x8a\x37\x17\xad\x36\x39\x84\x6a\x79\x8a\
+\xf5\x46\xf9\x6f\x96\xf1\xf2\x70\xbf\xc8\x9b\xdf\xf9\x80\xe2\xe1\
+\
+\x00\x00\x02\xf7\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
@@ -1922,26 +2204,50 @@
 \x6b\x67\x72\x6f\x75\x6e\x64\x3a\x6e\x65\x77\x20\x30\x20\x30\x20\
 \x35\x31\x32\x20\x35\x31\x32\x3b\x22\x20\x78\x6d\x6c\x3a\x73\x70\
 \x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\
-\x0a\x3c\x70\x6f\x6c\x79\x67\x6f\x6e\x20\x70\x6f\x69\x6e\x74\x73\
-\x3d\x22\x32\x38\x38\x2c\x39\x36\x20\x33\x33\x37\x2e\x39\x2c\x31\
-\x34\x35\x2e\x39\x20\x32\x37\x34\x2c\x32\x30\x39\x2e\x37\x20\x32\
-\x37\x34\x2c\x32\x30\x39\x2e\x37\x20\x31\x34\x35\x2e\x39\x2c\x33\
-\x33\x37\x2e\x39\x20\x39\x36\x2c\x32\x38\x38\x20\x39\x36\x2c\x34\
-\x31\x36\x20\x32\x32\x34\x2c\x34\x31\x36\x20\x31\x37\x34\x2e\x31\
-\x2c\x33\x36\x36\x2e\x31\x20\x33\x35\x37\x2e\x34\x2c\x31\x38\x32\
-\x2e\x39\x20\x33\x36\x36\x2e\x31\x2c\x31\x37\x34\x2e\x31\x20\x0d\
-\x0a\x09\x34\x31\x36\x2c\x32\x32\x34\x20\x34\x31\x36\x2c\x39\x36\
-\x20\x22\x2f\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x00\x6c\
+\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x31\x37\x2e\x34\
+\x2c\x32\x32\x34\x48\x32\x38\x38\x56\x39\x34\x2e\x36\x63\x30\x2d\
+\x31\x36\x2e\x39\x2d\x31\x34\x2e\x33\x2d\x33\x30\x2e\x36\x2d\x33\
+\x32\x2d\x33\x30\x2e\x36\x63\x2d\x31\x37\x2e\x37\x2c\x30\x2d\x33\
+\x32\x2c\x31\x33\x2e\x37\x2d\x33\x32\x2c\x33\x30\x2e\x36\x56\x32\
+\x32\x34\x48\x39\x34\x2e\x36\x43\x37\x37\x2e\x37\x2c\x32\x32\x34\
+\x2c\x36\x34\x2c\x32\x33\x38\x2e\x33\x2c\x36\x34\x2c\x32\x35\x36\
+\x0d\x0a\x09\x63\x30\x2c\x31\x37\x2e\x37\x2c\x31\x33\x2e\x37\x2c\
+\x33\x32\x2c\x33\x30\x2e\x36\x2c\x33\x32\x48\x32\x32\x34\x76\x31\
+\x32\x39\x2e\x34\x63\x30\x2c\x31\x36\x2e\x39\x2c\x31\x34\x2e\x33\
+\x2c\x33\x30\x2e\x36\x2c\x33\x32\x2c\x33\x30\x2e\x36\x63\x31\x37\
+\x2e\x37\x2c\x30\x2c\x33\x32\x2d\x31\x33\x2e\x37\x2c\x33\x32\x2d\
+\x33\x30\x2e\x36\x56\x32\x38\x38\x68\x31\x32\x39\x2e\x34\x63\x31\
+\x36\x2e\x39\x2c\x30\x2c\x33\x30\x2e\x36\x2d\x31\x34\x2e\x33\x2c\
+\x33\x30\x2e\x36\x2d\x33\x32\x0d\x0a\x09\x43\x34\x34\x38\x2c\x32\
+\x33\x38\x2e\x33\x2c\x34\x33\x34\x2e\x33\x2c\x32\x32\x34\x2c\x34\
+\x31\x37\x2e\x34\x2c\x32\x32\x34\x7a\x22\x2f\x3e\x0d\x0a\x3c\x2f\
+\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x01\x69\
 \x3c\
 \x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
 \x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
-\x30\x2f\x73\x76\x67\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\
-\x30\x20\x30\x20\x32\x30\x20\x32\x30\x22\x3e\x3c\x70\x61\x74\x68\
-\x20\x64\x3d\x22\x4d\x31\x38\x20\x31\x32\x76\x31\x48\x38\x76\x35\
-\x6c\x2d\x36\x2d\x36\x20\x36\x2d\x36\x76\x35\x68\x38\x56\x32\x68\
-\x32\x7a\x22\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\
-\x00\x00\x04\x64\
+\x30\x2f\x73\x76\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\x31\
+\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\x32\
+\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\
+\x20\x35\x31\x32\x20\x35\x31\x32\x22\x3e\x3c\x67\x20\x74\x72\x61\
+\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x32\
+\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\x29\x27\x3e\x3c\
+\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x34\x2e\x33\x34\x20\x31\x35\
+\x2e\x36\x36\x41\x37\x2e\x39\x37\x20\x37\x2e\x39\x37\x20\x30\x20\
+\x30\x20\x30\x20\x39\x20\x31\x37\x2e\x39\x34\x56\x31\x30\x48\x35\
+\x56\x38\x68\x34\x56\x35\x2e\x38\x33\x61\x33\x20\x33\x20\x30\x20\
+\x31\x20\x31\x20\x32\x20\x30\x56\x38\x68\x34\x76\x32\x68\x2d\x34\
+\x76\x37\x2e\x39\x34\x61\x37\x2e\x39\x37\x20\x37\x2e\x39\x37\x20\
+\x30\x20\x30\x20\x30\x20\x34\x2e\x36\x36\x2d\x32\x2e\x32\x38\x6c\
+\x2d\x31\x2e\x34\x32\x2d\x31\x2e\x34\x32\x68\x35\x2e\x36\x36\x6c\
+\x2d\x32\x2e\x38\x33\x20\x32\x2e\x38\x33\x61\x31\x30\x20\x31\x30\
+\x20\x30\x20\x30\x20\x31\x2d\x31\x34\x2e\x31\x34\x20\x30\x4c\x2e\
+\x31\x20\x31\x34\x2e\x32\x34\x68\x35\x2e\x36\x36\x6c\x2d\x31\x2e\
+\x34\x32\x20\x31\x2e\x34\x32\x7a\x4d\x31\x30\x20\x34\x61\x31\x20\
+\x31\x20\x30\x20\x31\x20\x30\x20\x30\x2d\x32\x20\x31\x20\x31\x20\
+\x30\x20\x30\x20\x30\x20\x30\x20\x32\x7a\x22\x2f\x3e\x3c\x2f\x67\
+\x3e\x3c\x2f\x73\x76\x67\x3e\x0a\
+\x00\x00\x02\xfc\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
@@ -1973,94 +2279,26 @@
 \x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
 \x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
 \x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\x20\x69\x64\x3d\
-\x22\x49\x63\x6f\x6e\x22\x3e\x0d\x0a\x09\x3c\x67\x3e\x0d\x0a\x09\
-\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\x35\x36\x2c\x31\
-\x37\x36\x63\x2d\x34\x34\x2e\x30\x30\x34\x2c\x30\x2d\x38\x30\x2e\
-\x30\x30\x31\x2c\x33\x36\x2d\x38\x30\x2e\x30\x30\x31\x2c\x38\x30\
-\x63\x30\x2c\x34\x34\x2e\x30\x30\x34\x2c\x33\x35\x2e\x39\x39\x37\
-\x2c\x38\x30\x2c\x38\x30\x2e\x30\x30\x31\x2c\x38\x30\x63\x34\x34\
-\x2e\x30\x30\x35\x2c\x30\x2c\x37\x39\x2e\x39\x39\x39\x2d\x33\x35\
-\x2e\x39\x39\x36\x2c\x37\x39\x2e\x39\x39\x39\x2d\x38\x30\x0d\x0a\
-\x09\x09\x09\x43\x33\x33\x35\x2e\x39\x39\x39\x2c\x32\x31\x32\x2c\
-\x33\x30\x30\x2e\x30\x30\x35\x2c\x31\x37\x36\x2c\x32\x35\x36\x2c\
-\x31\x37\x36\x7a\x20\x4d\x34\x34\x36\x2e\x39\x33\x38\x2c\x32\x33\
-\x34\x2e\x36\x36\x37\x63\x2d\x39\x2e\x36\x30\x35\x2d\x38\x38\x2e\
-\x35\x33\x31\x2d\x38\x31\x2e\x30\x37\x34\x2d\x31\x36\x30\x2d\x31\
-\x36\x39\x2e\x36\x30\x35\x2d\x31\x36\x39\x2e\x35\x39\x39\x56\x33\
-\x32\x68\x2d\x34\x32\x2e\x36\x36\x36\x76\x33\x33\x2e\x30\x36\x37\
-\x0d\x0a\x09\x09\x09\x63\x2d\x38\x38\x2e\x35\x33\x31\x2c\x39\x2e\
-\x35\x39\x39\x2d\x31\x36\x30\x2c\x38\x31\x2e\x30\x36\x38\x2d\x31\
-\x36\x39\x2e\x36\x30\x34\x2c\x31\x36\x39\x2e\x35\x39\x39\x48\x33\
-\x32\x76\x34\x32\x2e\x36\x36\x37\x68\x33\x33\x2e\x30\x36\x32\x63\
-\x39\x2e\x36\x30\x34\x2c\x38\x38\x2e\x35\x33\x31\x2c\x38\x31\x2e\
-\x30\x37\x32\x2c\x31\x36\x30\x2c\x31\x36\x39\x2e\x36\x30\x34\x2c\
-\x31\x36\x39\x2e\x36\x30\x34\x56\x34\x38\x30\x68\x34\x32\x2e\x36\
-\x36\x36\x76\x2d\x33\x33\x2e\x30\x36\x32\x0d\x0a\x09\x09\x09\x63\
-\x38\x38\x2e\x35\x33\x31\x2d\x39\x2e\x36\x30\x34\x2c\x31\x36\x30\
-\x2d\x38\x31\x2e\x30\x37\x33\x2c\x31\x36\x39\x2e\x36\x30\x35\x2d\
-\x31\x36\x39\x2e\x36\x30\x34\x48\x34\x38\x30\x76\x2d\x34\x32\x2e\
-\x36\x36\x37\x48\x34\x34\x36\x2e\x39\x33\x38\x7a\x20\x4d\x32\x35\
-\x36\x2c\x34\x30\x35\x2e\x33\x33\x33\x63\x2d\x38\x32\x2e\x31\x33\
-\x37\x2c\x30\x2d\x31\x34\x39\x2e\x33\x33\x34\x2d\x36\x37\x2e\x31\
-\x39\x38\x2d\x31\x34\x39\x2e\x33\x33\x34\x2d\x31\x34\x39\x2e\x33\
-\x33\x33\x0d\x0a\x09\x09\x09\x63\x30\x2d\x38\x32\x2e\x31\x33\x36\
-\x2c\x36\x37\x2e\x31\x39\x37\x2d\x31\x34\x39\x2e\x33\x33\x33\x2c\
-\x31\x34\x39\x2e\x33\x33\x34\x2d\x31\x34\x39\x2e\x33\x33\x33\x63\
-\x38\x32\x2e\x31\x33\x35\x2c\x30\x2c\x31\x34\x39\x2e\x33\x33\x32\
-\x2c\x36\x37\x2e\x31\x39\x38\x2c\x31\x34\x39\x2e\x33\x33\x32\x2c\
-\x31\x34\x39\x2e\x33\x33\x33\x43\x34\x30\x35\x2e\x33\x33\x32\x2c\
-\x33\x33\x38\x2e\x31\x33\x35\x2c\x33\x33\x38\x2e\x31\x33\x35\x2c\
-\x34\x30\x35\x2e\x33\x33\x33\x2c\x32\x35\x36\x2c\x34\x30\x35\x2e\
-\x33\x33\x33\x7a\x0d\x0a\x09\x09\x09\x22\x2f\x3e\x0d\x0a\x09\x3c\
-\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\
-\x3e\x0d\x0a\
-\x00\x00\x02\xa1\
+\x22\x49\x63\x6f\x6e\x5f\x32\x30\x5f\x22\x3e\x0d\x0a\x09\x3c\x67\
+\x3e\x0d\x0a\x09\x09\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x32\
+\x35\x36\x2c\x34\x38\x43\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\
+\x2c\x34\x38\x2c\x31\x34\x31\x2e\x36\x30\x31\x2c\x34\x38\x2c\x32\
+\x35\x36\x73\x39\x33\x2e\x36\x30\x31\x2c\x32\x30\x38\x2c\x32\x30\
+\x38\x2c\x32\x30\x38\x73\x32\x30\x38\x2d\x39\x33\x2e\x36\x30\x31\
+\x2c\x32\x30\x38\x2d\x32\x30\x38\x53\x33\x37\x30\x2e\x33\x39\x39\
+\x2c\x34\x38\x2c\x32\x35\x36\x2c\x34\x38\x7a\x20\x4d\x32\x35\x36\
+\x2c\x34\x32\x32\x2e\x33\x39\x39\x0d\x0a\x09\x09\x09\x63\x2d\x39\
+\x31\x2e\x35\x31\x38\x2c\x30\x2d\x31\x36\x36\x2e\x33\x39\x39\x2d\
+\x37\x34\x2e\x38\x38\x32\x2d\x31\x36\x36\x2e\x33\x39\x39\x2d\x31\
+\x36\x36\x2e\x33\x39\x39\x53\x31\x36\x34\x2e\x34\x38\x32\x2c\x38\
+\x39\x2e\x36\x2c\x32\x35\x36\x2c\x38\x39\x2e\x36\x53\x34\x32\x32\
+\x2e\x34\x2c\x31\x36\x34\x2e\x34\x38\x32\x2c\x34\x32\x32\x2e\x34\
+\x2c\x32\x35\x36\x53\x33\x34\x37\x2e\x35\x31\x38\x2c\x34\x32\x32\
+\x2e\x33\x39\x39\x2c\x32\x35\x36\x2c\x34\x32\x32\x2e\x33\x39\x39\
+\x7a\x22\x2f\x3e\x0d\x0a\x09\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x67\
+\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
+\x00\x00\x04\xd5\
 \x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x38\x2e\x31\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x53\x61\x76\x65\x22\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\
-\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\
-\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\
-\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x78\
-\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x35\x31\x32\x70\x78\x22\x20\
-\x79\x3d\x22\x35\x31\x32\x70\x78\x22\x0d\x0a\x09\x20\x76\x69\x65\
-\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\
-\x6f\x75\x6e\x64\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\
-\x32\x20\x35\x31\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\
-\x3d\x22\x70\x72\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x67\
-\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\
-\x69\x78\x28\x32\x34\x20\x30\x20\x30\x20\x32\x34\x20\x30\x20\x30\
-\x29\x27\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x22\x4d\x31\
-\x35\x2e\x31\x37\x33\x2c\x32\x48\x34\x43\x32\x2e\x38\x39\x39\x2c\
-\x32\x2c\x32\x2c\x32\x2e\x39\x2c\x32\x2c\x34\x76\x31\x32\x63\x30\
-\x2c\x31\x2e\x31\x2c\x30\x2e\x38\x39\x39\x2c\x32\x2c\x32\x2c\x32\
-\x68\x31\x32\x63\x31\x2e\x31\x30\x31\x2c\x30\x2c\x32\x2d\x30\x2e\
-\x39\x2c\x32\x2d\x32\x56\x35\x2e\x31\x32\x37\x4c\x31\x35\x2e\x31\
-\x37\x33\x2c\x32\x7a\x20\x4d\x31\x34\x2c\x38\x63\x30\x2c\x30\x2e\
-\x35\x34\x39\x2d\x30\x2e\x34\x35\x2c\x31\x2d\x31\x2c\x31\x48\x37\
-\x0d\x0a\x09\x43\x36\x2e\x34\x35\x2c\x39\x2c\x36\x2c\x38\x2e\x35\
-\x34\x39\x2c\x36\x2c\x38\x56\x33\x68\x38\x56\x38\x7a\x20\x4d\x31\
-\x33\x2c\x34\x68\x2d\x32\x76\x34\x68\x32\x56\x34\x7a\x22\x2f\x3e\
-\x0d\x0a\x3c\x2f\x67\x3e\x0d\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\
-\x00\x00\x04\x1c\
-\x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
 \x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
 \x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
@@ -2081,302 +2319,64 @@
 \x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
 \x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
 \x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\
-\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x32\
-\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\x36\
-\x32\x2e\x32\x33\x32\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\
-\x36\x32\x2e\x32\x33\x32\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\x35\
-\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\
-\x35\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\
-\x35\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\
-\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\
-\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\
-\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\
-\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\
-\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\
-\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\
-\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\
-\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\
-\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\
-\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\
-\x36\x34\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\
-\x35\x38\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\
-\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x33\x32\x2e\x31\x32\x4c\x20\
-\x36\x32\x2e\x32\x33\x32\x35\x20\x2d\x33\x32\x2e\x31\x32\x27\x20\
-\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\
-\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\
-\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\
-\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\
-\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\
-\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\
-\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\
-\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\x2f\x3e\x0a\x3c\
-\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\
-\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\
-\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\
-\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\
-\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\x32\x2e\
-\x31\x32\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\x33\x32\x2e\x31\
-\x32\x20\x2d\x36\x32\x2e\x32\x33\x32\x35\x27\x20\x66\x69\x6c\x6c\
-\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\
-\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\
-\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\
-\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\
-\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\
-\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\
-\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\
-\x3d\x27\x34\x2e\x30\x31\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
-\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
-\x00\x00\x05\xca\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x75\x74\x66\
-\x2d\x38\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x47\x65\x6e\x65\
-\x72\x61\x74\x6f\x72\x3a\x20\x41\x64\x6f\x62\x65\x20\x49\x6c\x6c\
-\x75\x73\x74\x72\x61\x74\x6f\x72\x20\x31\x36\x2e\x32\x2e\x31\x2c\
-\x20\x53\x56\x47\x20\x45\x78\x70\x6f\x72\x74\x20\x50\x6c\x75\x67\
-\x2d\x49\x6e\x20\x2e\x20\x53\x56\x47\x20\x56\x65\x72\x73\x69\x6f\
-\x6e\x3a\x20\x36\x2e\x30\x30\x20\x42\x75\x69\x6c\x64\x20\x30\x29\
-\x20\x20\x2d\x2d\x3e\x0d\x0a\x3c\x21\x44\x4f\x43\x54\x59\x50\x45\
-\x20\x73\x76\x67\x20\x50\x55\x42\x4c\x49\x43\x20\x22\x2d\x2f\x2f\
-\x57\x33\x43\x2f\x2f\x44\x54\x44\x20\x53\x56\x47\x20\x31\x2e\x31\
-\x2f\x2f\x45\x4e\x22\x20\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\
-\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x47\x72\x61\x70\x68\x69\x63\
-\x73\x2f\x53\x56\x47\x2f\x31\x2e\x31\x2f\x44\x54\x44\x2f\x73\x76\
-\x67\x31\x31\x2e\x64\x74\x64\x22\x3e\x0d\x0a\x3c\x73\x76\x67\x20\
-\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x20\x69\x64\
-\x3d\x22\x4c\x61\x79\x65\x72\x5f\x31\x22\x20\x78\x6d\x6c\x6e\x73\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\
-\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x20\x78\x6d\
-\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\
-\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x20\x78\x3d\x22\x30\x70\x78\x22\
-\x20\x79\x3d\x22\x30\x70\x78\x22\x0d\x0a\x09\x20\x77\x69\x64\x74\
-\x68\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\
-\x3d\x22\x35\x31\x32\x70\x78\x22\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x20\x65\
-\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\
-\x3d\x22\x6e\x65\x77\x20\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\
-\x32\x22\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\
-\x65\x73\x65\x72\x76\x65\x22\x3e\x0d\x0a\x3c\x70\x61\x74\x68\x20\
-\x64\x3d\x22\x4d\x34\x35\x30\x2e\x36\x37\x39\x2c\x32\x37\x33\x2e\
-\x35\x63\x2d\x31\x34\x2e\x35\x38\x35\x2d\x31\x34\x2e\x35\x37\x37\
-\x2d\x33\x36\x2e\x30\x35\x34\x2d\x31\x35\x2e\x38\x39\x2d\x35\x30\
-\x2e\x36\x33\x39\x2d\x31\x2e\x33\x31\x32\x6c\x2d\x34\x31\x2e\x36\
-\x38\x37\x2c\x34\x31\x2e\x36\x36\x34\x63\x2d\x31\x30\x2e\x38\x35\
-\x32\x2c\x31\x30\x2e\x38\x33\x36\x2d\x32\x33\x2e\x39\x33\x2c\x31\
-\x30\x2e\x38\x35\x39\x2d\x33\x31\x2e\x35\x36\x34\x2c\x31\x2e\x38\
-\x35\x32\x0d\x0a\x09\x63\x2d\x35\x2e\x30\x35\x37\x2d\x35\x2e\x39\
-\x36\x38\x2d\x33\x2e\x30\x36\x31\x2d\x32\x34\x2e\x33\x37\x34\x2d\
-\x31\x2e\x36\x34\x34\x2d\x33\x36\x2e\x30\x34\x39\x6c\x32\x30\x2e\
-\x39\x30\x37\x2d\x31\x37\x31\x2e\x38\x34\x39\x63\x31\x2e\x38\x36\
-\x37\x2d\x31\x35\x2e\x33\x35\x33\x2d\x39\x2e\x30\x37\x2d\x33\x30\
-\x2e\x31\x38\x35\x2d\x32\x34\x2e\x34\x33\x2d\x33\x32\x2e\x30\x35\
-\x31\x0d\x0a\x09\x63\x2d\x31\x35\x2e\x33\x35\x38\x2d\x31\x2e\x38\
-\x36\x37\x2d\x32\x39\x2e\x33\x32\x32\x2c\x39\x2e\x39\x33\x39\x2d\
-\x33\x31\x2e\x31\x39\x31\x2c\x32\x35\x2e\x32\x38\x39\x4c\x32\x36\
-\x37\x2e\x33\x37\x2c\x32\x33\x36\x2e\x30\x32\x31\x63\x2d\x31\x2e\
-\x32\x30\x35\x2c\x33\x2e\x33\x35\x38\x2d\x33\x2e\x37\x39\x2c\x33\
-\x2e\x39\x33\x38\x2d\x34\x2e\x30\x38\x31\x2d\x30\x2e\x35\x38\x32\
-\x4c\x32\x35\x35\x2e\x34\x34\x2c\x36\x30\x0d\x0a\x09\x63\x30\x2d\
-\x31\x35\x2e\x34\x36\x35\x2d\x31\x32\x2e\x35\x34\x32\x2d\x32\x38\
-\x2d\x32\x38\x2e\x30\x31\x34\x2d\x32\x38\x63\x2d\x31\x35\x2e\x34\
-\x37\x33\x2c\x30\x2d\x32\x38\x2e\x30\x31\x35\x2c\x31\x32\x2e\x35\
-\x33\x35\x2d\x32\x38\x2e\x30\x31\x35\x2c\x32\x38\x6c\x2d\x30\x2e\
-\x35\x35\x32\x2c\x31\x37\x36\x2e\x37\x35\x32\x63\x30\x2e\x31\x34\
-\x36\x2c\x32\x2e\x30\x34\x2d\x31\x2e\x36\x30\x34\x2c\x32\x2e\x36\
-\x32\x34\x2d\x31\x2e\x39\x32\x2c\x30\x2e\x32\x39\x34\x4c\x31\x37\
-\x32\x2e\x30\x31\x36\x2c\x39\x39\x2e\x30\x37\x37\x0d\x0a\x09\x63\
-\x2d\x32\x2e\x37\x35\x2d\x31\x35\x2e\x32\x31\x39\x2d\x31\x37\x2e\
-\x33\x32\x33\x2d\x32\x36\x2e\x32\x30\x33\x2d\x33\x32\x2e\x35\x34\
-\x38\x2d\x32\x33\x2e\x34\x35\x33\x63\x2d\x31\x35\x2e\x32\x32\x37\
-\x2c\x32\x2e\x37\x34\x38\x2d\x32\x35\x2e\x33\x33\x39\x2c\x31\x38\
-\x2e\x31\x38\x37\x2d\x32\x32\x2e\x35\x39\x31\x2c\x33\x33\x2e\x34\
-\x30\x33\x6c\x32\x32\x2e\x31\x39\x33\x2c\x31\x36\x31\x2e\x34\x35\
-\x35\x0d\x0a\x09\x63\x30\x2e\x30\x32\x33\x2c\x32\x2e\x38\x37\x32\
-\x2d\x30\x2e\x39\x34\x31\x2c\x34\x2e\x35\x31\x33\x2d\x32\x2e\x33\
-\x30\x38\x2c\x30\x2e\x38\x33\x31\x6c\x2d\x33\x33\x2e\x31\x30\x39\
-\x2d\x38\x38\x2e\x35\x31\x37\x63\x2d\x35\x2e\x31\x38\x2d\x31\x34\
-\x2e\x35\x37\x32\x2d\x32\x31\x2e\x31\x39\x36\x2d\x32\x33\x2e\x30\
-\x36\x35\x2d\x33\x35\x2e\x37\x37\x36\x2d\x31\x37\x2e\x38\x38\x39\
-\x0d\x0a\x09\x63\x2d\x31\x34\x2e\x35\x37\x39\x2c\x35\x2e\x31\x37\
-\x37\x2d\x32\x32\x2e\x32\x30\x31\x2c\x32\x32\x2e\x30\x36\x31\x2d\
-\x31\x37\x2e\x30\x32\x33\x2c\x33\x36\x2e\x36\x33\x31\x6c\x35\x38\
-\x2e\x30\x34\x32\x2c\x31\x38\x39\x2e\x36\x32\x35\x63\x30\x2e\x33\
-\x30\x33\x2c\x31\x2e\x30\x34\x36\x2c\x30\x2e\x36\x32\x34\x2c\x32\
-\x2e\x30\x38\x35\x2c\x30\x2e\x39\x35\x33\x2c\x33\x2e\x31\x31\x38\
-\x6c\x30\x2e\x31\x32\x31\x2c\x30\x2e\x33\x39\x0d\x0a\x09\x63\x30\
-\x2e\x30\x31\x31\x2c\x30\x2e\x30\x33\x31\x2c\x30\x2e\x30\x32\x35\
-\x2c\x30\x2e\x30\x35\x38\x2c\x30\x2e\x30\x33\x35\x2c\x30\x2e\x30\
-\x38\x38\x43\x31\x32\x36\x2e\x30\x37\x39\x2c\x34\x34\x34\x2e\x32\
-\x33\x33\x2c\x31\x37\x32\x2e\x35\x37\x2c\x34\x38\x30\x2c\x32\x32\
-\x37\x2e\x34\x32\x37\x2c\x34\x38\x30\x63\x33\x35\x2e\x31\x31\x36\
-\x2c\x30\x2c\x37\x31\x2e\x35\x39\x31\x2d\x31\x32\x2e\x33\x37\x38\
-\x2c\x39\x39\x2e\x33\x35\x37\x2d\x33\x33\x2e\x36\x37\x32\x0d\x0a\
-\x09\x63\x30\x2e\x30\x30\x31\x2c\x30\x2c\x30\x2e\x30\x30\x33\x2d\
-\x30\x2e\x30\x30\x32\x2c\x30\x2e\x30\x30\x33\x2d\x30\x2e\x30\x30\
-\x32\x63\x32\x39\x2e\x39\x39\x2d\x31\x38\x2e\x30\x35\x31\x2c\x31\
-\x32\x36\x2e\x30\x37\x31\x2d\x31\x32\x31\x2e\x33\x34\x37\x2c\x31\
-\x32\x36\x2e\x30\x37\x31\x2d\x31\x32\x31\x2e\x33\x34\x37\x43\x34\
-\x36\x37\x2e\x34\x34\x35\x2c\x33\x31\x30\x2e\x34\x30\x32\x2c\x34\
-\x36\x35\x2e\x32\x36\x36\x2c\x32\x38\x38\x2e\x30\x38\x2c\x34\x35\
-\x30\x2e\x36\x37\x39\x2c\x32\x37\x33\x2e\x35\x7a\x22\x2f\x3e\x0d\
-\x0a\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\
-\x00\x00\x03\x7c\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
-\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
-\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
-\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
-\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
-\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
-\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
-\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
-\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
-\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
-\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
-\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
-\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
-\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
-\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\x35\x38\
-\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x32\
-\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\x36\
-\x32\x2e\x32\x33\x32\x35\x20\x2d\x32\x2e\x30\x30\x37\x35\x4c\x20\
-\x36\x32\x2e\x32\x33\x32\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\x35\
-\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x36\x32\x2e\x32\x33\x32\
-\x35\x4c\x20\x32\x2e\x30\x30\x37\x35\x20\x2d\x32\x2e\x30\x30\x37\
-\x35\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\
-\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\
-\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\
-\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\
-\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\
-\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\
-\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\x27\x20\x73\x74\x72\x6f\
-\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\x34\x2e\x30\x31\x35\x27\
-\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\
-\x66\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\
-\x39\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\
-\x36\x34\x20\x35\x36\x2e\x34\x30\x39\x34\x20\x31\x31\x37\x2e\x38\
-\x35\x38\x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\
-\x20\x34\x37\x2e\x31\x37\x36\x32\x20\x2d\x33\x32\x2e\x31\x32\x43\
-\x20\x34\x37\x2e\x31\x37\x36\x32\x20\x2d\x34\x30\x2e\x34\x33\x35\
-\x33\x20\x34\x30\x2e\x34\x33\x35\x33\x20\x2d\x34\x37\x2e\x31\x37\
-\x36\x32\x20\x33\x32\x2e\x31\x32\x20\x2d\x34\x37\x2e\x31\x37\x36\
-\x32\x43\x20\x32\x33\x2e\x38\x30\x34\x37\x20\x2d\x34\x37\x2e\x31\
-\x37\x36\x32\x20\x31\x37\x2e\x30\x36\x33\x37\x20\x2d\x34\x30\x2e\
-\x34\x33\x35\x33\x20\x31\x37\x2e\x30\x36\x33\x37\x20\x2d\x33\x32\
-\x2e\x31\x32\x43\x20\x31\x37\x2e\x30\x36\x33\x37\x20\x2d\x32\x33\
-\x2e\x38\x30\x34\x37\x20\x32\x33\x2e\x38\x30\x34\x37\x20\x2d\x31\
-\x37\x2e\x30\x36\x33\x37\x20\x33\x32\x2e\x31\x32\x20\x2d\x31\x37\
-\x2e\x30\x36\x33\x37\x43\x20\x34\x30\x2e\x34\x33\x35\x33\x20\x2d\
-\x31\x37\x2e\x30\x36\x33\x37\x20\x34\x37\x2e\x31\x37\x36\x32\x20\
-\x2d\x32\x33\x2e\x38\x30\x34\x37\x20\x34\x37\x2e\x31\x37\x36\x32\
-\x20\x2d\x33\x32\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\x6c\x3d\x27\
-\x23\x30\x30\x30\x30\x30\x30\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
-\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\
-\x00\x00\x01\x1c\
-\x3c\
-\x73\x76\x67\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
-\x30\x2f\x73\x76\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x22\x35\x31\
-\x32\x70\x78\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x35\x31\x32\
-\x70\x78\x22\x0a\x20\x20\x20\x20\x20\x76\x69\x65\x77\x42\x6f\x78\
-\x3d\x22\x30\x20\x30\x20\x35\x31\x32\x20\x35\x31\x32\x22\x3e\x0a\
-\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
-\x74\x72\x69\x78\x28\x34\x38\x20\x30\x20\x30\x20\x34\x38\x20\x34\
-\x38\x20\x34\x38\x29\x27\x3e\x0a\x20\x20\x3c\x70\x61\x74\x68\x20\
-\x64\x3d\x22\x4d\x30\x20\x30\x76\x32\x68\x2e\x35\x63\x30\x2d\x2e\
-\x35\x35\x2e\x34\x35\x2d\x31\x20\x31\x2d\x31\x68\x31\x2e\x35\x76\
-\x35\x2e\x35\x63\x30\x20\x2e\x32\x38\x2d\x2e\x32\x32\x2e\x35\x2d\
-\x2e\x35\x2e\x35\x68\x2d\x2e\x35\x76\x31\x68\x34\x76\x2d\x31\x68\
-\x2d\x2e\x35\x63\x2d\x2e\x32\x38\x20\x30\x2d\x2e\x35\x2d\x2e\x32\
-\x32\x2d\x2e\x35\x2d\x2e\x35\x76\x2d\x35\x2e\x35\x68\x31\x2e\x35\
-\x63\x2e\x35\x35\x20\x30\x20\x31\x20\x2e\x34\x35\x20\x31\x20\x31\
-\x68\x2e\x35\x76\x2d\x32\x68\x2d\x38\x7a\x22\x20\x2f\x3e\x0a\x3c\
-\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\
-\x00\x00\x04\xa2\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x27\x31\x2e\
-\x30\x27\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x27\x55\x54\x46\
-\x2d\x38\x27\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x54\x68\x69\x73\x20\
-\x66\x69\x6c\x65\x20\x77\x61\x73\x20\x67\x65\x6e\x65\x72\x61\x74\
-\x65\x64\x20\x62\x79\x20\x64\x76\x69\x73\x76\x67\x6d\x20\x32\x2e\
-\x38\x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x76\x65\x72\x73\x69\
-\x6f\x6e\x3d\x27\x31\x2e\x31\x27\x20\x78\x6d\x6c\x6e\x73\x3d\x27\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
-\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x27\x20\x78\x6d\x6c\x6e\
-\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x27\x68\x74\x74\x70\x3a\x2f\x2f\
-\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\
-\x78\x6c\x69\x6e\x6b\x27\x20\x77\x69\x64\x74\x68\x3d\x27\x36\x33\
-\x2e\x39\x39\x39\x36\x70\x74\x27\x20\x68\x65\x69\x67\x68\x74\x3d\
-\x27\x36\x33\x2e\x39\x39\x39\x37\x70\x74\x27\x20\x76\x69\x65\x77\
-\x42\x6f\x78\x3d\x27\x35\x36\x2e\x34\x30\x39\x34\x20\x35\x33\x2e\
-\x38\x35\x38\x33\x20\x36\x33\x2e\x39\x39\x39\x36\x20\x36\x33\x2e\
-\x39\x39\x39\x37\x27\x3e\x0a\x3c\x67\x20\x69\x64\x3d\x27\x70\x61\
-\x67\x65\x31\x27\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\
-\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\
-\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\
 \x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\
 \x29\x27\x3e\x0a\x3c\x70\x61\x74\x68\x20\x64\x3d\x27\x4d\x20\x33\
-\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x43\x20\x34\
-\x2e\x31\x35\x35\x35\x36\x20\x2d\x33\x39\x2e\x32\x37\x34\x35\x20\
-\x36\x2e\x39\x38\x34\x37\x33\x20\x2d\x34\x36\x2e\x31\x30\x34\x37\
+\x2e\x39\x35\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x43\x20\x32\
+\x2e\x32\x38\x39\x32\x32\x20\x2d\x33\x39\x2e\x33\x31\x31\x33\x20\
+\x36\x2e\x33\x36\x37\x30\x32\x20\x2d\x34\x36\x2e\x32\x33\x38\x36\
 \x20\x31\x31\x2e\x39\x30\x33\x36\x20\x2d\x35\x31\x2e\x33\x30\x33\
-\x39\x43\x20\x32\x37\x2e\x34\x34\x31\x31\x20\x2d\x36\x37\x2e\x37\
-\x32\x36\x39\x20\x35\x33\x2e\x33\x30\x32\x31\x20\x2d\x36\x31\x2e\
-\x35\x34\x30\x35\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\
-\x2e\x35\x30\x32\x32\x43\x20\x35\x37\x2e\x36\x32\x37\x20\x2d\x33\
-\x32\x2e\x36\x35\x31\x39\x20\x35\x30\x2e\x35\x38\x35\x36\x20\x2d\
-\x32\x33\x2e\x35\x36\x32\x31\x20\x34\x30\x2e\x36\x37\x39\x34\x20\
-\x2d\x32\x32\x2e\x35\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\
-\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\x27\x23\x30\
-\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\
-\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\
-\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3d\x27\x72\
-\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\
-\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\x33\x37\x35\
-\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x27\
-\x32\x2e\x35\x30\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
-\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
-\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
-\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
-\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
-\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\x35\x37\x33\
-\x35\x27\x20\x63\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\x27\x20\x66\
-\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x72\x3d\
-\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
-\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\x6d\x61\
-\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x30\x20\
-\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\x34\x36\
-\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\x3c\x63\
-\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\x39\x30\x33\
-\x36\x27\x20\x63\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\x33\x39\x27\
-\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\
-\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\x67\
-\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x27\
-\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\x20\
-\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\x2e\
-\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\x0a\
-\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\x36\x2e\x31\
-\x35\x32\x33\x27\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\x35\x30\x32\
-\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\
-\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\
-\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\
-\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\
-\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\
-\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\
-\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x34\x30\
-\x2e\x36\x37\x39\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\x32\x2e\x35\
-\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\
-\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\
-\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\
-\x3e\
+\x39\x43\x20\x32\x39\x2e\x36\x36\x38\x37\x20\x2d\x36\x37\x2e\x35\
+\x35\x36\x38\x20\x35\x35\x2e\x32\x32\x39\x32\x20\x2d\x36\x30\x2e\
+\x36\x34\x32\x20\x35\x36\x2e\x31\x35\x32\x33\x20\x2d\x34\x32\x2e\
+\x35\x30\x32\x32\x43\x20\x35\x36\x2e\x36\x31\x33\x36\x20\x2d\x33\
+\x33\x2e\x34\x33\x38\x31\x20\x34\x39\x2e\x31\x31\x33\x32\x20\x2d\
+\x32\x36\x2e\x35\x39\x35\x39\x20\x34\x30\x2e\x36\x37\x39\x34\x20\
+\x2d\x32\x32\x2e\x35\x32\x38\x31\x43\x20\x32\x35\x2e\x33\x39\x39\
+\x35\x20\x2d\x31\x35\x2e\x31\x35\x38\x32\x20\x37\x2e\x31\x39\x39\
+\x33\x35\x20\x2d\x31\x38\x2e\x31\x34\x33\x36\x20\x33\x2e\x39\x35\
+\x37\x33\x35\x20\x2d\x33\x32\x2e\x31\x32\x5a\x27\x20\x66\x69\x6c\
+\x6c\x3d\x27\x6e\x6f\x6e\x65\x27\x20\x73\x74\x72\x6f\x6b\x65\x3d\
+\x27\x23\x30\x30\x30\x30\x30\x30\x27\x20\x73\x74\x72\x6f\x6b\x65\
+\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3d\x27\x72\x6f\x75\x6e\x64\x27\
+\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\
+\x3d\x27\x72\x6f\x75\x6e\x64\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\
+\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3d\x27\x31\x30\x2e\x30\
+\x33\x37\x35\x27\x20\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\
+\x68\x3d\x27\x32\x2e\x35\x30\x39\x33\x37\x27\x2f\x3e\x0a\x3c\x2f\
+\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\
+\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\
+\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\
+\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x33\x2e\x39\
+\x35\x37\x33\x35\x27\x20\x63\x79\x3d\x27\x2d\x33\x32\x2e\x31\x32\
+\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\x30\x27\
+\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\x3c\x2f\
+\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\
+\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\x36\x34\
+\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\x35\x38\
+\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\x27\x3e\
+\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x31\x31\x2e\
+\x39\x30\x33\x36\x27\x20\x63\x79\x3d\x27\x2d\x35\x31\x2e\x33\x30\
+\x33\x39\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\x30\x30\
+\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\x3e\x0a\
+\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\
+\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\x36\x32\
+\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\x34\x20\
+\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\x38\x29\
+\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\x27\x35\
+\x36\x2e\x31\x35\x32\x33\x27\x20\x63\x79\x3d\x27\x2d\x34\x32\x2e\
+\x35\x30\x32\x32\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\x30\x30\
+\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\x27\x2f\
+\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x67\x20\x74\x72\x61\x6e\x73\x66\
+\x6f\x72\x6d\x3d\x27\x6d\x61\x74\x72\x69\x78\x28\x30\x2e\x39\x39\
+\x36\x32\x36\x34\x20\x30\x20\x30\x20\x30\x2e\x39\x39\x36\x32\x36\
+\x34\x20\x35\x38\x2e\x34\x36\x36\x39\x20\x31\x31\x37\x2e\x38\x35\
+\x38\x29\x27\x3e\x0a\x3c\x63\x69\x72\x63\x6c\x65\x20\x63\x78\x3d\
+\x27\x34\x30\x2e\x36\x37\x39\x34\x27\x20\x63\x79\x3d\x27\x2d\x32\
+\x32\x2e\x35\x32\x38\x31\x27\x20\x66\x69\x6c\x6c\x3d\x27\x23\x30\
+\x30\x30\x30\x30\x30\x27\x20\x72\x3d\x27\x36\x2e\x30\x32\x32\x35\
+\x27\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\x67\x3e\x0a\x3c\x2f\
+\x73\x76\x67\x3e\
 "
 
 qt_resource_name = b"\
@@ -2384,51 +2384,91 @@
 \x00\x6f\xa6\x53\
 \x00\x69\
 \x00\x63\x00\x6f\x00\x6e\x00\x73\
-\x00\x1d\
-\x06\xec\xf4\xc7\
+\x00\x16\
+\x01\xfb\x76\x27\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x62\x00\x61\x00\x63\
+\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x10\
+\x0c\x57\x65\x47\
+\x00\x61\
+\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x72\x00\x65\x00\x73\x00\x69\x00\x7a\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x11\
+\x01\x60\xbc\x47\
+\x00\x73\
+\x00\x6f\x00\x63\x00\x69\x00\x61\x00\x6c\x00\x2d\x00\x70\x00\x79\x00\x74\x00\x68\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\
+\x00\x14\
+\x0f\xa5\xe0\xc7\
+\x00\x6d\
+\x00\x61\x00\x67\x00\x6e\x00\x69\x00\x66\x00\x79\x00\x69\x00\x6e\x00\x67\x00\x2d\x00\x67\x00\x6c\x00\x61\x00\x73\x00\x73\x00\x2e\
+\x00\x73\x00\x76\x00\x67\
+\x00\x08\
+\x05\xa8\x57\x87\
 \x00\x63\
-\x00\x68\x00\x65\x00\x76\x00\x72\x00\x6f\x00\x6e\x00\x2d\x00\x77\x00\x69\x00\x74\x00\x68\x00\x2d\x00\x63\x00\x69\x00\x72\x00\x63\
-\x00\x6c\x00\x65\x00\x2d\x00\x72\x00\x69\x00\x67\x00\x68\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x6f\x00\x64\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x0a\
 \x0a\x2d\x1b\xc7\
 \x00\x63\
 \x00\x69\x00\x72\x00\x63\x00\x6c\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0a\
-\x0f\x68\x53\xe7\
+\x00\x12\
+\x0c\x5e\xd4\xa7\
 \x00\x61\
-\x00\x6e\x00\x63\x00\x68\x00\x6f\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0f\
-\x09\x76\x60\xc7\
-\x00\x63\
-\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2d\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x6c\x00\x6f\x00\x63\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\
+\x00\x67\
 \x00\x17\
 \x06\xc6\x02\xa7\
 \x00\x74\
 \x00\x72\x00\x69\x00\x61\x00\x6e\x00\x67\x00\x6c\x00\x65\x00\x2d\x00\x73\x00\x74\x00\x72\x00\x6f\x00\x6b\x00\x65\x00\x64\x00\x2d\
 \x00\x31\x00\x35\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x15\
+\x0f\xc4\x59\xe7\
+\x00\x73\
+\x00\x75\x00\x62\x00\x64\x00\x69\x00\x72\x00\x65\x00\x63\x00\x74\x00\x6f\x00\x72\x00\x79\x00\x2d\x00\x6c\x00\x65\x00\x66\x00\x74\
+\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0d\
+\x05\x20\xce\x87\
+\x00\x6f\
+\x00\x70\x00\x65\x00\x6e\x00\x63\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x11\
+\x0c\xdb\x38\xe7\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\
+\x00\x10\
+\x06\xe3\xaf\xe7\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x68\x00\x61\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x0a\
 \x01\xca\x6d\x87\
 \x00\x62\
 \x00\x75\x00\x63\x00\x6b\x00\x65\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x08\
+\x08\xc8\x55\xe7\
+\x00\x73\
+\x00\x61\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x1d\
+\x06\xec\xf4\xc7\
+\x00\x63\
+\x00\x68\x00\x65\x00\x76\x00\x72\x00\x6f\x00\x6e\x00\x2d\x00\x77\x00\x69\x00\x74\x00\x68\x00\x2d\x00\x63\x00\x69\x00\x72\x00\x63\
+\x00\x6c\x00\x65\x00\x2d\x00\x72\x00\x69\x00\x67\x00\x68\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x1b\
 \x0e\xb5\x68\xe7\
 \x00\x61\
 \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x2d\x00\x62\x00\x75\x00\x74\
 \x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x11\
-\x01\x60\xbc\x47\
-\x00\x73\
-\x00\x6f\x00\x63\x00\x69\x00\x61\x00\x6c\x00\x2d\x00\x70\x00\x79\x00\x74\x00\x68\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
-\
-\x00\x14\
-\x0f\xa5\xe0\xc7\
-\x00\x6d\
-\x00\x61\x00\x67\x00\x6e\x00\x69\x00\x66\x00\x79\x00\x69\x00\x6e\x00\x67\x00\x2d\x00\x67\x00\x6c\x00\x61\x00\x73\x00\x73\x00\x2e\
-\x00\x73\x00\x76\x00\x67\
-\x00\x08\
-\x05\xa8\x57\x87\
+\x00\x07\
+\x0c\xf8\x5a\x07\
+\x00\x65\
+\x00\x79\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x10\
+\x08\xe4\xaf\x47\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x64\x00\x6f\x00\x6e\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0a\
+\x0a\xc8\x62\x67\
 \x00\x63\
-\x00\x6f\x00\x64\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x13\
 \x03\x24\x75\x47\
 \x00\x61\
@@ -2439,20 +2479,44 @@
 \x00\x61\
 \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x64\x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\
 \x00\x67\
-\x00\x0f\
-\x04\xf2\xa7\x87\
-\x00\x63\
-\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x63\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x12\
 \x04\xb2\x21\x47\
 \x00\x61\
 \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x65\x00\x78\x00\x70\x00\x61\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\
 \x00\x67\
-\x00\x16\
-\x01\xfb\x76\x27\
+\x00\x09\
+\x0b\x9e\x89\x07\
+\x00\x63\
+\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x1c\
+\x04\x66\xe1\x67\
+\x00\x63\
+\x00\x68\x00\x65\x00\x76\x00\x72\x00\x6f\x00\x6e\x00\x2d\x00\x77\x00\x69\x00\x74\x00\x68\x00\x2d\x00\x63\x00\x69\x00\x72\x00\x63\
+\x00\x6c\x00\x65\x00\x2d\x00\x6c\x00\x65\x00\x66\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0e\
+\x05\xed\x38\x67\
 \x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x62\x00\x61\x00\x63\
-\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x10\
+\x08\x89\xfa\x47\
+\x00\x63\
+\x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x6f\x00\x72\x00\x69\x00\x67\x00\x69\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0f\
+\x07\x0e\xc4\x87\
+\x00\x6f\
+\x00\x70\x00\x65\x00\x6e\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0f\
+\x09\x76\x60\xc7\
+\x00\x63\
+\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2d\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x08\
+\x08\xf7\x57\x07\
+\x00\x67\
+\x00\x72\x00\x69\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x08\
+\x0c\xf7\x55\x87\
+\x00\x74\
+\x00\x65\x00\x78\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x19\
 \x0f\xef\x7b\xe7\
 \x00\x61\
@@ -2463,156 +2527,92 @@
 \x00\x61\
 \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x66\x00\x6f\x00\x72\
 \x00\x77\x00\x61\x00\x72\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x11\
+\x0c\xa7\xc7\x47\
+\x00\x63\
+\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\
 \x00\x17\
 \x07\x87\x48\x27\
 \x00\x61\
 \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x66\x00\x6f\x00\x6c\x00\x64\x00\x65\x00\x72\x00\x2d\x00\x6f\x00\x70\
 \x00\x65\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x12\
+\x08\x79\x97\xe7\
+\x00\x61\
+\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x61\x00\x6d\x00\x65\x00\x72\x00\x61\x00\x2e\x00\x73\x00\x76\
+\x00\x67\
+\x00\x08\
+\x0b\x07\x57\xa7\
+\x00\x65\
+\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x10\
 \x04\xa9\x22\xc7\
 \x00\x66\
 \x00\x69\x00\x6c\x00\x6c\x00\x65\x00\x64\x00\x62\x00\x75\x00\x63\x00\x6b\x00\x65\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0f\
-\x07\x0e\xc4\x87\
-\x00\x6f\
-\x00\x70\x00\x65\x00\x6e\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x0e\
-\x05\xed\x38\x67\
+\x0f\xcb\xd5\xc7\
+\x00\x70\
+\x00\x6c\x00\x75\x00\x73\x00\x2d\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x0a\
+\x0f\x68\x53\xe7\
 \x00\x61\
-\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x6d\x00\x6f\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x6e\x00\x63\x00\x68\x00\x6f\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\
 \x00\x1c\
 \x08\x8a\x79\x07\
 \x00\x61\
 \x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x72\x00\x61\x00\x64\x00\x69\x00\x6f\x00\x2d\x00\x62\x00\x75\x00\x74\
 \x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x6f\x00\x66\x00\x66\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x08\
-\x0b\x07\x57\xa7\
-\x00\x65\
-\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x11\
-\x0c\xa7\xc7\x47\
+\x00\x0f\
+\x04\xf2\xa7\x87\
 \x00\x63\
-\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x70\x00\x6f\x00\x6c\x00\x79\x00\x67\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
-\
-\x00\x0e\
-\x0f\xcb\xd5\xc7\
-\x00\x70\
-\x00\x6c\x00\x75\x00\x73\x00\x2d\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x09\
-\x0b\x9e\x89\x07\
-\x00\x63\
-\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x1c\
-\x04\x66\xe1\x67\
-\x00\x63\
-\x00\x68\x00\x65\x00\x76\x00\x72\x00\x6f\x00\x6e\x00\x2d\x00\x77\x00\x69\x00\x74\x00\x68\x00\x2d\x00\x63\x00\x69\x00\x72\x00\x63\
-\x00\x6c\x00\x65\x00\x2d\x00\x6c\x00\x65\x00\x66\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x12\
-\x08\x79\x97\xe7\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x61\x00\x6d\x00\x65\x00\x72\x00\x61\x00\x2e\x00\x73\x00\x76\
-\x00\x67\
-\x00\x11\
-\x0c\xdb\x38\xe7\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\
-\x00\x10\
-\x08\xe4\xaf\x47\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x64\x00\x6f\x00\x6e\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x07\
-\x0c\xf8\x5a\x07\
-\x00\x65\
-\x00\x79\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x08\
-\x08\xf7\x57\x07\
-\x00\x67\
-\x00\x72\x00\x69\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x10\
-\x0c\x57\x65\x47\
-\x00\x61\
-\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2d\x00\x72\x00\x65\x00\x73\x00\x69\x00\x7a\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x15\
-\x0f\xc4\x59\xe7\
-\x00\x73\
-\x00\x75\x00\x62\x00\x64\x00\x69\x00\x72\x00\x65\x00\x63\x00\x74\x00\x6f\x00\x72\x00\x79\x00\x2d\x00\x6c\x00\x65\x00\x66\x00\x74\
-\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x12\
-\x0c\x5e\xd4\xa7\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x6c\x00\x6f\x00\x63\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x73\x00\x76\
-\x00\x67\
-\x00\x08\
-\x08\xc8\x55\xe7\
-\x00\x73\
-\x00\x61\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x10\
-\x08\x89\xfa\x47\
-\x00\x63\
-\x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x6f\x00\x72\x00\x69\x00\x67\x00\x69\x00\x6e\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x10\
-\x06\xe3\xaf\xe7\
-\x00\x61\
-\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x68\x00\x61\x00\x6e\x00\x64\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0a\
-\x0a\xc8\x62\x67\
-\x00\x63\
-\x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x08\
-\x0c\xf7\x55\x87\
-\x00\x74\
-\x00\x65\x00\x78\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\
-\x00\x0d\
-\x05\x20\xce\x87\
-\x00\x6f\
-\x00\x70\x00\x65\x00\x6e\x00\x63\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
+\x00\x6c\x00\x6f\x00\x73\x00\x65\x00\x64\x00\x63\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\
 "
 
 qt_resource_struct_v1 = b"\
 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x29\x00\x00\x00\x02\
-\x00\x00\x01\x32\x00\x00\x00\x00\x00\x01\x00\x00\x19\x8d\
-\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x01\x00\x00\x10\x65\
-\x00\x00\x02\x42\x00\x00\x00\x00\x00\x01\x00\x00\x37\x6a\
-\x00\x00\x01\x9e\x00\x00\x00\x00\x00\x01\x00\x00\x29\x87\
-\x00\x00\x04\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x5e\xed\
-\x00\x00\x03\x18\x00\x01\x00\x00\x00\x01\x00\x00\x44\xed\
-\x00\x00\x02\x18\x00\x00\x00\x00\x00\x01\x00\x00\x34\x30\
-\x00\x00\x01\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x2f\x57\
-\x00\x00\x06\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x89\xa2\
-\x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x00\x24\xd9\
-\x00\x00\x03\x62\x00\x00\x00\x00\x00\x01\x00\x00\x4b\x53\
-\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x97\
-\x00\x00\x05\xd6\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x34\
+\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x05\x04\
+\x00\x00\x01\xea\x00\x00\x00\x00\x00\x01\x00\x00\x2e\xc9\
 \x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x03\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x47\x12\
-\x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x41\x97\
-\x00\x00\x01\xca\x00\x00\x00\x00\x00\x01\x00\x00\x2c\xb1\
-\x00\x00\x04\x78\x00\x00\x00\x00\x00\x01\x00\x00\x62\xe6\
-\x00\x00\x05\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x14\
-\x00\x00\x03\x84\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x20\
-\x00\x00\x05\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x78\x6f\
-\x00\x00\x04\xca\x00\x00\x00\x00\x00\x01\x00\x00\x68\xc7\
-\x00\x00\x05\x04\x00\x01\x00\x00\x00\x01\x00\x00\x6f\x33\
-\x00\x00\x00\x84\x00\x00\x00\x00\x00\x01\x00\x00\x08\x4d\
-\x00\x00\x00\x50\x00\x00\x00\x00\x00\x01\x00\x00\x03\xea\
-\x00\x00\x02\xac\x00\x00\x00\x00\x00\x01\x00\x00\x3f\x16\
-\x00\x00\x05\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x85\x02\
-\x00\x00\x03\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x51\x20\
-\x00\x00\x04\x22\x00\x00\x00\x00\x00\x01\x00\x00\x5b\xdd\
-\x00\x00\x05\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x71\x14\
-\x00\x00\x05\x70\x00\x00\x00\x00\x00\x01\x00\x00\x74\x07\
-\x00\x00\x03\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x54\x90\
-\x00\x00\x04\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x66\x0c\
-\x00\x00\x06\x16\x00\x00\x00\x00\x00\x01\x00\x00\x88\x82\
-\x00\x00\x04\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x6b\x44\
-\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x16\x3d\
-\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x06\xe0\
-\x00\x00\x01\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x21\x11\
-\x00\x00\x05\x40\x00\x00\x00\x00\x00\x01\x00\x00\x73\x97\
-\x00\x00\x04\x00\x00\x00\x00\x00\x00\x01\x00\x00\x58\xe2\
-\x00\x00\x02\x74\x00\x00\x00\x00\x00\x01\x00\x00\x39\xeb\
+\x00\x00\x02\xea\x00\x00\x00\x00\x00\x01\x00\x00\x48\x6c\
+\x00\x00\x03\x82\x00\x00\x00\x00\x00\x01\x00\x00\x54\x86\
+\x00\x00\x05\x88\x00\x01\x00\x00\x00\x01\x00\x00\x7f\xe2\
+\x00\x00\x03\x40\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x3c\
+\x00\x00\x06\x28\x00\x00\x00\x00\x00\x01\x00\x00\x89\x6f\
+\x00\x00\x01\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x21\x9a\
+\x00\x00\x00\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x10\x50\
+\x00\x00\x03\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x58\x7f\
+\x00\x00\x01\x18\x00\x00\x00\x00\x00\x01\x00\x00\x1c\x5c\
+\x00\x00\x01\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x28\xfb\
+\x00\x00\x02\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x37\x46\
+\x00\x00\x04\x08\x00\x00\x00\x00\x00\x01\x00\x00\x5f\x6c\
+\x00\x00\x05\x14\x00\x00\x00\x00\x00\x01\x00\x00\x75\xf6\
+\x00\x00\x03\x16\x00\x00\x00\x00\x00\x01\x00\x00\x4b\x96\
+\x00\x00\x05\x48\x00\x00\x00\x00\x00\x01\x00\x00\x79\x4c\
+\x00\x00\x03\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x5b\x4c\
+\x00\x00\x05\xea\x00\x00\x00\x00\x00\x01\x00\x00\x86\x6f\
+\x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\x34\xa1\
+\x00\x00\x02\xaa\x00\x00\x00\x00\x00\x01\x00\x00\x42\x6f\
+\x00\x00\x04\x50\x00\x01\x00\x00\x00\x01\x00\x00\x66\xf7\
+\x00\x00\x04\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x63\xad\
+\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x14\xfe\
+\x00\x00\x04\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x6f\x23\
+\x00\x00\x02\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x44\xec\
+\x00\x00\x05\x72\x00\x00\x00\x00\x00\x01\x00\x00\x7c\x72\
+\x00\x00\x03\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x51\x76\
+\x00\x00\x00\x42\x00\x00\x00\x00\x00\x01\x00\x00\x02\x81\
+\x00\x00\x00\xee\x00\x00\x00\x00\x00\x01\x00\x00\x17\xf4\
+\x00\x00\x04\xec\x00\x00\x00\x00\x00\x01\x00\x00\x71\xa4\
+\x00\x00\x01\x9c\x00\x00\x00\x00\x00\x01\x00\x00\x26\x40\
+\x00\x00\x04\x66\x00\x00\x00\x00\x00\x01\x00\x00\x68\xd8\
+\x00\x00\x02\x96\x00\x00\x00\x00\x00\x01\x00\x00\x3e\x80\
+\x00\x00\x02\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x30\
+\x00\x00\x05\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x85\x02\
+\x00\x00\x00\x90\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x88\
+\x00\x00\x01\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x21\x2a\
+\x00\x00\x05\xae\x00\x00\x00\x00\x00\x01\x00\x00\x82\x07\
+\x00\x00\x04\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x69\xf8\
 "
 
 qt_resource_struct_v2 = b"\
@@ -2620,88 +2620,88 @@
 \x00\x00\x00\x00\x00\x00\x00\x00\
 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x29\x00\x00\x00\x02\
 \x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x01\x32\x00\x00\x00\x00\x00\x01\x00\x00\x19\x8d\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x01\x00\x00\x10\x65\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x02\x42\x00\x00\x00\x00\x00\x01\x00\x00\x37\x6a\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x01\x9e\x00\x00\x00\x00\x00\x01\x00\x00\x29\x87\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x04\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x5e\xed\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\x18\x00\x01\x00\x00\x00\x01\x00\x00\x44\xed\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x02\x18\x00\x00\x00\x00\x00\x01\x00\x00\x34\x30\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x01\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x2f\x57\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x06\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x89\xa2\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x00\x24\xd9\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\x62\x00\x00\x00\x00\x00\x01\x00\x00\x4b\x53\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x97\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x05\xd6\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x34\
-\x00\x00\x01\x71\x14\x51\x77\x38\
+\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x05\x04\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdd\
+\x00\x00\x01\xea\x00\x00\x00\x00\x00\x01\x00\x00\x2e\xc9\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
 \x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x47\x12\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x41\x97\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x01\xca\x00\x00\x00\x00\x00\x01\x00\x00\x2c\xb1\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x04\x78\x00\x00\x00\x00\x00\x01\x00\x00\x62\xe6\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x14\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\x84\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x20\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x78\x6f\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x04\xca\x00\x00\x00\x00\x00\x01\x00\x00\x68\xc7\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\x04\x00\x01\x00\x00\x00\x01\x00\x00\x6f\x33\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x00\x84\x00\x00\x00\x00\x00\x01\x00\x00\x08\x4d\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x00\x50\x00\x00\x00\x00\x00\x01\x00\x00\x03\xea\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x02\xac\x00\x00\x00\x00\x00\x01\x00\x00\x3f\x16\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x85\x02\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x51\x20\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x04\x22\x00\x00\x00\x00\x00\x01\x00\x00\x5b\xdd\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x71\x14\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x05\x70\x00\x00\x00\x00\x00\x01\x00\x00\x74\x07\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x03\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x54\x90\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x04\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x66\x0c\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x06\x16\x00\x00\x00\x00\x00\x01\x00\x00\x88\x82\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x04\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x6b\x44\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x01\x00\x00\x16\x3d\
-\x00\x00\x01\x71\x14\x51\x77\x38\
-\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x06\xe0\
-\x00\x00\x01\x71\x14\x51\x77\x37\
-\x00\x00\x01\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x21\x11\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x05\x40\x00\x00\x00\x00\x00\x01\x00\x00\x73\x97\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x04\x00\x00\x00\x00\x00\x00\x01\x00\x00\x58\xe2\
-\x00\x00\x01\x71\x14\x51\x77\x39\
-\x00\x00\x02\x74\x00\x00\x00\x00\x00\x01\x00\x00\x39\xeb\
-\x00\x00\x01\x71\x14\x51\x77\x38\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdb\
+\x00\x00\x02\xea\x00\x00\x00\x00\x00\x01\x00\x00\x48\x6c\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x03\x82\x00\x00\x00\x00\x00\x01\x00\x00\x54\x86\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x05\x88\x00\x01\x00\x00\x00\x01\x00\x00\x7f\xe2\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdd\
+\x00\x00\x03\x40\x00\x00\x00\x00\x00\x01\x00\x00\x4e\x3c\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x06\x28\x00\x00\x00\x00\x00\x01\x00\x00\x89\x6f\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x01\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x21\x9a\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdd\
+\x00\x00\x00\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x10\x50\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x03\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x58\x7f\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x01\x18\x00\x00\x00\x00\x00\x01\x00\x00\x1c\x5c\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdd\
+\x00\x00\x01\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x28\xfb\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x02\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x37\x46\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x04\x08\x00\x00\x00\x00\x00\x01\x00\x00\x5f\x6c\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdd\
+\x00\x00\x05\x14\x00\x00\x00\x00\x00\x01\x00\x00\x75\xf6\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x03\x16\x00\x00\x00\x00\x00\x01\x00\x00\x4b\x96\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x05\x48\x00\x00\x00\x00\x00\x01\x00\x00\x79\x4c\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdb\
+\x00\x00\x03\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x5b\x4c\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x05\xea\x00\x00\x00\x00\x00\x01\x00\x00\x86\x6f\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\x34\xa1\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdd\
+\x00\x00\x02\xaa\x00\x00\x00\x00\x00\x01\x00\x00\x42\x6f\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x04\x50\x00\x01\x00\x00\x00\x01\x00\x00\x66\xf7\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdd\
+\x00\x00\x04\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x63\xad\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x14\xfe\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x04\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x6f\x23\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdb\
+\x00\x00\x02\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x44\xec\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x05\x72\x00\x00\x00\x00\x00\x01\x00\x00\x7c\x72\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdd\
+\x00\x00\x03\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x51\x76\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x00\x42\x00\x00\x00\x00\x00\x01\x00\x00\x02\x81\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x00\xee\x00\x00\x00\x00\x00\x01\x00\x00\x17\xf4\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x04\xec\x00\x00\x00\x00\x00\x01\x00\x00\x71\xa4\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x01\x9c\x00\x00\x00\x00\x00\x01\x00\x00\x26\x40\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x04\x66\x00\x00\x00\x00\x00\x01\x00\x00\x68\xd8\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdd\
+\x00\x00\x02\x96\x00\x00\x00\x00\x00\x01\x00\x00\x3e\x80\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdd\
+\x00\x00\x02\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x30\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
+\x00\x00\x05\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x85\x02\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdb\
+\x00\x00\x00\x90\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x88\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdd\
+\x00\x00\x01\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x21\x2a\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdd\
+\x00\x00\x05\xae\x00\x00\x00\x00\x00\x01\x00\x00\x82\x07\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdd\
+\x00\x00\x04\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x69\xf8\
+\x00\x00\x01\x75\xf2\xdd\xa0\xdc\
 "
 
 qt_version = [int(v) for v in QtCore.qVersion().split('.')]

Modified: trunk/Build/source/utils/asymptote/GUI/setup.py
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/setup.py	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/GUI/setup.py	2021-01-02 16:31:31 UTC (rev 57291)
@@ -8,6 +8,6 @@
     version=xasyVersion.xasyVersion,
     author="Supakorn Rassameemasmuang, Orest Shardt, and John C. Bowman",
     description="User interface for Asymptote, a vector graphics language", 
-    url="http://asymptote.sourceforge.net",
+    url="https://asymptote.sourceforge.io",
     download_url="https://sourceforge.net/projects/asymptote/"
 )

Modified: trunk/Build/source/utils/asymptote/GUI/xasy2asy.py
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/xasy2asy.py	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/GUI/xasy2asy.py	2021-01-02 16:31:31 UTC (rev 57291)
@@ -716,7 +716,7 @@
             image = Qg.QImage(file)
         elif fileformat == 'svg':
             if containsClip:
-                image = xs.SvgObject(file)
+                image = xs.SvgObject(self.asyengine.tempDirName+file)
             else:
                 image = Qs.QSvgRenderer(file)
                 assert image.isValid()
@@ -826,7 +826,7 @@
             for i in range(len(imageInfos)):
                 box, key, localCount, useClip = imageInfos[i]
                 l, b, r, t = [float(a) for a in box.split()]
-                name = "{:s}_{:d}.{:s}".format(self.asyengine.tempDirName, i, fileformat)
+                name = "_{:d}.{:s}".format(i, fileformat)
 
                 self.imageHandleQueue.put((name, fileformat, (l, -t, r, -b), i, key, localCount, useClip))
 
@@ -873,12 +873,15 @@
 
             n += 1
 
-        if text == "Error\n":
-            self.imageHandleQueue.put(("ERROR", fin.readline()))
+        if raw_text != "Error\n":
+            if text == "Error\n":
+                self.imageHandleQueue.put(("ERROR", fin.readline()))
+            else:
+                render()
+
+            self.asy2psmap = asyTransform(xu.listize(fin.readline().rstrip(),float))
         else:
-            render()
-
-        self.asy2psmap = asyTransform(xu.listize(fin.readline().rstrip(),float))
+            self.asy2psmap = identity()
         self.imageHandleQueue.put((None,))
         self.asyfied = True
 

Modified: trunk/Build/source/utils/asymptote/INSTALL
===================================================================
--- trunk/Build/source/utils/asymptote/INSTALL	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/INSTALL	2021-01-02 16:31:31 UTC (rev 57291)
@@ -16,7 +16,7 @@
 ./configure --prefix=$HOME/asymptote
 
 If you get errors from a broken texinfo or pdftex installation, simply put
-http://asymptote.sourceforge.net/asymptote.pdf
+https://asymptote.sourceforge.io/asymptote.pdf
 in the doc directory and repeat the commands make all and make install.
 
 For a list of configure options, type

Modified: trunk/Build/source/utils/asymptote/Makefile.in
===================================================================
--- trunk/Build/source/utils/asymptote/Makefile.in	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/Makefile.in	2021-01-02 16:31:31 UTC (rev 57291)
@@ -13,7 +13,7 @@
 GCLIBS = $(GCPPLIB) $(GCLIB)
 LFLAGS = @LDFLAGS@
 LIBS = $(LFLAGS) @PTHREAD_LIBS@ @GLEW@ @LIBS@ $(GCLIBS)
-DOSLIBS = $(subst -lncurses, -ltermcap, $(LIBS)) -lgdi32 -lwinmm -s -static
+DOSLIBS = $(subst -lncurses, -ltermcap, $(LIBS)) -lwolfssl -lgdi32 -lwinmm -s -static
 
 PERL = perl
 
@@ -60,7 +60,7 @@
         GUI/xasyVersion.py $(XNAME) doc/asy-latex.pdf $(SYMBOLSH)
 EXTRA = asy-mode.el asy-init.el asy.vim asy_filetype.vim asy-kate.sh \
         asymptote.py reload.js nopapersize.ps
-EXEXTRA = piicon.png *.views *.dat *.bib
+EXEXTRA = piicon.png 100d.pdb1 *.views *.dat *.bib
 DOCEXTRA = *.asy *.csv *.dat latexusage.tex externalprc.tex pixel.pdf
 KEYWORDS = base $(ASYMPTOTE_SITEDIR)
 LATEXFILES = asymptote.sty asycolors.sty ocg.sty latexmkrc
@@ -107,8 +107,8 @@
 last = $(shell head -1 revision.cc | sed -e 's/.*\"\(.*\)\";/\1/')
 usinggit = $(shell if test -d ".git"; then echo yes; fi)
 ifeq ($(usinggit),yes)
-	revision = $(shell LC_ALL="C" git describe --long | sed -e 's/git//' \
-                    | sed -e 's/-g.*//')
+	revision = $(shell LC_ALL="C" git describe --long | \
+	sed -e 's/git-\([0-9]*\)-g.*/-\1/' | sed -e 's/-0-g.*//')
 else
 	revision = @VERSION@
 endif
@@ -136,6 +136,7 @@
 	echo string VERSION=\"$(revision)\"\; > base/version.asy
 	echo @set VERSION $(revision) > doc/version.texi
 	echo @set Datadir @datadir@ >> doc/version.texi
+	echo @set Docdir @docdir@ >> doc/version.texi
 
 	echo "#!/usr/bin/env python3" > GUI/xasyVersion.py
 	echo xasyVersion = \"$(revision)\" >> GUI/xasyVersion.py
@@ -356,7 +357,7 @@
 	./wce
 	$(MAKE) -C tests all
 
-glew.o: glew.c GL/glew.h
+glew.o: glew.c GL/glew.h GL/glew.c config.h
 	$(CC) -I. $(GLEWOPTS) -o glew.o -c glew.c
 
 .SUFFIXES: .c .cc .o .d .ui .py

Modified: trunk/Build/source/utils/asymptote/ReleaseNotes
===================================================================
--- trunk/Build/source/utils/asymptote/ReleaseNotes	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/ReleaseNotes	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1,3 +1,68 @@
+Release Notes for Version 2.68
+
+Floating point exceptions in OpenGL libraries are now masked.
+A normalization used to render tubes was fixed.  A Label align(Label,dir)
+function was added for aligning label normals.  A new settings.compress=true
+option controls PDF image compression.  A bool isometry(transform) function
+was added.  Various bugs in the geometry module were fixed.
+The transpose function ignores uninitialized elements.
+Null fields are treated as undefined values in cvs mode and in line mode.
+Uninitialized rendering variables were fixed. A RELEASE variable was added.
+Logarithmic graphs of surfaces are supported. Files are opened
+without assuming an asy suffix.  Suport for Ghostscript 9.53 was implemented.
+The end argument of Margin functions is now optional. A function
+cputime().change.clock that returns the high-resolution elapsed wall clock
+time was added.  A --disable-curl option was added.
+The centering of slides was fixed.  Null characters and null strings are
+supported in the replace function.  Configuration without readline support
+was fixed.  In binary mode, an entire file can be read into a string.
+The getc function now works properly when reading the NUL character.
+Reproducible builds are supported.
+
+Release Notes for Version 2.67
+
+Support was added for importing and inputting URLs. Compilation and 2D SVG
+to HTML conversion no longer requires the GLM library; 2D html output is
+fit to the canvas unless settings.absolute=true. Diagnostics for dvisvgm
+were enabled; SVG clipping was fixed.  A -globalread setting (default true)
+was implemented.  Files are opened using the search path, which now
+includes the examples directory.  An invalid array dimensions error was fixed.
+A WebGL resize event listener was added; the + and - keys now zoom in and out,
+rather than expanding and shrinking the viewport. Remeshing on export is
+forced; unnecessary remeshing on zoom in AsyGL is avoided. 
+The triple dir(path3, path3) function was normalized.  The repositioning of
+OpenGL windows was fixed. The copy constructors for path and path3 were fixed.
+Asymptote errors no longer cause Xasy to hang. A numerical precision issue
+was fixed.  A portable way of skipping whitespace was implemented; casts
+from empty strings now yield uninitialized values. Interrupt handling under
+MacOS X was fixed. A devicepixelratio setting was implemented. The error
+location is displayed in the console. Segmentation faults were fixed.
+The documentation was updated and the code was reformatted. A hang on exit
+under MSWindows was fixed. Obsolete encoding modules were removed.  
+
+Release Notes for Version 2.66
+
+A bug in the Bezier patch bounds was fixed. Vertex and material data are
+copied from the CPU to GPU only when necessary. The default Headlamp light
+was brightened. WebGL output is centered in the viewport, extending to the
+canvas boundary; the precision of planar Bezier surfaces was increased  
+to avoid artifacts. Fullscreen mode has been fixed; the new default
+maxviewport=(0,0) specifies the screen dimensions. Camera adjustment was fixed.
+Problems with Xasy and interactive signals under MSWindows were fixed.
+A background color for both 2D and 3D images can be specified with
+currentlight.background. Offscreen rendering on headless machines has been
+reinstated; while the setting offscreen has been removed, one can again
+configure asy for either onscreen or offscreen rendering. Clipping was removed
+from the slopefield module. Functions mapArray, mapTemplate, real abs2(pair),
+and real abs2(triple) were implemented. The new Ghostscript transparency model
+requires Ghostscript 9.52 or later. The detection of TeX errors was improved.
+An array segmentation fault was fixed; array dimensions are checked.
+Flattened monochrome tensor patches with interior internal control points are
+now drawn as filled cyclic paths. PDF offsets were fixed, along with the
+auto-reload feature for Acroread. SVG support was improved; 2D images can now
+be output in HTML format using inline SVG code, to support the
+Asymptote Web Application, a new cloud service at http://asymptote.ualberta.ca.
+
 Release Notes for Version 2.65
 
 A bug in rendering 2D preview images of a 3D scene was fixed.

Modified: trunk/Build/source/utils/asymptote/access.cc
===================================================================
--- trunk/Build/source/utils/asymptote/access.cc	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/access.cc	2021-01-02 16:31:31 UTC (rev 57291)
@@ -56,7 +56,7 @@
   e.encode(inst::pop);
   encode(act, pos, e);
 }
-  
+
 /* callableAccess */
 void callableAccess::encode(action act, position pos, coder &e)
 {
@@ -79,8 +79,8 @@
   e.encode(inst::pop);
   encode(act, pos, e);
 }
-  
 
+
 /* frameAccess */
 void frameAccess::encode(action act, position pos, coder &e)
 {
@@ -122,8 +122,8 @@
              offset);
   }
   else if (e.encode(level)) {
-      e.encode(act == WRITE ? inst::fieldsave : inst::fieldpush,
-               offset);
+    e.encode(act == WRITE ? inst::fieldsave : inst::fieldpush,
+             offset);
   }
   else {
     frameError(pos);
@@ -159,5 +159,5 @@
   field->encode(act, pos, e, qualifierLevel);
 }
 
-    
+
 } // namespace trans

Modified: trunk/Build/source/utils/asymptote/access.h
===================================================================
--- trunk/Build/source/utils/asymptote/access.h	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/access.h	2021-01-02 16:31:31 UTC (rev 57291)
@@ -17,11 +17,11 @@
 #include "vm.h"
 
 namespace vm {
-  struct callable;
+struct callable;
 }
 
 namespace trans {
-  
+
 class frame;
 class coder;
 
@@ -32,7 +32,7 @@
 };
 
 // These serves as the base class for the accesses.
-class access : public gc { 
+class access : public gc {
 protected:
   // Generic compiler access error - if the compiler functions properly,
   // none of these should be reachable by the user.
@@ -44,7 +44,7 @@
 
 public:
   virtual ~access() = 0;
-  
+
   // Encode a read/write/call of the access when nothing is on the stack.
   virtual void encode(action, position pos, coder &)
   {
@@ -59,7 +59,7 @@
 };
 
 // This class represents identity conversions in casting.
-class identAccess : public access 
+class identAccess : public access
 {
   virtual void encode(action act, position, coder&);
 };
@@ -95,7 +95,7 @@
 public:
   frameAccess(frame *f)
     : f(f) {}
-  
+
   void encode(action act, position pos, coder &e);
   void encode(action act, position pos, coder &e, frame *top);
 };
@@ -116,7 +116,7 @@
 class qualifiedAccess : public access {
   // The location and frame of the record.
   access *qualifier;
-  frame *qualifierLevel;  
+  frame *qualifierLevel;
 
   // The location of the field relative to the record.
   access *field;

Modified: trunk/Build/source/utils/asymptote/align.h
===================================================================
--- trunk/Build/source/utils/asymptote/align.h	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/align.h	2021-01-02 16:31:31 UTC (rev 57291)
@@ -18,8 +18,8 @@
 #ifdef __Array_h__
 
 namespace Array {
-static const array1<Complex> NULL1;  
-static const array2<Complex> NULL2;  
+static const array1<Complex> NULL1;
+static const array2<Complex> NULL2;
 static const array3<Complex> NULL3;
 }
 
@@ -64,9 +64,9 @@
   const char *nomem="Memory limits exceeded";
 #ifdef HAVE_POSIX_MEMALIGN
   int rc=posix_memalign(&mem,align,len*sizeof(T));
-#else  
+#else
   int rc=posix_memalign0(&mem,align,len*sizeof(T));
-#endif  
+#endif
   if(rc == EINVAL) std::cerr << invalid << std::endl;
   if(rc == ENOMEM) std::cerr << nomem << std::endl;
   v=(T *) mem;
@@ -81,7 +81,7 @@
   free(v);
 #else
   free0(v);
-#endif  
+#endif
 }
 }
 
@@ -115,7 +115,7 @@
   free(p);
 #else
   Array::free0(p);
-#endif  
+#endif
 }
 
 }

Modified: trunk/Build/source/utils/asymptote/angle.h
===================================================================
--- trunk/Build/source/utils/asymptote/angle.h	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/angle.h	2021-01-02 16:31:31 UTC (rev 57291)
@@ -17,7 +17,7 @@
 
 const double Cpiby180=PI/180.0;
 const double C180bypi=180.0/PI;
-  
+
 inline double radians(double theta)
 {
   return theta*Cpiby180;
@@ -39,12 +39,12 @@
   }
   return atan2(y,x);
 }
-  
+
 // Return an angle in the interval [0,360).
 inline double principalBranch(double deg)
 {
   deg=fmod(deg,360.0);
-  if(deg < 0) deg += 360.0; 
+  if(deg < 0) deg += 360.0;
   return deg;
 }
 

Modified: trunk/Build/source/utils/asymptote/application.cc
===================================================================
--- trunk/Build/source/utils/asymptote/application.cc	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/application.cc	2021-01-02 16:31:31 UTC (rev 57291)
@@ -53,7 +53,7 @@
 
   if (rest)
     rest->trans(e, temps);
-  
+
   transMaker(e, (Int)inits.size(), (bool)rest);
 }
 
@@ -93,7 +93,7 @@
         ++y;
     l.push_front(x);
   }
-  
+
   // Tests if x is maximal.
   bool maximal(application *x) {
     for (app_list::iterator y=l.begin(); y!=l.end(); ++y)
@@ -140,7 +140,7 @@
   }
 }
 
-//const Int REST=-1; 
+//const Int REST=-1;
 const Int NOMATCH=-2;
 
 Int application::find(symbol name) {
@@ -185,7 +185,7 @@
 {
   formal &target=sig->getFormal(spot);
   if(target.t->kind == types::ty_error) return false;
-  
+
   score s=castScore(e, target, source);
 
   if (s == FAIL)
@@ -252,7 +252,7 @@
     }
   return false;
 }
-  
+
 // When the argument should be evaluated, possibly adjusting for a rest
 // argument which occurs before named arguments.
 size_t adjustIndex(size_t i, size_t ri)
@@ -291,7 +291,7 @@
   // Fill in any remaining arguments with their defaults.
   return complete();
 }
-       
+
 bool application::matchOpen(env &e, signature *source, arglist &al) {
   assert(rest);
 
@@ -316,8 +316,8 @@
   application *app=new application(t);
 
   bool success = t->getSignature()->isOpen ?
-                     app->matchOpen(e, source, al) :
-                     app->matchSignature(e, source, al);
+    app->matchOpen(e, source, al) :
+    app->matchSignature(e, source, al);
 
   //cout << "MATCH " << success << endl;
 
@@ -428,7 +428,7 @@
   if (source->hasRest()) {
     if (!target->hasRest())
       return false;
-    
+
     if (!equivalent(source->getRest().t, target->getRest().t))
       return false;
   }
@@ -454,42 +454,42 @@
     return l; /* empty */
 
   for (ty_vector::iterator t=o->sub.begin(); t!=o->sub.end(); ++t)
-  {
-    if ((*t)->kind != ty_function)
-      continue;
+    {
+      if ((*t)->kind != ty_function)
+        continue;
 
-    function *ft = (function *)*t;
+      function *ft = (function *)*t;
 
-    // First we run a test to see if all arguments could be exactly matched.
-    // If this returns false, no such match is possible.
-    // If it returns true, an exact match may or may not be possible.
-    if (!exactMightMatch(ft->getSignature(), source))
-      continue;
+      // First we run a test to see if all arguments could be exactly matched.
+      // If this returns false, no such match is possible.
+      // If it returns true, an exact match may or may not be possible.
+      if (!exactMightMatch(ft->getSignature(), source))
+        continue;
 
-    application *a=application::match(e, ft, source, al);
+      application *a=application::match(e, ft, source, al);
 
-    // Consider calling
-    //   void f(A a=new A, int y)
-    // with
-    //   f(3)
-    // This matches exactly if there is no implicit cast from int to A.
-    // Otherwise, it does not match.
-    // Thus, there is no way to know if the
-    // match truly is exact without looking at the environment.
-    // In such a case, exactMightMatch() must return true, but there is no
-    // exact match.  Such false positives are eliminated here.
-    // 
-    // Consider calling
-    //   void f(int x, real y=0.0, int z=0)
-    // with
-    //   f(1,2)
-    // exactMightMatch() will return true, matching 1 to x and 2 to z, but the
-    // application::match will give an inexact match of 1 to x to 2 to y, due
-    // to the cast from int to real.  Therefore, we must test for exactness
-    // even after matching.
-    if (a && a->exact())
-      l.push_back(a);
-  }
+      // Consider calling
+      //   void f(A a=new A, int y)
+      // with
+      //   f(3)
+      // This matches exactly if there is no implicit cast from int to A.
+      // Otherwise, it does not match.
+      // Thus, there is no way to know if the
+      // match truly is exact without looking at the environment.
+      // In such a case, exactMightMatch() must return true, but there is no
+      // exact match.  Such false positives are eliminated here.
+      //
+      // Consider calling
+      //   void f(int x, real y=0.0, int z=0)
+      // with
+      //   f(1,2)
+      // exactMightMatch() will return true, matching 1 to x and 2 to z, but the
+      // application::match will give an inexact match of 1 to x to 2 to y, due
+      // to the cast from int to real.  Therefore, we must test for exactness
+      // even after matching.
+      if (a && a->exact())
+        l.push_back(a);
+    }
 
   //cout << "EXACTMATCH " << (!l.empty()) << endl;
   return l;
@@ -514,8 +514,8 @@
   // application::match.  It would be nice to avoid this somehow, but the
   // additional complexity is probably not worth the minor speed improvement.
   if (equivalent(formals[0].t, t1))
-     return e.fastCastable(formals[1].t, t2);
-  else 
+    return e.fastCastable(formals[1].t, t2);
+  else
     return equivalent(formals[1].t, t2) && e.fastCastable(formals[0].t, t1);
 }
 
@@ -550,24 +550,24 @@
   assert(t1); assert(t2);
 
   for (ty_vector::iterator t=o->sub.begin(); t!=o->sub.end(); ++t)
-  {
-    if ((*t)->kind != ty_function)
-      continue;
+    {
+      if ((*t)->kind != ty_function)
+        continue;
 
-    function *ft = (function *)*t;
+      function *ft = (function *)*t;
 
 #if 1
-    if (!halfExactMightMatch(e, ft->getSignature(), t1, t2))
-      continue;
+      if (!halfExactMightMatch(e, ft->getSignature(), t1, t2))
+        continue;
 #endif
 
-    application *a=application::match(e, ft, source, al);
+      application *a=application::match(e, ft, source, al);
 
 #if 1
-    if (a && a->halfExact())
-      l.push_back(a);
+      if (a && a->halfExact())
+        l.push_back(a);
 #endif
-  }
+    }
 
   return l;
 }
@@ -578,7 +578,7 @@
 // not give any speed-up.
 bool tooManyArgs(types::signature *target, types::signature *source) {
   return source->getNumFormals() > target->getNumFormals() &&
-         !target->hasRest();
+    !target->hasRest();
 }
 
 // The full overloading resolution system, which handles casting of arguments,
@@ -624,9 +624,9 @@
         assert(a->exact() == exactlyMatchable(ft->getSignature(), source));
         if (a->halfExact() && !namedFormals(source)) {
           assert(halfExactMightMatch(e, target, source->getFormal(0).t,
-                                                source->getFormal(1).t));
+                                     source->getFormal(1).t));
         }
-          
+
       }
       if (a && a->exact())
         exact = true;
@@ -640,7 +640,7 @@
   cout << (perfect     ? "PERFECT" :
            exact       ? "EXACT" :
            halfExact   ? "HALFEXACT" :
-                         "IMPERFECT")
+           "IMPERFECT")
        << endl;
 #endif
 

Modified: trunk/Build/source/utils/asymptote/application.h
===================================================================
--- trunk/Build/source/utils/asymptote/application.h	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/application.h	2021-01-02 16:31:31 UTC (rev 57291)
@@ -18,7 +18,7 @@
 
 // Defined in runtime.in:
 namespace run {
-  void pushDefault(vm::stack *Stack);
+void pushDefault(vm::stack *Stack);
 }
 
 using absyntax::arglist;
@@ -93,7 +93,7 @@
   restArg()
     : rest(0) {}
 
-  virtual ~restArg() 
+  virtual ~restArg()
   {}
 
   // Encodes the instructions to make an array from size elements on the stack.
@@ -247,11 +247,11 @@
 
   // Matches the argument to a formal in the target signature (possibly causing
   // other formals in the target to be matched to default values), and updates
-  // the matchpoint accordingly. 
+  // the matchpoint accordingly.
   bool matchArgument(env &e, types::formal& source,
                      varinit *a, size_t evalIndex);
 
-  // Match an argument bound to a name, as in f(index=7). 
+  // Match an argument bound to a name, as in f(index=7).
   bool matchNamedArgument(env &e, types::formal& source,
                           varinit *a, size_t evalIndex);
 
@@ -261,7 +261,7 @@
 
   // Match a rest argument in the calling expression.
   bool matchRest(env &e, types::formal& f, varinit *a, size_t evalIndex);
- 
+
   // Match the argument represented in signature to the target signature.  On
   // success, all of the arguments in args will be properly set up.
   bool matchSignature(env &e, types::signature *source, arglist &al);

Modified: trunk/Build/source/utils/asymptote/array.cc
===================================================================
--- trunk/Build/source/utils/asymptote/array.cc	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/array.cc	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1,7 +1,7 @@
 /*****
  * array.cc
  * Andy Hammerlindl  2008/01/26
- * 
+ *
  * Array type used by virtual machine.
  *****/
 
@@ -10,6 +10,8 @@
 
 namespace vm {
 
+const char *dereferenceNullArray="dereference of null array";
+
 inline void checkBackSlice(Int left, Int right)
 {
   if (right < left)
@@ -156,10 +158,11 @@
 
 item copyItemToDepth(item i, size_t depth)
 {
-  if (depth == 0)
+  if(depth == 0)
     return i;
-  else
-    return get<array *>(i)->copyToDepth(depth);
+  array* a=get<array*>(i);
+  if(a == 0) vm::error(dereferenceNullArray);
+  return a->copyToDepth(depth);
 }
 
 array *array::copyToDepth(size_t depth)

Modified: trunk/Build/source/utils/asymptote/array.h
===================================================================
--- trunk/Build/source/utils/asymptote/array.h	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/array.h	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1,7 +1,7 @@
 /*****
  * array.h
  * Tom Prince 2005/06/18
- * 
+ *
  * Array type used by virtual machine.
  *****/
 
@@ -14,15 +14,17 @@
 
 namespace vm {
 
+extern const char *dereferenceNullArray;
+
 // Arrays are vectors with push and pop functions.
 class array : public mem::vector<item> {
-  bool cycle;  
+  bool cycle;
 
   void setNonBridgingSlice(size_t l, size_t r, mem::vector<item> *a);
   void setBridgingSlice(size_t l, size_t r, mem::vector<item> *a);
 public:
   array() : cycle(false) {}
-  
+
   array(size_t n)
     : mem::vector<item>(n), cycle(false)
   {}
@@ -46,7 +48,7 @@
   {
     return get<T>((*this)[i]);
   }
-  
+
   array *slice(Int left, Int right);
   void setSlice(Int left, Int right, array *a);
 
@@ -53,7 +55,7 @@
   void cyclic(bool b) {
     cycle=b;
   }
-  
+
   bool cyclic() const {
     return cycle;
   }
@@ -75,7 +77,7 @@
 
 inline size_t checkArray(const vm::array *a)
 {
-  if(a == 0) vm::error("dereference of null array");
+  if(a == 0) vm::error(dereferenceNullArray);
   return a->size();
 }
 
@@ -87,7 +89,7 @@
   vm::error(buf);
 }
 
-inline size_t checkArrays(const vm::array *a, const vm::array *b) 
+inline size_t checkArrays(const vm::array *a, const vm::array *b)
 {
   size_t asize=checkArray(a);
   size_t bsize=checkArray(b);
@@ -94,7 +96,7 @@
   checkEqual(asize,bsize);
   return asize;
 }
- 
+
 // Copies an item to a depth d.  If d == 0 then the item is just returned
 // without copying, otherwise, the array and its subarrays are copied to
 // depth d.

Modified: trunk/Build/source/utils/asymptote/arrayop.h
===================================================================
--- trunk/Build/source/utils/asymptote/arrayop.h	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/arrayop.h	2021-01-02 16:31:31 UTC (rev 57291)
@@ -24,7 +24,7 @@
 
 vm::array *copyArray(vm::array *a);
 vm::array *copyArray2(vm::array *a);
-  
+
 template<class T, class U, template <class S> class op>
 void arrayOp(vm::stack *s)
 {
@@ -73,7 +73,7 @@
 }
 
 extern const char *arrayempty;
-  
+
 template<class T, template <class S> class op>
 void binopArray(vm::stack *s)
 {
@@ -202,7 +202,7 @@
   if(n == 0) return true;
   size_t n0=checkArray(read<array*>(a,0));
   if(n0 != checkArray(read<array*>(b,0))) return false;
-    
+
   for(size_t i=0; i < n; ++i) {
     array *ai=read<array*>(a,i);
     array *bi=read<array*>(b,i);
@@ -300,7 +300,7 @@
   size_t u=size-1;
   if(key >= read<T>(a,u)) {s->push((Int) u); return;}
   size_t l=0;
-        
+
   while (l < u) {
     size_t i=(l+u)/2;
     if(key < read<T>(a,i)) u=i;
@@ -311,9 +311,9 @@
 }
 
 extern string emptystring;
-  
+
 void writestring(vm::stack *s);
-  
+
 template<class T>
 void write(vm::stack *s)
 {
@@ -325,7 +325,7 @@
   bool defaultfile=isdefault(it);
   camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
   if(!f->isOpen() || !f->enabled()) return;
-  
+
   size_t size=checkArray(a);
   if(S != "") f->write(S);
   f->write(first);
@@ -356,7 +356,7 @@
   bool defaultfile=isdefault(it);
   camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
   if(!f->isOpen() || !f->enabled()) return;
-  
+
   size_t asize=checkArray(a);
   size_t Asize=checkArray(A);
   if(f->Standard()) interact::lines=0;
@@ -363,7 +363,7 @@
   else if(!f->isOpen()) return;
   try {
     if(S != "") {f->write(S); f->writeline();}
-  
+
     size_t i=0;
     bool cont=true;
     while(cont) {
@@ -402,7 +402,7 @@
   }
   f->flush();
 }
-  
+
 template<class T>
 void writeArray2(vm::stack *s)
 {
@@ -411,10 +411,10 @@
   bool defaultfile=isdefault(it);
   camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
   if(!f->isOpen() || !f->enabled()) return;
-  
+
   size_t size=checkArray(a);
   if(f->Standard()) interact::lines=0;
-  
+
   try {
     for(size_t i=0; i < size; i++) {
       vm::item& I=(*a)[i];
@@ -443,10 +443,10 @@
   bool defaultfile=isdefault(it);
   camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
   if(!f->isOpen() || !f->enabled()) return;
-  
+
   size_t size=checkArray(a);
   if(f->Standard()) interact::lines=0;
-  
+
   try {
     for(size_t i=0; i < size;) {
       vm::item& I=(*a)[i];
@@ -477,7 +477,7 @@
 }
 
 template <class T, class S, T (*func)(S)>
-void arrayFunc(vm::stack *s) 
+void arrayFunc(vm::stack *s)
 {
   array *a=pop<array*>(s);
   size_t size=checkArray(a);
@@ -488,7 +488,7 @@
 }
 
 template <class T, class S, T (*func)(S)>
-void arrayFunc2(vm::stack *s) 
+void arrayFunc2(vm::stack *s)
 {
   array *a=pop<array*>(s);
   size_t size=checkArray(a);
@@ -499,7 +499,7 @@
     array *ci=new array(aisize);
     (*c)[i]=ci;
     for(size_t j=0; j < aisize; j++)
-    (*ci)[j]=func(read<S>(ai,j));
+      (*ci)[j]=func(read<S>(ai,j));
   }
   s->push(c);
 }
@@ -526,7 +526,7 @@
 {
   size_t size=checkdimension(a,dim);
   dest=(placement == NoGC) ? new T[size] : new(placement) T[size];
-  for(size_t i=0; i < size; i++) 
+  for(size_t i=0; i < size; i++)
     dest[i]=vm::read<T>(a,i);
 }
 
@@ -536,7 +536,7 @@
 {
   size_t size=checkdimension(a,dim);
   dest=(placement == NoGC) ? new T[size] : new(placement) T[size];
-  for(size_t i=0; i < size; i++) 
+  for(size_t i=0; i < size; i++)
     dest[i]=cast(vm::read<A>(a,i));
 }
 
@@ -559,7 +559,7 @@
     buf << "second matrix dimension must be " << dim2;
     vm::error(buf);
   }
-  
+
   dest=(placement == NoGC) ? new T[n*m] : new(placement) T[n*m];
   for(size_t i=0; i < n; i++) {
     vm::array *ai=vm::read<vm::array*>(a,i);
@@ -566,10 +566,10 @@
     size_t aisize=checkArray(ai);
     if(aisize == m) {
       T *desti=dest+i*m;
-      for(size_t j=0; j < m; j++) 
+      for(size_t j=0; j < m; j++)
         desti[j]=vm::read<T>(ai,j);
     } else
-      vm::error(square ? "matrix must be square" : 
+      vm::error(square ? "matrix must be square" :
                 "matrix must be rectangular");
   }
 }
@@ -581,7 +581,7 @@
   for(size_t i=0; i < n; ++i) {
     array *ai=new array(m);
     (*a)[i]=ai;
-    for(size_t j=0; j < m; ++j) 
+    for(size_t j=0; j < m; ++j)
       (*ai)[j]=p[m*i+j];
   }
   return a;

Modified: trunk/Build/source/utils/asymptote/asy-keywords.el
===================================================================
--- trunk/Build/source/utils/asymptote/asy-keywords.el	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/asy-keywords.el	2021-01-02 16:31:31 UTC (rev 57291)
@@ -2,7 +2,7 @@
 ;; This file is automatically generated by asy-list.pl.
 ;; Changes will be overwritten.
 ;;
-(defvar asy-keywords-version "2.65")
+(defvar asy-keywords-version "2.68")
 
 (defvar asy-keyword-name '(
 and controls tension atleast curl if else while for do return break continue struct typedef new access import unravel from include quote static public private restricted this explicit true false null cycle newframe operator ))
@@ -11,7 +11,7 @@
 Braid FitResult Label Legend Solution TreeNode abscissa arc arrowhead binarytree binarytreeNode block bool bool3 bounds bqe circle conic coord coordsys cputime ellipse evaluatedpoint file filltype frame grid3 guide horner hsv hyperbola int inversion key light line linefit marginT marker mass node object pair parabola patch path path3 pen picture point position positionedvector projection rational real revolution scaleT scientific segment side simplex slice solution splitface string surface tensionSpecifier ticklocate ticksgridT tickvalues transform transformation tree triangle trilinear triple vector vertex void ))
 
 (defvar asy-function-name '(
-AND Arc ArcArrow ArcArrows Arrow Arrows AtA Automatic AvantGarde B03 B13 B23 B33 BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog CLZ CTZ Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DOSendl DOSnewl DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Finite Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks Jn Label Landscape Left LeftRight LeftTicks Legend Linear Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OmitTickInterval OmitTickIntervals OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RGB RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Yn Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _begingroup3 _cputime _draw _eval _findroot _image _labelpath _projection _shipout _strokepath _texpath aCos aSin aTan abort abs accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline addseg adjust alias align all altitude angabscissa angle angledegrees angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize ascii asec asin asinh ask assert asy asyc!
 ode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial bins bisector bisectorpoint bispline bispline0 bitreverse blend blockconnector box bqe brace breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment check_fpt_zero checkconditionlength checker checkincreasing checklengths checkposition checkpt checkptincube checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect containmentTree contains contour contour3 controlSpecifier convert coordinates coordsys copy copyPairOrTriple cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder deactivatequote debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawCylinder drawDisk drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPhoton drawScalar drawSphere drawTube drawVertex drawVertexBox drawVertexBoxO drawVertexBoxX d!
 rawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawbeziertriangle drawline drawpixel drawstrokepath drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill filldraw filloutside fillrule filltype find findall findroot finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma gcd generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic graphicscale gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image implicitsurface incenter incentral incircle increasing incrementposition indexedfigure initdefaults initialized input inradius insert inside insphere integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isDuplicate isnan isogonal isogonalconjugate isotomic isotomicconjugate isparabola italic item jobname key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout lcm ldexp leastsquares legend legenditem length lexorder lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location log log10 log1p!
  logaxiscoverage longitude lookup make3dgrid makeMappingArray makeNode makecircle makedraw makepen maketriangle map margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markthin markuniform mass masscenter massformat math max max3 maxAfterTransform maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minAfterTransform minbezier minbound minipage minratio mintimes miterlimit mktemp momArrowPath momarrowsize monotonic multifigure nGrad nativeformat natural newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa node none norm normalout normalvideo nosetpagesize notaknot nowarn numberpage nurb object offset onpath opacity opposite orient orientation origin orthic orthocentercenter outdirectory outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum patchwithnormals path path3 pathbetween pathinface pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 photon piecewisestraight point polar polarconicroutine polargraph polygon popcount postcontrol postscript pow10 ppoint prc prc0 prconly precision precontrol prepend printBytecode print_random_addresses progress project projection projecttospan projecttospan_findcoeffs purge pwhermite quadpatches quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rationalidentity rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename render replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless scientific search searchtree sec secondary!
 X secondaryY seconds section sector seek seekeof segment segmentlimits sequence setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show simeq simplex simplexPhase1 simplexPhase2 simplexStandard simplexTableau simplexWrite simpson sin sinh size size3 skewness skip slant sleep slice slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile stripsuffix strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize texstring textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox toplocation transform transformation transpose trembleFuzz triangle triangleAbc triangleabc triangletoquads trianglewithnormals triangulate tricoef tridiagonal trilinear trim truepoint tube uncycle unfill uniform unique unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xasyKEY xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xmap xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zlimits zpart ztick ztick3 ztrans ))
+AND Arc ArcArrow ArcArrows Arrow Arrows AtA Automatic AvantGarde B03 B13 B23 B33 BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog CLZ CTZ Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DOSendl DOSnewl DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Finite Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks Jn Label Landscape Left LeftRight LeftTicks Legend Linear Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OmitTickInterval OmitTickIntervals OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RGB RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Yn Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _begingroup3 _cputime _draw _eval _findroot _image _labelpath _projection _shipout _strokepath _texpath aCos aSin aTan abort abs abs2 accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline addseg adjust alias align all altitude angabscissa angle angledegrees angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize ascii asec asin asinh ask assert asy!
  asycode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial bins bisector bisectorpoint bispline bispline0 bitreverse blend blockconnector box bqe brace breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment check_fpt_zero checkconditionlength checker checkincreasing checklengths checkposition checkpt checkptincube checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect containmentTree contains contour contour3 controlSpecifier convert coordinates coordsys copy copyPairOrTriple cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder deactivatequote debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawCylinder drawDisk drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPhoton drawScalar drawSphere drawTube drawVertex drawVertexBox drawVertexBoxO drawVertexB!
 oxX drawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawbeziertriangle drawline drawpixel drawstrokepath drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill filldraw filloutside fillrule filltype find findall findroot finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma gcd generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic graphicscale gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image implicitsurface incenter incentral incircle increasing incrementposition indexedfigure initdefaults initialized input inradius insert inside insphere integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isDuplicate isnan isogonal isogonalconjugate isometry isotomic isotomicconjugate isparabola italic item jobname key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout lcm ldexp leastsquares legend legenditem length lexorder lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location l!
 og log10 log1p logaxiscoverage longitude lookup make3dgrid makeMappingArray makeNode makecircle makedraw makepen maketriangle map mapArray mapTemplate margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markthin markuniform mass masscenter massformat math max max3 maxAfterTransform maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minAfterTransform minbezier minbound minipage minratio mintimes miterlimit mktemp momArrowPath momarrowsize monotonic multifigure nGrad nativeformat natural newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa node none norm normalout normalvideo notaknot nowarn numberpage nurb object offset onpath opacity opposite orient orientation origin orthic orthocentercenter outdirectory outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum patchwithnormals path path3 pathbetween pathinface pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 photon piecewisestraight point polar polarconicroutine polargraph polygon popcount postcontrol postscript pow10 ppoint prc prc0 prconly precision precontrol prepend printBytecode print_random_addresses progress project projection projecttospan projecttospan_findcoeffs purge pwhermite quadpatches quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rationalidentity rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename render replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless scientific search sea!
 rchtree sec secondaryX secondaryY seconds section sector seek seekeof segment segmentlimits sequence setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show simeq simplex simplexInit simplexPhase1 simplexPhase2 simplexTableau simplexWrite simpson sin sinh size size3 skewness skip slant sleep slice slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile stripsuffix strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize texstring textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox toplocation transform transformation transpose trembleFuzz triangle triangleAbc triangleabc triangletoquads trianglewithnormals triangulate tricoef tridiagonal trilinear trim truepoint tube type uncycle unfill uniform unique unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xasyKEY xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xmap xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zlimits zpart ztick ztick3 ztrans ))
 
 (defvar asy-variable-name '(
-Accent AliceBlue Align Allow AntiqueWhite Apricot Aqua Aquamarine Aspect Azure BeginPoint Beige Bisque Bittersweet Black BlanchedAlmond Blue BlueGreen BlueViolet Blues Both BrBG Break BrickRed Brown BuGn BuPu BurlyWood BurntOrange CCW CMRmap CW CadetBlue CarnationPink Center Centered Cerulean Chartreuse Chocolate Coeff Coral CornflowerBlue Cornsilk Crimson Crop Cyan Dandelion Dark2 DarkBlue DarkCyan DarkGoldenrod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet DeepPink DeepSkyBlue DefaultHead DimGray DodgerBlue Dotted Down Draw E ENE EPS ESE E_Euler E_PC E_RK2 E_RK3BS Emerald EndPoint Euler Fill FillDraw FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite GnBu Gold Goldenrod Gray Green GreenYellow Greens Greys Honeydew HookHead Horizontal HotPink I IgnoreAspect IndianRed Indigo Infinity Ivory JOIN_IN JOIN_OUT JungleGreen Khaki LM_DWARF LM_MACHEP LM_SQRT_DWARF LM_SQRT_GIANT LM_USERTOL Label Lavender LavenderBlush LawnGreen Left LeftJustified LeftSide LemonChiffon LightBlue LightCoral LightCyan LightGoldenrodYellow LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linear Linen Log Logarithmic Magenta Mahogany Mark MarkFill MarkPath Maroon Max MediumAquamarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed Melon MidPoint MidnightBlue Min MintCream MistyRose Moccasin Move MoveQuiet Mulberry N NE NNE NNW NULL_VERTEX NW NavajoWhite Navy NavyBlue NoAlign NoCrop NoFill NoSide OldLace Olive OliveDrab OliveGreen OrRd Orange OrangeRed Oranges Orchid Ox Oy PC PRGn Paired PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip Pastel1 Pastel2 Peach PeachPuff Periwinkle Peru PiYG PineGreen Pink Plum PowderBlue ProcessBlue PuBu PuBuGn PuOr PuRd Purple Purples RK2 RK3 RK3BS RK4 RK5 RK5DP RK5F RawSienna RdBu RdGy RdPu RdYlBu RdYlGn Red RedOrang!
 e RedViolet Reds Rhodamine Right RightJustified RightSide RosyBrown RoyalBlue RoyalPurple RubineRed S SE SSE SSW SW SaddleBrown Salmon SandyBrown SeaGreen Seashell Sepia Set1 Set2 Set3 Sienna Silver SimpleHead SkyBlue SlateBlue SlateGray Snow Spectral SpringGreen SteelBlue Suppress SuppressQuiet Tan TeXHead Teal TealBlue Thistle Ticksize Tomato Turquoise UnFill Up VERSION Value Vertical Violet VioletRed W WNW WSW Wheat White WhiteSmoke WildStrawberry XHIGH XLOW XYAlign YAlign YHIGH YLOW Yellow YellowGreen YellowOrange YlGn YlGnBu YlOrBr YlOrRd ZHIGH ZLOW _outpipe aboveequationskip addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor authorpen autumn axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate bernstein beveljoin bigvertexpen bigvertexsize binary black blue bm bone bottom bp bracedefaultratio braceinnerangle bracemidangle braceouterangle brg brown bullet bwr byfoci byvertices camerafactor chartreuse circlemarkradiusfactor circlenodesnumberfactor circleprecision circlescale cividis cm codefile codepen codeskip colorPen coloredNodes coloredSegments conditionlength conicnodesfactor cool coolwarm copper count cputimeformat crossmarksizefactor currentcoordsys currentlight currentpatterns currentpen currentpicture currentposition currentprojection curvilinearsystem cuttings cyan darkblue darkbrown darkcyan darkgray darkgreen darkgrey darkmagenta darkolive darkred dashdotted dashed datepen dateskip debuggerlines debugging deepblue deepcyan deepgray deepgreen deepgrey deepmagenta deepred deepyellow default defaultControl defaultS defaultbackpen defaultcoordsys defaultexcursion defaultfilename defaultformat defaultmassformat defaultpen defaultseparator differentlengths dot dotfactor dotfilltype dotframe dotted doublelinepen doublelinespacing down duplicateFuzz ellip!
 senodesnumberfactor eps epsgeo epsilon evenodd expansionfactor extendcap fermionpen figureborder figuremattpen file3 firstnode firststep foregroundcolor fuchsia fuzz gapfactor ghostpen gist_earth gist_ncar gist_stern gluonamplitude gluonpen gluonratio gray green grey hatchepsilon havepagenumber heavyblue heavycyan heavygray heavygreen heavygrey heavymagenta heavyred hline hot hsv hwratio hyperbolanodesnumberfactor identity identity4 ignore implicitshipout inch inches includegraphicscommand inf inferno infinity institutionpen intMax intMin invert invisible itempen itemskip itemstep jet labelmargin landscape lastnode left legendhskip legendlinelength legendmargin legendmarkersize legendmaxrelativewidth legendvskip lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightolive lightred lightyellow linemargin lm_infmsg lm_shortmsg longdashdotted longdashed magenta magma magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor maxrefinements mediumblue mediumcyan mediumgray mediumgreen mediumgrey mediummagenta mediumred mediumyellow middle minDistDefault minblockheight minblockwidth mincirclediameter minipagemargin minipagewidth minvertexangle miterjoin mm momarrowfactor momarrowlength momarrowmargin momarrowoffset momarrowpen monoPen morepoints nCircle nan newbulletcolor ngraph nil nipy_spectral nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive orange origin overpaint page pageheight pagemargin pagenumberalign pagenumberpen pagenumberposition pagewidth paleblue palecyan palegray palegreen palegrey palemagenta palered paleyellow parabolanodesnumberfactor perpfactor phi photonamplitude photonpen photonratio pi pink plain plain_bounds plain_scaling plasma plus preamblenodes pt purple r3 r4a r4b randMax realDigits realEpsilon realMax realMin red relativesystem reverse right roundcap roundjoin royalblue salmon saveFunctions scalarpen seismic sequencereal settings signedtrailingzero simp!
 lex solid spinner spring springgreen sqrtEpsilon squarecap squarepen startposition stdin stdout stepfactor stepfraction steppagenumberpen stepping stickframe stickmarksizefactor stickmarkspacefactor summer swap tab10 tab20 tab20b tab20c textpen ticksize tildeframe tildemarksizefactor tinv titlealign titlepagepen titlepageposition titlepen titleskip top trailingzero treeLevelStep treeMinNodeWidth treeNodeStep trembleAngle trembleFrequency trembleRandom tubegranularity twilight twilight_shifted undefined unitcircle unitsquare up urlpen urlskip version vertexpen vertexsize viewportmargin viewportsize viridis vline white winter wistia wye yellow ylabelwidth zeroTransform zerotickfuzz zerowinding ))
+Accent AliceBlue Align Allow AntiqueWhite Apricot Aqua Aquamarine Aspect Azure BeginPoint Beige Bisque Bittersweet Black BlanchedAlmond Blue BlueGreen BlueViolet Blues Both BrBG Break BrickRed Brown BuGn BuPu BurlyWood BurntOrange CCW CMRmap CW CadetBlue CarnationPink Center Centered Cerulean Chartreuse Chocolate Coeff Coral CornflowerBlue Cornsilk Crimson Crop Cyan Dandelion Dark2 DarkBlue DarkCyan DarkGoldenrod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet DeepPink DeepSkyBlue DefaultHead DimGray DodgerBlue Dotted Down Draw E ENE EPS ESE E_Euler E_PC E_RK2 E_RK3BS Emerald EndPoint Euler Fill FillDraw FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite GnBu Gold Goldenrod Gray Green GreenYellow Greens Greys Honeydew HookHead Horizontal HotPink I IgnoreAspect IndianRed Indigo Infinity Ivory JOIN_IN JOIN_OUT JungleGreen Khaki LM_DWARF LM_MACHEP LM_SQRT_DWARF LM_SQRT_GIANT LM_USERTOL Label Lavender LavenderBlush LawnGreen Left LeftJustified LeftSide LemonChiffon LightBlue LightCoral LightCyan LightGoldenrodYellow LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linear Linen Log Logarithmic Magenta Mahogany Mark MarkFill MarkPath Maroon Max MediumAquamarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed Melon MidPoint MidnightBlue Min MintCream MistyRose Moccasin Move MoveQuiet Mulberry N NE NNE NNW NULL_VERTEX NW NavajoWhite Navy NavyBlue NoAlign NoCrop NoFill NoSide OldLace Olive OliveDrab OliveGreen OrRd Orange OrangeRed Oranges Orchid Ox Oy PC PRGn Paired PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip Pastel1 Pastel2 Peach PeachPuff Periwinkle Peru PiYG PineGreen Pink Plum PowderBlue ProcessBlue PuBu PuBuGn PuOr PuRd Purple Purples RELEASE RK2 RK3 RK3BS RK4 RK5 RK5DP RK5F RawSienna RdBu RdGy RdPu RdYlBu RdYlGn Red !
 RedOrange RedViolet Reds Rhodamine Right RightJustified RightSide RosyBrown RoyalBlue RoyalPurple RubineRed S SE SSE SSW SW SaddleBrown Salmon SandyBrown SeaGreen Seashell Sepia Set1 Set2 Set3 Sienna Silver SimpleHead SkyBlue SlateBlue SlateGray Snow Spectral SpringGreen SteelBlue Suppress SuppressQuiet Tan TeXHead Teal TealBlue Thistle Ticksize Tomato Turquoise UnFill Up VERSION Value Vertical Violet VioletRed W WNW WSW Wheat White WhiteSmoke WildStrawberry XHIGH XLOW XYAlign YAlign YHIGH YLOW Yellow YellowGreen YellowOrange YlGn YlGnBu YlOrBr YlOrRd ZHIGH ZLOW _outpipe aboveequationskip addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor authorpen autumn axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate bernstein beveljoin bigvertexpen bigvertexsize binary black blue bm bone bottom bp bracedefaultratio braceinnerangle bracemidangle braceouterangle brg brown bullet bwr byfoci byvertices camerafactor chartreuse circlemarkradiusfactor circlenodesnumberfactor circleprecision circlescale cividis cm codefile codepen codeskip colorPen coloredNodes coloredSegments conditionlength conicnodesfactor cool coolwarm copper count cputimeformat crossmarksizefactor currentcoordsys currentlight currentpatterns currentpen currentpicture currentposition currentprojection curvilinearsystem cuttings cyan darkblue darkbrown darkcyan darkgray darkgreen darkgrey darkmagenta darkolive darkred dashdotted dashed datepen dateskip debuggerlines debugging deepblue deepcyan deepgray deepgreen deepgrey deepmagenta deepred deepyellow default defaultControl defaultS defaultbackpen defaultcoordsys defaultexcursion defaultfilename defaultformat defaultmassformat defaultpen defaultseparator differentlengths dot dotfactor dotfilltype dotframe dotted doublelinepen doublelinespacing down duplicateFu!
 zz ellipsenodesnumberfactor eps epsgeo epsilon evenodd expansionfactor extendcap fermionpen figureborder figuremattpen file3 firstnode firststep foregroundcolor fuchsia fuzz gapfactor ghostpen gist_earth gist_ncar gist_stern gluonamplitude gluonpen gluonratio gray green grey hatchepsilon havepagenumber heavyblue heavycyan heavygray heavygreen heavygrey heavymagenta heavyred hline hot hsv hwratio hyperbolanodesnumberfactor identity identity4 ignore implicitshipout inch inches includegraphicscommand inf inferno infinity institutionpen intMax intMin invert invisible itempen itemskip itemstep jet labelmargin landscape lastnode left legendhskip legendlinelength legendmargin legendmarkersize legendmaxrelativewidth legendvskip lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightolive lightred lightyellow linemargin lm_infmsg lm_shortmsg longdashdotted longdashed magenta magma magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor maxrefinements mediumblue mediumcyan mediumgray mediumgreen mediumgrey mediummagenta mediumred mediumyellow middle minDistDefault minblockheight minblockwidth mincirclediameter minipagemargin minipagewidth minvertexangle miterjoin mm momarrowfactor momarrowlength momarrowmargin momarrowoffset momarrowpen monoPen morepoints nCircle nan newbulletcolor ngraph nil nipy_spectral nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive orange origin overpaint page pageheight pagemargin pagenumberalign pagenumberpen pagenumberposition pagewidth paleblue palecyan palegray palegreen palegrey palemagenta palered paleyellow parabolanodesnumberfactor perpfactor phi photonamplitude photonpen photonratio pi pink plain plain_bounds plain_scaling plasma plus preamblenodes pt purple r3 r4a r4b randMax realDigits realEpsilon realMax realMin red relativesystem reverse right roundcap roundjoin royalblue salmon saveFunctions scalarpen seismic sequencereal settings signedtrailingz!
 ero simplex solid spinner spring springgreen sqrtEpsilon squarecap squarepen startposition stdin stdout stepfactor stepfraction steppagenumberpen stepping stickframe stickmarksizefactor stickmarkspacefactor summer swap tab10 tab20 tab20b tab20c textpen ticksize tildeframe tildemarksizefactor tinv titlealign titlepagepen titlepageposition titlepen titleskip top trailingzero treeLevelStep treeMinNodeWidth treeNodeStep trembleAngle trembleFrequency trembleRandom tubegranularity twilight twilight_shifted undefined unitcircle unitsquare up urlpen urlskip version vertexpen vertexsize viewportmargin viewportsize viridis vline white winter wistia wye yellow ylabelwidth zeroTransform zerotickfuzz zerowinding ))

Modified: trunk/Build/source/utils/asymptote/asy.list
===================================================================
--- trunk/Build/source/utils/asymptote/asy.list	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/asy.list	2021-01-02 16:31:31 UTC (rev 57291)
@@ -8,7 +8,6 @@
 real sqrtEpsilon;
 string stripextension(string s);
 version version;
-void nosetpagesize();
 void texpreamble(string s);
 pen beveljoin;
 string cputimeformat;
@@ -21,7 +20,7 @@
 filltype dotfilltype;
 pen heavygreen;
 pen heavycyan;
-marginT PenMargin(path, pen)(real begin, real end);
+marginT PenMargin(path, pen)(real begin, real end=<default>);
 marginT PenMargin(path, pen);
 int realDigits;
 pen heavymagenta;
@@ -93,6 +92,8 @@
 bool view();
 void usersetting();
 pair S;
+real abs2(pair z);
+real abs2(triple v);
 void nowarn(string s);
 transform rotate(real angle, pair z=<default>);
 int quotient(int x, int y);
@@ -374,6 +375,7 @@
 pen Symbol(string series=<default>, string shape=<default>);
 slice firstcut(path p, path knife);
 pen squarecap;
+bool isometry(transform t);
 pen squarepen;
 pen deepyellow;
 real barsize(pen p=<default>);
@@ -383,10 +385,8 @@
 bool EndArcArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>);
 void tensorshade(frame f, path[] g, bool stroke=<default>, pen fillrule=<default>, pen[][] p, path[] b=<default>, pair[][] z=<default>, bool copy=<default>);
 void tensorshade(picture pic=<default>, path[] g, bool stroke=<default>, pen fillrule=<default>, pen[][] p, path[] b=<default>, pair[][] z=<default>, bool copy=<default>);
-void tensorshade(frame f, path[] g, bool stroke=<default>, pen fillrule=<default>, pen[] p, path b=<default>, pair[] z);
-void tensorshade(picture pic=<default>, path[] g, bool stroke=<default>, pen fillrule=<default>, pen[] p, path b=<default>, pair[] z);
-void tensorshade(frame f, path[] g, bool stroke=<default>, pen fillrule=<default>, pen[] p, path b=<default>);
-void tensorshade(picture pic=<default>, path[] g, bool stroke=<default>, pen fillrule=<default>, pen[] p, path b=<default>);
+void tensorshade(frame f, path[] g, bool stroke=<default>, pen fillrule=<default>, pen[] p, path b=<default>, pair[] z=<default>);
+void tensorshade(picture pic=<default>, path[] g, bool stroke=<default>, pen fillrule=<default>, pen[] p, path b=<default>, pair[] z=<default>);
 string[] split(string s, string delimiter=<default>);
 void addSaveFunction(void s()());
 object embed3(string, frame, string, string, string, light, projection);
@@ -636,8 +636,8 @@
 path[] sequence(path f(int), int n);
 frame[] sequence(frame f(int), int n);
 triple minbezier(triple[][] p, triple b);
-path trim(path g, real begin, real end);
-marginT DotMargin(path, pen)(real begin, real end);
+path trim(path g, real begin, real end=<default>);
+marginT DotMargin(path, pen)(real begin, real end=<default>);
 marginT DotMargin(path, pen);
 marginT DotMargins(path, pen);
 string string(int x);
@@ -731,7 +731,7 @@
 string[] spinner;
 real[] times(path p, real x);
 real[] times(path p, explicit pair z);
-void drawbeziertriangle(frame f, triple[][] p, triple center, bool straight, pen[] p, real opacity, real shininess, real metallic, real fresnel0, pen[] colors, int interaction, bool primitive=<default>);
+void drawbeziertriangle(frame f, triple[][] p, triple center, bool straight, pen[] p, real opacity, real shininess, real metallic, real fresnel0, pen[] colors, int interaction, int digits, bool primitive=<default>);
 void Draw(picture pic=<default>, path g, pen p=<default>);
 filltype Draw;
 void Draw(picture pic=<default>, explicit path[] g, pen p=<default>);
@@ -805,7 +805,7 @@
 real arctime(path p, real l);
 real arctime(path3 p, real dval);
 pen palemagenta;
-void draw(frame f, triple[][] p, triple center, bool straight, pen[] p, real opacity, real shininess, real metallic, real fresnel0, pen[] colors, int interaction, bool primitive=<default>);
+void draw(frame f, triple[][] p, triple center, bool straight, pen[] p, real opacity, real shininess, real metallic, real fresnel0, pen[] colors, int interaction, int digits, bool primitive=<default>);
 void draw(frame f, triple[] p, real[] knot, real[] weights=<default>, pen p);
 void draw(frame f, triple[][] p, real[] uknot, real[] vknot, real[][] weights=<default>, pen[] p, real opacity, real shininess, real metallic, real fresnel0, pen[] colors);
 void draw(frame f, triple[] v, int[][] vi, triple[] n, int[][] ni, pen[] p, real opacity, real shininess, real metallic, real fresnel0, pen[] c=<default>, int[][] ci=<default>);
@@ -1197,7 +1197,7 @@
 bool prc(string format=<default>);
 projection projection(triple camera, triple up=<default>, triple target=<default>, triple normal=<default>, real zoom=<default>, real angle=<default>, pair viewportshift=<default>, bool showtarget=<default>, bool autoadjust=<default>, bool center=<default>, transformation projector(triple camera, triple up, triple target));
 void endl(file file);
-marginT TrueMargin(path, pen)(real begin, real end);
+marginT TrueMargin(path, pen)(real begin, real end=<default>);
 pair bezier(pair a, pair b, pair c, pair d, real t);
 triple bezier(triple a, triple b, triple c, triple d, real t);
 pair SSE;
@@ -1812,6 +1812,7 @@
 pair interp(explicit pair a, explicit pair b, real t);
 triple interp(triple a, triple b, real t);
 pen interp(pen a, pen b, real t);
+void mapArray(string From, string To);
 frame Seascape(frame f);
 bool interior(int windingnumber, pen fillrule);
 real[] intersect(path p, path q, real fuzz=<default>);
@@ -1824,6 +1825,7 @@
 real[][] intersections(path3 p, triple[][] p, real fuzz=<default>);
 int animate(string args=<default>, string file=<default>, string format=<default>);
 void generate_random_backtrace();
+real RELEASE;
 pair intersectionpoint(path p, path q, real fuzz=<default>);
 pair[] intersectionpoints(path p, path q, real fuzz=<default>);
 pair[] intersectionpoints(explicit path[] p, explicit path[] q, real fuzz=<default>);
@@ -1834,6 +1836,7 @@
 pair Align;
 void exit();
 real[] uniform(real a, real b, int n);
+void type(string type, string name);
 pair viewportsize;
 pair viewportmargin;
 string VERSION;
@@ -1867,7 +1870,7 @@
 pen palegrey;
 void clip(frame f, path[] g, bool stroke=<default>, pen fillrule=<default>, bool copy=<default>);
 void clip(picture pic=<default>, path[] g, bool stroke=<default>, pen fillrule=<default>, bool copy=<default>);
-marginT Margin(path, pen)(real begin, real end);
+marginT Margin(path, pen)(real begin, real end=<default>);
 marginT Margin(path, pen);
 position Relative(real position);
 side Relative(explicit pair align);
@@ -2557,8 +2560,8 @@
 line complementary(explicit line l);
 line[] complementary(explicit segment s);
 arc complementary(arc a);
+point ppoint(arc a, real x);
 bool between(point M, point O, point N);
-point ppoint(arc a, real x);
 path fromFocus(conic co, real angle1, real angle2, int n, bool direction);
 bool sameside(point M, point N, point O);
 bool sameside(point M, point P, line l);
@@ -3012,8 +3015,8 @@
 void xaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>);
 void yaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>);
 void xaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>);
+tickvalues generateticks(int sign, Label F=<default>, string ticklabel(real)=<default>, int N, int n=<default>, real Step=<default>, real step=<default>, real Size=<default>, real size=<default>, transform T, pair side, path g, real limit, pen p, ticklocate locate, int[] divisor, bool opposite);
 void yaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool autorotate=<default>);
-tickvalues generateticks(int sign, Label F=<default>, string ticklabel(real)=<default>, int N, int n=<default>, real Step=<default>, real step=<default>, real Size=<default>, real size=<default>, transform T, pair side, path g, real limit, pen p, ticklocate locate, int[] divisor, bool opposite);
 void checkconditionlength(int x, int y);
 real xtrans(transform t, real x);
 void Top(picture, axisT)(bool extend=<default>);
@@ -3106,15 +3109,15 @@
 void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
 void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
 void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
-surface surface(triple[][] f, bool[][] cond=<default>);
-surface surface(real[][] f, real[] x, real[] y, real[] xsplinetype(real[], real[])=<default>, real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
-surface surface(real[][] f, pair a, pair b, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
-surface surface(real[][] f, pair a, pair b, bool[][] cond=<default>);
-surface surface(triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool cond(pair z)=<default>);
-surface surface(triple f(pair z), real[] u, real[] v, real[](real[], real[])[] usplinetype, real[](real[], real[])[] vsplinetype=<default>, bool cond(pair z)=<default>);
-surface surface(triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, real[](real[], real[])[] usplinetype, real[](real[], real[])[] vsplinetype=<default>, bool cond(pair z)=<default>);
-surface surface(real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, bool cond(pair z)=<default>);
-surface surface(real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool cond(pair z)=<default>);
+surface surface(picture pic=<default>, triple[][] f, bool[][] cond=<default>);
+surface surface(picture pic=<default>, real[][] f, real[] x, real[] y, real[] xsplinetype(real[], real[])=<default>, real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
+surface surface(picture pic=<default>, real[][] f, pair a, pair b, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
+surface surface(picture pic=<default>, real[][] f, pair a, pair b, bool[][] cond=<default>);
+surface surface(picture pic=<default>, triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool cond(pair z)=<default>);
+surface surface(picture pic=<default>, triple f(pair z), real[] u, real[] v, real[](real[], real[])[] usplinetype, real[](real[], real[])[] vsplinetype=<default>, bool cond(pair z)=<default>);
+surface surface(picture pic=<default>, triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, real[](real[], real[])[] usplinetype, real[](real[], real[])[] vsplinetype=<default>, bool cond(pair z)=<default>);
+surface surface(picture pic=<default>, real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, bool cond(pair z)=<default>);
+surface surface(picture pic=<default>, real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool cond(pair z)=<default>);
 void XYEquals(picture, axisT)(real x, real y, triple align=<default>, bool extend=<default>);
 triple Dir(real)(triple dir);
 void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen[] p, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>);
@@ -3126,7 +3129,11 @@
 triple tickMin3(picture pic);
 triple tickMax3(picture pic);
 triple Scale(picture pic=<default>, triple v);
+triple[][] Scale(picture pic=<default>, triple[][] P);
+real ScaleX(picture pic=<default>, real x);
+real ScaleY(picture pic=<default>, real y);
 real ScaleZ(picture pic=<default>, real z);
+real[][] ScaleZ(picture pic=<default>, real[][] P);
 picture vectorfield(path3 vector(pair v), triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool truesize=<default>, real maxlength=<default>, bool cond(pair z)=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, string name=<default>, render render=<default>);
 path3 Circle(triple c, real r, triple normal=<default>, int n=<default>);
 void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
@@ -3179,6 +3186,7 @@
 surface bispline(real[][] z, real[][] p, real[][] q, real[][] r, real[] x, real[] y, bool[][] cond=<default>);
 real[][][] bispline(real[][] f, real[] x, real[] y, real[] xsplinetype(real[], real[])=<default>, real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
 real[][][] bispline0(real[][] z, real[][] p, real[][] q, real[][] r, real[] x, real[] y, bool[][] cond=<default>);
+real[] uniform(real T(real x), real Tinv(real x), real a, real b, int n);
 void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)();
 void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
 bool Crop;
@@ -3304,6 +3312,7 @@
 real LM_DWARF;
 void lm_print_quiet(int n_par, real[] par, int m_dat, real[] fvec, lm_data_type data, int iflag, int iter, int nfev);
 void lm_print_default(int n_par, real[] par, int m_dat, real[] fvec, lm_data_type data, int iflag, int iter, int nfev);
+void mapTemplate(string name, string key, string value, string default);
 real barmarksize(pen p=<default>);
 real barmarksizefactor;
 marker CrossIntervalMarker(int i=<default>, int n=<default>, real size=<default>, real space=<default>, real angle=<default>, pair offset=<default>, bool rotated=<default>, pen p=<default>, frame uniform=<default>, bool above=<default>);
@@ -3504,9 +3513,9 @@
 rational max(rational a, rational b);
 rational max(rational[] a);
 simplex operator init();
+void simplexInit(rational[] c, rational[][] A, int[] s=<default>, rational[] b, int count);
 void simplexPhase1(rational[] c, rational[][] A, rational[] b, int[] Bindices);
 void simplexTableau(rational[][] E, int[] Bindices, int I=<default>, int J=<default>);
-void simplexStandard(rational[] c, rational[][] A, int[] s=<default>, rational[] b);
 void simplexPhase2();
 void simplexWrite(rational[][] E, int[] Bindices, int, int);
 path roundedpath(path A, real R, real S=<default>);
@@ -3555,11 +3564,11 @@
 pen backgroundcolor;
 void normalvideo();
 void title(string s, pair position=<default>, pair align=<default>, pen p=<default>, bool newslide=<default>);
-pen authorpen;
 pen titlepen;
 real titleskip;
 pair dateskip;
 pair titlealign;
+pen authorpen;
 pen titlepagepen;
 void titlepage(string title, string author, string institution=<default>, string date=<default>, string url=<default>, bool newslide=<default>);
 pair titlepageposition;
@@ -3572,9 +3581,9 @@
 transform tinv;
 pair urlskip;
 void numberpage(pen p=<default>);
+pen urlpen;
 bool allowstepping;
 pair currentposition;
-pen urlpen;
 int[] firstnode;
 bool firststep;
 string asywrite(string s, string preamble=<default>);
@@ -3717,8 +3726,8 @@
 Component wye;
 pair max(pair[] z);
 real hwratio;
+pen Orchid;
 pen WildStrawberry;
-pen Orchid;
 pen Magenta;
 pen BrickRed;
 pen CadetBlue;
@@ -3744,8 +3753,8 @@
 pen BurntOrange;
 pen Tan;
 pen Aquamarine;
+pen Brown;
 pen Lavender;
-pen Brown;
 pen RubineRed;
 pen TealBlue;
 pen White;
@@ -3762,8 +3771,8 @@
 pen Rhodamine;
 pen YellowOrange;
 pen Maroon;
+pen ProcessBlue;
 pen YellowGreen;
-pen ProcessBlue;
 pen LimeGreen;
 pen Green;
 pen GreenYellow;
@@ -3778,8 +3787,8 @@
 pen Periwinkle;
 pen Thistle;
 pen Yellow;
+pen JungleGreen;
 pen DarkOrchid;
-pen JungleGreen;
 pen CornflowerBlue;
 pen RoyalBlue;
 pen Melon;
@@ -3812,33 +3821,32 @@
 string VERSION;
 pen Orchid;
 pen Indigo;
-pen Seashell;
 pen Beige;
 pen SlateBlue;
 pen SlateGray;
 pen Magenta;
-pen GhostWhite;
 pen CadetBlue;
 pen DeepPink;
+pen LavenderBlush;
+pen Wheat;
 pen SpringGreen;
 pen MidnightBlue;
+pen PeachPuff;
 pen Olive;
 pen OliveDrab;
 pen Salmon;
-pen LavenderBlush;
-pen Wheat;
+pen Lime;
+pen SteelBlue;
 pen Chocolate;
 pen Cyan;
 pen Gainsboro;
 pen Ivory;
-pen PeachPuff;
 pen PapayaWhip;
 pen Red;
 pen Pink;
 pen MintCream;
 pen DarkTurquoise;
-pen Lime;
-pen SteelBlue;
+pen LemonChiffon;
 pen Gray;
 pen MediumBlue;
 pen MediumOrchid;
@@ -3850,6 +3858,7 @@
 pen MediumTurquoise;
 pen MediumVioletRed;
 pen Plum;
+pen Aqua;
 pen Blue;
 pen Gold;
 pen BlueViolet;
@@ -3857,18 +3866,16 @@
 pen ForestGreen;
 pen Chartreuse;
 pen NavajoWhite;
-pen LemonChiffon;
 pen Tan;
 pen DarkMagenta;
 pen AntiqueWhite;
+pen PaleTurquoise;
 pen Aquamarine;
-pen PaleTurquoise;
-pen Aqua;
 pen IndianRed;
 pen Crimson;
-pen Lavender;
 pen Azure;
 pen LawnGreen;
+pen Lavender;
 pen Brown;
 pen BurlyWood;
 pen Moccasin;
@@ -3877,6 +3884,7 @@
 pen White;
 pen Purple;
 pen WhiteSmoke;
+pen Sienna;
 pen DimGray;
 pen Orange;
 pen OrangeRed;
@@ -3884,27 +3892,28 @@
 pen Honeydew;
 pen Bisque;
 pen RosyBrown;
-pen Sienna;
 pen Black;
 pen Khaki;
 pen FireBrick;
+pen DarkOliveGreen;
+pen DarkOrange;
 pen Snow;
 pen Maroon;
 pen YellowGreen;
 pen LimeGreen;
+pen Silver;
 pen OldLace;
-pen DarkOliveGreen;
-pen DarkOrange;
 pen Green;
 pen GreenYellow;
 pen DarkCyan;
 pen FloralWhite;
 pen DarkRed;
-pen Silver;
+pen SandyBrown;
 pen BlanchedAlmond;
 pen PowderBlue;
 pen DarkGray;
 pen DarkGreen;
+pen DeepSkyBlue;
 pen DarkGoldenrod;
 pen SkyBlue;
 pen SeaGreen;
@@ -3912,13 +3921,12 @@
 pen Teal;
 pen Violet;
 pen AliceBlue;
-pen SandyBrown;
 pen HotPink;
 pen DodgerBlue;
 pen SaddleBrown;
 pen Tomato;
 pen DarkKhaki;
-pen DeepSkyBlue;
+pen Cornsilk;
 pen Thistle;
 pen LightBlue;
 pen LightCoral;
@@ -3936,8 +3944,8 @@
 pen Navy;
 pen LightSkyBlue;
 pen PaleVioletRed;
+pen Seashell;
 pen DarkOrchid;
-pen Cornsilk;
 pen CornflowerBlue;
 pen LightSlateGray;
 pen LightSteelBlue;
@@ -3945,6 +3953,7 @@
 pen LightYellow;
 pen Coral;
 pen MistyRose;
+pen GhostWhite;
 pen DarkSalmon;
 pen DarkSeaGreen;
 pen RoyalBlue;

Modified: trunk/Build/source/utils/asymptote/asymptote.nsi
===================================================================
--- trunk/Build/source/utils/asymptote/asymptote.nsi	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/asymptote.nsi	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1,6 +1,6 @@
 !define PRODUCT_NAME "Asymptote"
 !include AsymptoteInstallInfo.nsi
-!define PRODUCT_WEB_SITE "http://asymptote.sourceforge.net/"
+!define PRODUCT_WEB_SITE "https://asymptote.sourceforge.io/"
 !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Asymptote"
 !define PRODUCT_FILE_TYPE_REGKEY1 "Software\Classes\.asy"
 !define PRODUCT_FILE_TYPE_REGKEY2 "Software\Classes\ASYFile\shell\open\command"

Modified: trunk/Build/source/utils/asymptote/asymptote.spec
===================================================================
--- trunk/Build/source/utils/asymptote/asymptote.spec	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/asymptote.spec	2021-01-02 16:31:31 UTC (rev 57291)
@@ -3,13 +3,13 @@
 %global __python %{__python3}
 
 Name:           asymptote
-Version:        2.65
+Version:        2.68
 Release:        1%{?dist}
 Summary:        Descriptive vector graphics language
 
 Group:          Applications/Publishing
 License:        GPL
-URL:            http://asymptote.sourceforge.net/
+URL:            https://asymptote.sourceforge.io/
 Source:         http://downloads.sourceforge.net/sourceforge/asymptote/asymptote-%{version}.src.tgz
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -20,9 +20,11 @@
 BuildRequires:  gsl-devel
 BuildRequires:  glm-devel
 BuildRequires:  tetex-latex
-BuildRequires:  ghostscript >= 9.14
+BuildRequires:  ghostscript >= 9.52
+BuildRequires:  dvisvgm >= 2.9.1
 BuildRequires:  texinfo >= 4.7
 BuildRequires:  ImageMagick
+BuildRequires:  libtirpc-devel
 
 Requires:       tetex-latex
 Requires:       freeglut-devel >= 3.0.0

Modified: trunk/Build/source/utils/asymptote/base/animation.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/animation.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/animation.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -30,7 +30,7 @@
   string prefix;
   bool global; // If true, use a global scaling for all frames; this requires
   // extra memory since the actual shipout is deferred until all frames have
-  // been generated. 
+  // been generated.
 
   void operator init(string prefix="", bool global=true) {
     prefix=replace(stripdirectory(outprefix(prefix))," ","_");
@@ -37,7 +37,7 @@
     this.prefix=prefix;
     this.global=global;
   }
-  
+
   string basename(string prefix=stripextension(prefix)) {
     return "_"+prefix;
   }
@@ -57,7 +57,7 @@
     plain.shipout(name,f,format=format,view=false);
     files.push(name+"."+format);
   }
-  
+
   void add(picture pic=currentpicture, enclosure enclosure=NoBox) {
     if(global) {
       ++index;
@@ -64,7 +64,7 @@
       pictures.push(pic.copy());
     } else this.shipout(enclosure(pic.fit()));
   }
-  
+
   void purge(bool keep=settings.keep) {
     if(!keep) {
       for(int i=0; i < files.length; ++i)
@@ -130,7 +130,7 @@
     return s;
   }
 
-  bool pdflatex() 
+  bool pdflatex()
   {
     return latex() && pdf();
   }
@@ -143,13 +143,13 @@
     if(!pdflatex())
       abort("inline pdf animations require -tex pdflatex or -tex xelatex");
     if(settings.outformat != "") settings.outformat="pdf";
-    
+
     string filename=basename();
     string pdfname=filename+".pdf";
 
     if(global)
       export(filename,enclosure,multipage=multipage);
-    
+
     if(!keep) {
       exitfcn currentexitfunction=atexit();
       void exitfunction() {

Modified: trunk/Build/source/utils/asymptote/base/asy-mode.el
===================================================================
--- trunk/Build/source/utils/asymptote/base/asy-mode.el	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/asy-mode.el	2021-01-02 16:31:31 UTC (rev 57291)
@@ -102,7 +102,7 @@
 
 This package seems to work with XEmacs 21.4 but not all the features are available (in particular syntax highlighting).
 
-Report bugs to http://asymptote.sourceforge.net
+Report bugs to https://github.com/vectorgraphics/asymptote/issues
 
 Some variables can be customized: M-x customize-group <RET> asymptote <RET>."
 

Modified: trunk/Build/source/utils/asymptote/base/babel.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/babel.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/babel.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1,4 +1,4 @@
-void babel(string s) 
+void babel(string s)
 {
   usepackage("babel",s);
 }

Modified: trunk/Build/source/utils/asymptote/base/bezulate.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/bezulate.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/bezulate.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -106,29 +106,29 @@
       //if(direction == 0) // Try a random direction
       //  direction=expi(2pi*unitrand());
       //pair start=point(inners[curveIndex],0);
-      
+
       // find shortest distance between a node on the inner curve and a node
       // on the outer curve
-      
+
       real mindist = d;
       int inner_i = 0;
       int outer_i = 0;
       for(int ni = 0; ni < length(inners[curveIndex]); ++ni)
-      {
+        {
           for(int no = 0; no < length(outer); ++no)
-          {
+            {
               real dist = abs(point(inners[curveIndex],ni)-point(outer,no));
               if(dist < mindist)
-              {
+                {
                   inner_i = ni;
                   outer_i = no;
                   mindist = dist;
-              }
-          }
-      }
+                }
+            }
+        }
       pair start=point(inners[curveIndex],inner_i);
-      pair end = point(outer,outer_i);  
-      
+      pair end = point(outer,outer_i);
+
       // find first intersection of line segment with outer curve
       //real[][] ints=intersections(start,start+d*direction,outer);
       real[][] ints=intersections(start,end,outer);
@@ -140,7 +140,7 @@
       real earliestTime=1;
       for(int j=0; j < inners.length; ++j) {
         real[][] ints=intersections(end,start,inners[j]);
-        
+
         if(ints.length > 0 && ints[0][0] < earliestTime) {
           earliestTime=ints[0][0]; // time on end--start
           starttime=ints[0][1]; // time on inner curve
@@ -148,8 +148,8 @@
         }
       }
       start=point(inners[curveIndex],starttime);
-      
-      
+
+
       bool found_forward = false;
       real timeoffset_forward = 2;
       path portion_forward;
@@ -162,7 +162,7 @@
                               point(outer,endtime+timeoffset_forward)) == 2)
           {
             portion_forward = subpath(outer,endtime,endtime+timeoffset_forward)--start--cycle;
-            
+
             found_forward=true;
             // check if an inner curve is inside the portion
             for(int k = 0; found_forward && k < inners.length; ++k)
@@ -173,7 +173,7 @@
               }
           }
       }
-      
+
       bool found_backward = false;
       real timeoffset_backward = -2;
       path portion_backward;
@@ -197,29 +197,29 @@
       real timeoffset;
       path portion;
       if(found_forward && !found_backward)
-      {
-        timeoffset = timeoffset_forward;
-        portion = portion_forward;
-      }
-      else if(found_backward && !found_forward)
-      {
-        timeoffset = timeoffset_backward;
-        portion = portion_backward;
-      }
-      else // assert handles case of neither found
-      {
-        if(timeoffset_forward > -timeoffset_backward)
         {
           timeoffset = timeoffset_forward;
           portion = portion_forward;
         }
-        else
+      else if(found_backward && !found_forward)
         {
           timeoffset = timeoffset_backward;
           portion = portion_backward;
-         }
-      }
-      
+        }
+      else // assert handles case of neither found
+        {
+          if(timeoffset_forward > -timeoffset_backward)
+            {
+              timeoffset = timeoffset_forward;
+              portion = portion_forward;
+            }
+          else
+            {
+              timeoffset = timeoffset_backward;
+              portion = portion_backward;
+            }
+        }
+
       endtime=min(endtime,endtime+timeoffset);
       // or go from timeoffset+timeoffset_backward to timeoffset+timeoffset_forward?
       timeoffset=abs(timeoffset);

Modified: trunk/Build/source/utils/asymptote/base/binarytree.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/binarytree.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/binarytree.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -48,8 +48,8 @@
   int right_span,total_right_span;
   void update_spans();
 
-  // Get the horizontal span of the tree consisting of the current 
-  // node plus the whole subtree that is rooted at the right child 
+  // Get the horizontal span of the tree consisting of the current
+  // node plus the whole subtree that is rooted at the right child
   // (condensed mode)
   int getTotalRightSpan() {
     if(spans_calculated == false) {
@@ -59,8 +59,8 @@
     return total_right_span;
   }
 
-  // Get the horizontal span of the tree consisting of the current 
-  // node plus the whole subtree that is rooted at the left child 
+  // Get the horizontal span of the tree consisting of the current
+  // node plus the whole subtree that is rooted at the left child
   // (condensed mode)
   int getTotalLeftSpan() {
     if(spans_calculated == false) {
@@ -87,27 +87,27 @@
     return left_span;
   }
 
-  // Update all span figures for this node. 
+  // Update all span figures for this node.
   // condensed mode)
   update_spans=new void() {
-    if(spans_calculated == true)
-      return;
+                           if(spans_calculated == true)
+                             return;
 
-    left_span=0;
-    total_left_span=0;
-    right_span=0;
-    total_right_span=0;
+                           left_span=0;
+                           total_left_span=0;
+                           right_span=0;
+                           total_right_span=0;
 
-    if(left != null) {
-      left_span=left.getTotalRightSpan()+1;
-      total_left_span=left_span+left.getTotalLeftSpan();
-    }
+                           if(left != null) {
+                             left_span=left.getTotalRightSpan()+1;
+                             total_left_span=left_span+left.getTotalLeftSpan();
+                           }
 
-    if(right != null) {
-      right_span=right.getTotalLeftSpan()+1;
-      total_right_span=right_span+right.getTotalRightSpan();
-    }
-    spans_calculated=true;
+                           if(right != null) {
+                             right_span=right.getTotalLeftSpan()+1;
+                             total_right_span=right_span+right.getTotalRightSpan();
+                           }
+                           spans_calculated=true;
   };
 
   // set the left child of this node
@@ -134,20 +134,20 @@
     else
       return parent.getLevel()+1;
   }
-        
+
   // set the children of this binarytreeNode
   void setChildren(binarytreeNode left, binarytreeNode right) {
     setLeft(left);
     setRight(right);
   }
-        
-  // create a new binarytreeNode with key <key> 
+
+  // create a new binarytreeNode with key <key>
   static binarytreeNode binarytreeNode(int key) {
     binarytreeNode toReturn=new binarytreeNode;
     toReturn.key=key;
     return toReturn;
   }
-        
+
   // returns the height of the subtree rooted at this node.
   int getHeight() {
     if(left == null && right == null)
@@ -156,7 +156,7 @@
       return right.getHeight()+1;
     if(right == null)
       return left.getHeight()+1;
-                
+
     return max(left.getHeight(),right.getHeight())+1;
   }
 }
@@ -175,12 +175,12 @@
             int height, real minDist, real levelDist, real nodeDiameter,
             pen p=currentpen, bool condensed=false) {
   Label label=Label(math((string) node.key),pos);
-        
-  binarytreeNode left=node.left;        
+
+  binarytreeNode left=node.left;
   binarytreeNode right=node.right;
 
   // return the distance for two nodes at the given <level> when the
-  // containing tree has height <height> 
+  // containing tree has height <height>
   // and the minimal distance between two nodes is <minDist> .
   real getDistance(int level, int height, real minDist) {
     return(nodeDiameter+minDist)*2^(height-level);
@@ -205,15 +205,15 @@
   // arrow.
   void deferredDrawNodeConnection(pair parentPos, pair childPos) {
     pic.add(new void(frame f, transform t) {
-        pair start,end; 
-        // calculate connection path 
-        transform T=shift(nodeDiameter/2*unit(t*childPos-t*parentPos));  
-        path arr=(T*t*parentPos)--(inverse(T)*t*childPos);  
-        draw(f,PenMargin(arr,p).g,p,Arrow(5));  
-      }); 
+        pair start,end;
+        // calculate connection path
+        transform T=shift(nodeDiameter/2*unit(t*childPos-t*parentPos));
+        path arr=(T*t*parentPos)--(inverse(T)*t*childPos);
+        draw(f,PenMargin(arr,p).g,p,Arrow(5));
+      });
     pic.addPoint(parentPos);
     pic.addPoint(childPos);
-  } 
+  }
 
   if(left != null) {
     pair childPos;
@@ -238,13 +238,13 @@
     draw(pic,right,childPos,height,minDist,levelDist,nodeDiameter,p,condensed);
     deferredDrawNodeConnection(pos,childPos);
   }
-        
+
   picture obj;
   draw(obj,circle((0,0),nodeDiameter/2),p);
   label(obj,label,(0,0),p);
-        
+
   add(pic,obj,pos);
-        
+
   return label;
 }
 
@@ -270,18 +270,18 @@
 struct binarytree {
   binarytreeNode root;
   int[] keys;
-        
+
   // add the given <key> to the tree by searching for its place and
   // inserting it there.
   void addKey(int key) {
     binarytreeNode newNode=binarytreeNode(key);
-                
+
     if(root == null) {
       root=newNode;
       keys.push(key);
-      return; 
+      return;
     }
-                
+
     binarytreeNode n=root;
     while(n != null) {
       if(key < n.key) {
@@ -303,7 +303,7 @@
       }
     }
   }
-        
+
   // return the height of the tree
   int getHeight() {
     if(root == null)
@@ -311,7 +311,7 @@
     else
       return root.getHeight();
   }
-        
+
   // add all given keys to the tree sequentially
   void addSearchKeys(int[] keys) {
     for(int i=0; i < keys.length; ++i) {
@@ -321,7 +321,7 @@
         addKey(key);
     }
   }
-        
+
   binarytreeNode build(key[] keys, int[] ind) {
     if(ind[0] >= keys.length) return null;
     key k=keys[ind[0]];
@@ -369,9 +369,9 @@
           pen p=currentpen, bool condensed=false)
 {
   int[] keys=tree.getKeys();
-        
+
   // calculate the node diameter so that all keys fit into it
-  frame f; 
+  frame f;
   for(int i=0; i < keys.length; ++i)
     label(f,math(string(keys[i])),p);
 

Modified: trunk/Build/source/utils/asymptote/base/bsp.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/bsp.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/bsp.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -33,13 +33,13 @@
 
 picture operator cast(face f) {return f.pic;}
 face operator cast(path3 p) {return face(p);}
-  
+
 struct line {
   triple point;
   triple dir;
 }
 
-private line intersection(face a, face b) 
+private line intersection(face a, face b)
 {
   line L;
   L.point=intersectionpoint(a.normal,a.point,b.normal,b.point);
@@ -49,12 +49,12 @@
 
 struct half {
   pair[] left,right;
-  
+
   // Sort the points in the pair array z according to whether they lie on the
   // left or right side of the line L in the direction dir passing through P.
   // Points exactly on L are considered to be on the right side.
   // Also push any points of intersection of L with the path operator --(... z)
-  // onto each of the arrays left and right. 
+  // onto each of the arrays left and right.
   void operator init(pair dir, pair P ... pair[] z) {
     pair lastz;
     pair invdir=dir != 0 ? 1/dir : 0;
@@ -73,7 +73,7 @@
     }
   }
 }
-  
+
 struct splitface {
   face back,front;
 }
@@ -84,7 +84,7 @@
   splitface S;
 
   void nointersection() {
-    if(abs(dot(a.point-P.camera,a.normal)) >= 
+    if(abs(dot(a.point-P.camera,a.normal)) >=
        abs(dot(cut.point-P.camera,cut.normal))) {
       S.back=a;
       S.front=null;
@@ -113,7 +113,7 @@
     nointersection();
     return S;
   }
-    
+
   pair point=a.t*project(L.point,P);
   pair dir=a.t*project(L.point+L.dir,P)-point;
   pair invdir=dir != 0 ? 1/dir : 0;
@@ -122,7 +122,7 @@
 
   real t=intersect(apoint,P.camera,cut.normal,cut.point);
   bool rightfront=left ^ (t <= 0 || t >= 1);
-  
+
   face back=a, front=a.copy();
   pair max=max(a.fit);
   pair min=min(a.fit);
@@ -151,7 +151,7 @@
   bsp back;
   bsp front;
   face node;
-  
+
   // Construct the bsp.
   void operator init(face[] faces, projection P) {
     if(faces.length != 0) {
@@ -166,7 +166,7 @@
       this.back=bsp(back,P);
     }
   }
-  
+
   // Draw from back to front.
   void add(frame f) {
     if(back != null) back.add(f);
@@ -183,22 +183,22 @@
   face[] Faces=new face[n];
   for(int i=0; i < n; ++i)
     Faces[i]=faces[i].copy();
-  
+
   pic.add(new void (frame f, transform t, transform T,
-                                pair m, pair M) {
-                        // Fit all of the pictures so we know their exact sizes.
-                        face[] faces=new face[n];
-                        for(int i=0; i < n; ++i) {
-                          faces[i]=Faces[i].copy();
-                          face F=faces[i];
-                          F.t=t*T*F.pic.T;
-                          F.fit=F.pic.fit(t,T*F.pic.T,m,M);
-                        }
-    
-                        bsp bsp=bsp(faces,P);
-                        if(bsp != null) bsp.add(f);
+                    pair m, pair M) {
+            // Fit all of the pictures so we know their exact sizes.
+            face[] faces=new face[n];
+            for(int i=0; i < n; ++i) {
+              faces[i]=Faces[i].copy();
+              face F=faces[i];
+              F.t=t*T*F.pic.T;
+              F.fit=F.pic.fit(t,T*F.pic.T,m,M);
+            }
+
+            bsp bsp=bsp(faces,P);
+            if(bsp != null) bsp.add(f);
           });
-    
+
   for(int i=0; i < n; ++i) {
     picture F=Faces[i].pic;
     pic.userBox3(F.userMin3(), F.userMax3());

Modified: trunk/Build/source/utils/asymptote/base/colormap.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/colormap.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/colormap.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -10,7 +10,7 @@
 //    pen[] Palette = wistia.palette()
 //
 // There are two types of palettes. For a complete list see below:
-// 
+//
 // 1) The segmented palettes can be used as
 //      <name>.palette(int NColors=256, real gamma=1.)
 //         NColors are the number of colors in the palette
@@ -19,7 +19,7 @@
 // 2) The listed palettes can only be used as
 //      <name>.palette()
 //
-// Both functions return pen[] that can be used as a palette in the 
+// Both functions return pen[] that can be used as a palette in the
 // module palette.
 
 // list of palettes
@@ -112,7 +112,7 @@
 // SOURCE CODE
 //
 private real[] makeMappingArray(int N, triple[] data, real gamma=1.) {
-  real[] x; 
+  real[] x;
   real[] y0;
   real[] y1;
 
@@ -121,13 +121,13 @@
     y0.push(data[i].y);
     y1.push(data[i].z);
   };
-  
+
   x = x*(N-1);
-  real[] lut = new real[N]; 
+  real[] lut = new real[N];
   real[] xind = (N - 1) * uniform(0, 1, N-1) ** gamma;
   int[] ind = map(new int(real xi) {return search(x, xi);}, xind);
   ind = ind[1:N-1]; // note that the index is shifted from python
-  
+
   real[] dist = (xind[1:N-1] - x[ind])/(x[ind+1] - x[ind]);
 
   lut[1:N-1] = dist * (y0[ind+1] - y1[ind]) + y1[ind];
@@ -153,9 +153,9 @@
     real[] green = makeMappingArray(NColors, this.g, gamma);
     real[] blue  = makeMappingArray(NColors, this.b, gamma);
 
-    pen[] pal = 
-      sequence(new pen(int i) {return rgb(red[i], green[i], blue[i]);}, 
-        NColors);
+    pen[] pal =
+      sequence(new pen(int i) {return rgb(red[i], green[i], blue[i]);},
+               NColors);
 
     return pal;
   }
@@ -174,3717 +174,3717 @@
 // DATA
 //
 list_data Accent = list_data(new pen[] {
-  rgb (0.4980392156862745, 0.788235294117647, 0.4980392156862745) ,
-  rgb (0.7450980392156863, 0.6823529411764706, 0.8313725490196079) ,
-  rgb (0.9921568627450981, 0.7529411764705882, 0.5254901960784314) ,
-  rgb (1.0, 1.0, 0.6) ,
-  rgb (0.2196078431372549, 0.4235294117647059, 0.6901960784313725) ,
-  rgb (0.9411764705882353, 0.00784313725490196, 0.4980392156862745) ,
-  rgb (0.7490196078431373, 0.3568627450980392, 0.09019607843137253) ,
-  rgb (0.4, 0.4, 0.4)
-});
+    rgb (0.4980392156862745, 0.788235294117647, 0.4980392156862745) ,
+      rgb (0.7450980392156863, 0.6823529411764706, 0.8313725490196079) ,
+      rgb (0.9921568627450981, 0.7529411764705882, 0.5254901960784314) ,
+      rgb (1.0, 1.0, 0.6) ,
+      rgb (0.2196078431372549, 0.4235294117647059, 0.6901960784313725) ,
+      rgb (0.9411764705882353, 0.00784313725490196, 0.4980392156862745) ,
+      rgb (0.7490196078431373, 0.3568627450980392, 0.09019607843137253) ,
+      rgb (0.4, 0.4, 0.4)
+      });
 
 
 list_data Blues = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.984313725490196, 1.0) ,
-  rgb (0.8705882352941177, 0.9215686274509803, 0.9686274509803922) ,
-  rgb (0.7764705882352941, 0.8588235294117647, 0.9372549019607843) ,
-  rgb (0.6196078431372549, 0.792156862745098, 0.8823529411764706) ,
-  rgb (0.4196078431372549, 0.6823529411764706, 0.8392156862745098) ,
-  rgb (0.25882352941176473, 0.5725490196078431, 0.7764705882352941) ,
-  rgb (0.12941176470588237, 0.44313725490196076, 0.7098039215686275) ,
-  rgb (0.03137254901960784, 0.3176470588235294, 0.611764705882353) ,
-  rgb (0.03137254901960784, 0.18823529411764706, 0.4196078431372549)
-});
+    rgb (0.9686274509803922, 0.984313725490196, 1.0) ,
+      rgb (0.8705882352941177, 0.9215686274509803, 0.9686274509803922) ,
+      rgb (0.7764705882352941, 0.8588235294117647, 0.9372549019607843) ,
+      rgb (0.6196078431372549, 0.792156862745098, 0.8823529411764706) ,
+      rgb (0.4196078431372549, 0.6823529411764706, 0.8392156862745098) ,
+      rgb (0.25882352941176473, 0.5725490196078431, 0.7764705882352941) ,
+      rgb (0.12941176470588237, 0.44313725490196076, 0.7098039215686275) ,
+      rgb (0.03137254901960784, 0.3176470588235294, 0.611764705882353) ,
+      rgb (0.03137254901960784, 0.18823529411764706, 0.4196078431372549)
+      });
 
 
 list_data BrBG = list_data(new pen[] {
-  rgb (0.32941176470588235, 0.18823529411764706, 0.0196078431372549) ,
-  rgb (0.5490196078431373, 0.3176470588235294, 0.0392156862745098) ,
-  rgb (0.7490196078431373, 0.5058823529411764, 0.17647058823529413) ,
-  rgb (0.8745098039215686, 0.7607843137254902, 0.49019607843137253) ,
-  rgb (0.9647058823529412, 0.9098039215686274, 0.7647058823529411) ,
-  rgb (0.9607843137254902, 0.9607843137254902, 0.9607843137254902) ,
-  rgb (0.7803921568627451, 0.9176470588235294, 0.8980392156862745) ,
-  rgb (0.5019607843137255, 0.803921568627451, 0.7568627450980392) ,
-  rgb (0.20784313725490197, 0.592156862745098, 0.5607843137254902) ,
-  rgb (0.00392156862745098, 0.4, 0.3686274509803922) ,
-  rgb (0.0, 0.23529411764705882, 0.18823529411764706)
-});
+    rgb (0.32941176470588235, 0.18823529411764706, 0.0196078431372549) ,
+      rgb (0.5490196078431373, 0.3176470588235294, 0.0392156862745098) ,
+      rgb (0.7490196078431373, 0.5058823529411764, 0.17647058823529413) ,
+      rgb (0.8745098039215686, 0.7607843137254902, 0.49019607843137253) ,
+      rgb (0.9647058823529412, 0.9098039215686274, 0.7647058823529411) ,
+      rgb (0.9607843137254902, 0.9607843137254902, 0.9607843137254902) ,
+      rgb (0.7803921568627451, 0.9176470588235294, 0.8980392156862745) ,
+      rgb (0.5019607843137255, 0.803921568627451, 0.7568627450980392) ,
+      rgb (0.20784313725490197, 0.592156862745098, 0.5607843137254902) ,
+      rgb (0.00392156862745098, 0.4, 0.3686274509803922) ,
+      rgb (0.0, 0.23529411764705882, 0.18823529411764706)
+      });
 
 
 list_data BuGn = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.9882352941176471, 0.9921568627450981) ,
-  rgb (0.8980392156862745, 0.9607843137254902, 0.9764705882352941) ,
-  rgb (0.8, 0.9254901960784314, 0.9019607843137255) ,
-  rgb (0.6, 0.8470588235294118, 0.788235294117647) ,
-  rgb (0.4, 0.7607843137254902, 0.6431372549019608) ,
-  rgb (0.2549019607843137, 0.6823529411764706, 0.4627450980392157) ,
-  rgb (0.13725490196078433, 0.5450980392156862, 0.27058823529411763) ,
-  rgb (0.0, 0.42745098039215684, 0.17254901960784313) ,
-  rgb (0.0, 0.26666666666666666, 0.10588235294117647)
-});
+    rgb (0.9686274509803922, 0.9882352941176471, 0.9921568627450981) ,
+      rgb (0.8980392156862745, 0.9607843137254902, 0.9764705882352941) ,
+      rgb (0.8, 0.9254901960784314, 0.9019607843137255) ,
+      rgb (0.6, 0.8470588235294118, 0.788235294117647) ,
+      rgb (0.4, 0.7607843137254902, 0.6431372549019608) ,
+      rgb (0.2549019607843137, 0.6823529411764706, 0.4627450980392157) ,
+      rgb (0.13725490196078433, 0.5450980392156862, 0.27058823529411763) ,
+      rgb (0.0, 0.42745098039215684, 0.17254901960784313) ,
+      rgb (0.0, 0.26666666666666666, 0.10588235294117647)
+      });
 
 
 list_data BuPu = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.9882352941176471, 0.9921568627450981) ,
-  rgb (0.8784313725490196, 0.9254901960784314, 0.9568627450980393) ,
-  rgb (0.7490196078431373, 0.8274509803921568, 0.9019607843137255) ,
-  rgb (0.6196078431372549, 0.7372549019607844, 0.8549019607843137) ,
-  rgb (0.5490196078431373, 0.5882352941176471, 0.7764705882352941) ,
-  rgb (0.5490196078431373, 0.4196078431372549, 0.6941176470588235) ,
-  rgb (0.5333333333333333, 0.2549019607843137, 0.615686274509804) ,
-  rgb (0.5058823529411764, 0.05882352941176471, 0.48627450980392156) ,
-  rgb (0.30196078431372547, 0.0, 0.29411764705882354)
-});
+    rgb (0.9686274509803922, 0.9882352941176471, 0.9921568627450981) ,
+      rgb (0.8784313725490196, 0.9254901960784314, 0.9568627450980393) ,
+      rgb (0.7490196078431373, 0.8274509803921568, 0.9019607843137255) ,
+      rgb (0.6196078431372549, 0.7372549019607844, 0.8549019607843137) ,
+      rgb (0.5490196078431373, 0.5882352941176471, 0.7764705882352941) ,
+      rgb (0.5490196078431373, 0.4196078431372549, 0.6941176470588235) ,
+      rgb (0.5333333333333333, 0.2549019607843137, 0.615686274509804) ,
+      rgb (0.5058823529411764, 0.05882352941176471, 0.48627450980392156) ,
+      rgb (0.30196078431372547, 0.0, 0.29411764705882354)
+      });
 
 
 seg_data CMRmap = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.125, 0.15, 0.15) ,
-     (0.25, 0.3, 0.3) ,
-     (0.375, 0.6, 0.6) ,
-     (0.5, 1.0, 1.0) ,
-     (0.625, 0.9, 0.9) ,
-     (0.75, 0.9, 0.9) ,
-     (0.875, 0.9, 0.9) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.125, 0.15, 0.15) ,
-     (0.25, 0.15, 0.15) ,
-     (0.375, 0.2, 0.2) ,
-     (0.5, 0.25, 0.25) ,
-     (0.625, 0.5, 0.5) ,
-     (0.75, 0.75, 0.75) ,
-     (0.875, 0.9, 0.9) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.125, 0.5, 0.5) ,
-     (0.25, 0.75, 0.75) ,
-     (0.375, 0.5, 0.5) ,
-     (0.5, 0.15, 0.15) ,
-     (0.625, 0.0, 0.0) ,
-     (0.75, 0.1, 0.1) ,
-     (0.875, 0.5, 0.5) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 0.0, 0.0) ,
+                               (0.125, 0.15, 0.15) ,
+                               (0.25, 0.3, 0.3) ,
+                               (0.375, 0.6, 0.6) ,
+                               (0.5, 1.0, 1.0) ,
+                               (0.625, 0.9, 0.9) ,
+                               (0.75, 0.9, 0.9) ,
+                               (0.875, 0.9, 0.9) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.0, 0.0) ,
+                               (0.125, 0.15, 0.15) ,
+                               (0.25, 0.15, 0.15) ,
+                               (0.375, 0.2, 0.2) ,
+                               (0.5, 0.25, 0.25) ,
+                               (0.625, 0.5, 0.5) ,
+                               (0.75, 0.75, 0.75) ,
+                               (0.875, 0.9, 0.9) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 0.0, 0.0) ,
+                               (0.125, 0.5, 0.5) ,
+                               (0.25, 0.75, 0.75) ,
+                               (0.375, 0.5, 0.5) ,
+                               (0.5, 0.15, 0.15) ,
+                               (0.625, 0.0, 0.0) ,
+                               (0.75, 0.1, 0.1) ,
+                               (0.875, 0.5, 0.5) ,
+                               (1.0, 1.0, 1.0)
+                               }
+                           );
 
 
 list_data Dark2 = list_data(new pen[] {
-  rgb (0.10588235294117647, 0.6196078431372549, 0.4666666666666667) ,
-  rgb (0.8509803921568627, 0.37254901960784315, 0.00784313725490196) ,
-  rgb (0.4588235294117647, 0.4392156862745098, 0.7019607843137254) ,
-  rgb (0.9058823529411765, 0.1607843137254902, 0.5411764705882353) ,
-  rgb (0.4, 0.6509803921568628, 0.11764705882352941) ,
-  rgb (0.9019607843137255, 0.6705882352941176, 0.00784313725490196) ,
-  rgb (0.6509803921568628, 0.4627450980392157, 0.11372549019607843) ,
-  rgb (0.4, 0.4, 0.4)
-});
+    rgb (0.10588235294117647, 0.6196078431372549, 0.4666666666666667) ,
+      rgb (0.8509803921568627, 0.37254901960784315, 0.00784313725490196) ,
+      rgb (0.4588235294117647, 0.4392156862745098, 0.7019607843137254) ,
+      rgb (0.9058823529411765, 0.1607843137254902, 0.5411764705882353) ,
+      rgb (0.4, 0.6509803921568628, 0.11764705882352941) ,
+      rgb (0.9019607843137255, 0.6705882352941176, 0.00784313725490196) ,
+      rgb (0.6509803921568628, 0.4627450980392157, 0.11372549019607843) ,
+      rgb (0.4, 0.4, 0.4)
+      });
 
 
 list_data GnBu = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.9882352941176471, 0.9411764705882353) ,
-  rgb (0.8784313725490196, 0.9529411764705882, 0.8588235294117647) ,
-  rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
-  rgb (0.6588235294117647, 0.8666666666666667, 0.7098039215686275) ,
-  rgb (0.4823529411764706, 0.8, 0.7686274509803922) ,
-  rgb (0.3058823529411765, 0.7019607843137254, 0.8274509803921568) ,
-  rgb (0.16862745098039217, 0.5490196078431373, 0.7450980392156863) ,
-  rgb (0.03137254901960784, 0.40784313725490196, 0.6745098039215687) ,
-  rgb (0.03137254901960784, 0.25098039215686274, 0.5058823529411764)
-});
+    rgb (0.9686274509803922, 0.9882352941176471, 0.9411764705882353) ,
+      rgb (0.8784313725490196, 0.9529411764705882, 0.8588235294117647) ,
+      rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
+      rgb (0.6588235294117647, 0.8666666666666667, 0.7098039215686275) ,
+      rgb (0.4823529411764706, 0.8, 0.7686274509803922) ,
+      rgb (0.3058823529411765, 0.7019607843137254, 0.8274509803921568) ,
+      rgb (0.16862745098039217, 0.5490196078431373, 0.7450980392156863) ,
+      rgb (0.03137254901960784, 0.40784313725490196, 0.6745098039215687) ,
+      rgb (0.03137254901960784, 0.25098039215686274, 0.5058823529411764)
+      });
 
 
 list_data Greens = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.9882352941176471, 0.9607843137254902) ,
-  rgb (0.8980392156862745, 0.9607843137254902, 0.8784313725490196) ,
-  rgb (0.7803921568627451, 0.9137254901960784, 0.7529411764705882) ,
-  rgb (0.6313725490196078, 0.8509803921568627, 0.6078431372549019) ,
-  rgb (0.4549019607843137, 0.7686274509803922, 0.4627450980392157) ,
-  rgb (0.2549019607843137, 0.6705882352941176, 0.36470588235294116) ,
-  rgb (0.13725490196078433, 0.5450980392156862, 0.27058823529411763) ,
-  rgb (0.0, 0.42745098039215684, 0.17254901960784313) ,
-  rgb (0.0, 0.26666666666666666, 0.10588235294117647)
-});
+    rgb (0.9686274509803922, 0.9882352941176471, 0.9607843137254902) ,
+      rgb (0.8980392156862745, 0.9607843137254902, 0.8784313725490196) ,
+      rgb (0.7803921568627451, 0.9137254901960784, 0.7529411764705882) ,
+      rgb (0.6313725490196078, 0.8509803921568627, 0.6078431372549019) ,
+      rgb (0.4549019607843137, 0.7686274509803922, 0.4627450980392157) ,
+      rgb (0.2549019607843137, 0.6705882352941176, 0.36470588235294116) ,
+      rgb (0.13725490196078433, 0.5450980392156862, 0.27058823529411763) ,
+      rgb (0.0, 0.42745098039215684, 0.17254901960784313) ,
+      rgb (0.0, 0.26666666666666666, 0.10588235294117647)
+      });
 
 
 list_data Greys = list_data(new pen[] {
-  rgb (1.0, 1.0, 1.0) ,
-  rgb (0.9411764705882353, 0.9411764705882353, 0.9411764705882353) ,
-  rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627) ,
-  rgb (0.7411764705882353, 0.7411764705882353, 0.7411764705882353) ,
-  rgb (0.5882352941176471, 0.5882352941176471, 0.5882352941176471) ,
-  rgb (0.45098039215686275, 0.45098039215686275, 0.45098039215686275) ,
-  rgb (0.3215686274509804, 0.3215686274509804, 0.3215686274509804) ,
-  rgb (0.1450980392156863, 0.1450980392156863, 0.1450980392156863) ,
-  rgb (0.0, 0.0, 0.0)
-});
+    rgb (1.0, 1.0, 1.0) ,
+      rgb (0.9411764705882353, 0.9411764705882353, 0.9411764705882353) ,
+      rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627) ,
+      rgb (0.7411764705882353, 0.7411764705882353, 0.7411764705882353) ,
+      rgb (0.5882352941176471, 0.5882352941176471, 0.5882352941176471) ,
+      rgb (0.45098039215686275, 0.45098039215686275, 0.45098039215686275) ,
+      rgb (0.3215686274509804, 0.3215686274509804, 0.3215686274509804) ,
+      rgb (0.1450980392156863, 0.1450980392156863, 0.1450980392156863) ,
+      rgb (0.0, 0.0, 0.0)
+      });
 
 
 list_data OrRd = list_data(new pen[] {
-  rgb (1.0, 0.9686274509803922, 0.9254901960784314) ,
-  rgb (0.996078431372549, 0.9098039215686274, 0.7843137254901961) ,
-  rgb (0.9921568627450981, 0.8313725490196079, 0.6196078431372549) ,
-  rgb (0.9921568627450981, 0.7333333333333333, 0.5176470588235295) ,
-  rgb (0.9882352941176471, 0.5529411764705883, 0.34901960784313724) ,
-  rgb (0.9372549019607843, 0.396078431372549, 0.2823529411764706) ,
-  rgb (0.8431372549019608, 0.18823529411764706, 0.12156862745098039) ,
-  rgb (0.7019607843137254, 0.0, 0.0) ,
-  rgb (0.4980392156862745, 0.0, 0.0)
-});
+    rgb (1.0, 0.9686274509803922, 0.9254901960784314) ,
+      rgb (0.996078431372549, 0.9098039215686274, 0.7843137254901961) ,
+      rgb (0.9921568627450981, 0.8313725490196079, 0.6196078431372549) ,
+      rgb (0.9921568627450981, 0.7333333333333333, 0.5176470588235295) ,
+      rgb (0.9882352941176471, 0.5529411764705883, 0.34901960784313724) ,
+      rgb (0.9372549019607843, 0.396078431372549, 0.2823529411764706) ,
+      rgb (0.8431372549019608, 0.18823529411764706, 0.12156862745098039) ,
+      rgb (0.7019607843137254, 0.0, 0.0) ,
+      rgb (0.4980392156862745, 0.0, 0.0)
+      });
 
 
 list_data Oranges = list_data(new pen[] {
-  rgb (1.0, 0.9607843137254902, 0.9215686274509803) ,
-  rgb (0.996078431372549, 0.9019607843137255, 0.807843137254902) ,
-  rgb (0.9921568627450981, 0.8156862745098039, 0.6352941176470588) ,
-  rgb (0.9921568627450981, 0.6823529411764706, 0.4196078431372549) ,
-  rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
-  rgb (0.9450980392156862, 0.4117647058823529, 0.07450980392156863) ,
-  rgb (0.8509803921568627, 0.2823529411764706, 0.00392156862745098) ,
-  rgb (0.6509803921568628, 0.21176470588235294, 0.01176470588235294) ,
-  rgb (0.4980392156862745, 0.15294117647058825, 0.01568627450980392)
-});
+    rgb (1.0, 0.9607843137254902, 0.9215686274509803) ,
+      rgb (0.996078431372549, 0.9019607843137255, 0.807843137254902) ,
+      rgb (0.9921568627450981, 0.8156862745098039, 0.6352941176470588) ,
+      rgb (0.9921568627450981, 0.6823529411764706, 0.4196078431372549) ,
+      rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
+      rgb (0.9450980392156862, 0.4117647058823529, 0.07450980392156863) ,
+      rgb (0.8509803921568627, 0.2823529411764706, 0.00392156862745098) ,
+      rgb (0.6509803921568628, 0.21176470588235294, 0.01176470588235294) ,
+      rgb (0.4980392156862745, 0.15294117647058825, 0.01568627450980392)
+      });
 
 
 list_data PRGn = list_data(new pen[] {
-  rgb (0.25098039215686274, 0.0, 0.29411764705882354) ,
-  rgb (0.4627450980392157, 0.16470588235294117, 0.5137254901960784) ,
-  rgb (0.6, 0.4392156862745098, 0.6705882352941176) ,
-  rgb (0.7607843137254902, 0.6470588235294118, 0.8117647058823529) ,
-  rgb (0.9058823529411765, 0.8313725490196079, 0.9098039215686274) ,
-  rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
-  rgb (0.8509803921568627, 0.9411764705882353, 0.8274509803921568) ,
-  rgb (0.6509803921568628, 0.8588235294117647, 0.6274509803921569) ,
-  rgb (0.35294117647058826, 0.6823529411764706, 0.3803921568627451) ,
-  rgb (0.10588235294117647, 0.47058823529411764, 0.21568627450980393) ,
-  rgb (0.0, 0.26666666666666666, 0.10588235294117647)
-});
+    rgb (0.25098039215686274, 0.0, 0.29411764705882354) ,
+      rgb (0.4627450980392157, 0.16470588235294117, 0.5137254901960784) ,
+      rgb (0.6, 0.4392156862745098, 0.6705882352941176) ,
+      rgb (0.7607843137254902, 0.6470588235294118, 0.8117647058823529) ,
+      rgb (0.9058823529411765, 0.8313725490196079, 0.9098039215686274) ,
+      rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
+      rgb (0.8509803921568627, 0.9411764705882353, 0.8274509803921568) ,
+      rgb (0.6509803921568628, 0.8588235294117647, 0.6274509803921569) ,
+      rgb (0.35294117647058826, 0.6823529411764706, 0.3803921568627451) ,
+      rgb (0.10588235294117647, 0.47058823529411764, 0.21568627450980393) ,
+      rgb (0.0, 0.26666666666666666, 0.10588235294117647)
+      });
 
 
 list_data Paired = list_data(new pen[] {
-  rgb (0.6509803921568628, 0.807843137254902, 0.8901960784313725) ,
-  rgb (0.12156862745098039, 0.47058823529411764, 0.7058823529411765) ,
-  rgb (0.6980392156862745, 0.8745098039215686, 0.5411764705882353) ,
-  rgb (0.2, 0.6274509803921569, 0.17254901960784313) ,
-  rgb (0.984313725490196, 0.6039215686274509, 0.6) ,
-  rgb (0.8901960784313725, 0.10196078431372549, 0.10980392156862745) ,
-  rgb (0.9921568627450981, 0.7490196078431373, 0.43529411764705883) ,
-  rgb (1.0, 0.4980392156862745, 0.0) ,
-  rgb (0.792156862745098, 0.6980392156862745, 0.8392156862745098) ,
-  rgb (0.41568627450980394, 0.23921568627450981, 0.6039215686274509) ,
-  rgb (1.0, 1.0, 0.6) ,
-  rgb (0.6941176470588235, 0.34901960784313724, 0.1568627450980392)
-});
+    rgb (0.6509803921568628, 0.807843137254902, 0.8901960784313725) ,
+      rgb (0.12156862745098039, 0.47058823529411764, 0.7058823529411765) ,
+      rgb (0.6980392156862745, 0.8745098039215686, 0.5411764705882353) ,
+      rgb (0.2, 0.6274509803921569, 0.17254901960784313) ,
+      rgb (0.984313725490196, 0.6039215686274509, 0.6) ,
+      rgb (0.8901960784313725, 0.10196078431372549, 0.10980392156862745) ,
+      rgb (0.9921568627450981, 0.7490196078431373, 0.43529411764705883) ,
+      rgb (1.0, 0.4980392156862745, 0.0) ,
+      rgb (0.792156862745098, 0.6980392156862745, 0.8392156862745098) ,
+      rgb (0.41568627450980394, 0.23921568627450981, 0.6039215686274509) ,
+      rgb (1.0, 1.0, 0.6) ,
+      rgb (0.6941176470588235, 0.34901960784313724, 0.1568627450980392)
+      });
 
 
 list_data Pastel1 = list_data(new pen[] {
-  rgb (0.984313725490196, 0.7058823529411765, 0.6823529411764706) ,
-  rgb (0.7019607843137254, 0.803921568627451, 0.8901960784313725) ,
-  rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
-  rgb (0.8705882352941177, 0.796078431372549, 0.8941176470588236) ,
-  rgb (0.996078431372549, 0.8509803921568627, 0.6509803921568628) ,
-  rgb (1.0, 1.0, 0.8) ,
-  rgb (0.8980392156862745, 0.8470588235294118, 0.7411764705882353) ,
-  rgb (0.9921568627450981, 0.8549019607843137, 0.9254901960784314) ,
-  rgb (0.9490196078431372, 0.9490196078431372, 0.9490196078431372)
-});
+    rgb (0.984313725490196, 0.7058823529411765, 0.6823529411764706) ,
+      rgb (0.7019607843137254, 0.803921568627451, 0.8901960784313725) ,
+      rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
+      rgb (0.8705882352941177, 0.796078431372549, 0.8941176470588236) ,
+      rgb (0.996078431372549, 0.8509803921568627, 0.6509803921568628) ,
+      rgb (1.0, 1.0, 0.8) ,
+      rgb (0.8980392156862745, 0.8470588235294118, 0.7411764705882353) ,
+      rgb (0.9921568627450981, 0.8549019607843137, 0.9254901960784314) ,
+      rgb (0.9490196078431372, 0.9490196078431372, 0.9490196078431372)
+      });
 
 
 list_data Pastel2 = list_data(new pen[] {
-  rgb (0.7019607843137254, 0.8862745098039215, 0.803921568627451) ,
-  rgb (0.9921568627450981, 0.803921568627451, 0.6745098039215687) ,
-  rgb (0.796078431372549, 0.8352941176470589, 0.9098039215686274) ,
-  rgb (0.9568627450980393, 0.792156862745098, 0.8941176470588236) ,
-  rgb (0.9019607843137255, 0.9607843137254902, 0.788235294117647) ,
-  rgb (1.0, 0.9490196078431372, 0.6823529411764706) ,
-  rgb (0.9450980392156862, 0.8862745098039215, 0.8) ,
-  rgb (0.8, 0.8, 0.8)
-});
+    rgb (0.7019607843137254, 0.8862745098039215, 0.803921568627451) ,
+      rgb (0.9921568627450981, 0.803921568627451, 0.6745098039215687) ,
+      rgb (0.796078431372549, 0.8352941176470589, 0.9098039215686274) ,
+      rgb (0.9568627450980393, 0.792156862745098, 0.8941176470588236) ,
+      rgb (0.9019607843137255, 0.9607843137254902, 0.788235294117647) ,
+      rgb (1.0, 0.9490196078431372, 0.6823529411764706) ,
+      rgb (0.9450980392156862, 0.8862745098039215, 0.8) ,
+      rgb (0.8, 0.8, 0.8)
+      });
 
 
 list_data PiYG = list_data(new pen[] {
-  rgb (0.5568627450980392, 0.00392156862745098, 0.3215686274509804) ,
-  rgb (0.7725490196078432, 0.10588235294117647, 0.49019607843137253) ,
-  rgb (0.8705882352941177, 0.4666666666666667, 0.6823529411764706) ,
-  rgb (0.9450980392156862, 0.7137254901960784, 0.8549019607843137) ,
-  rgb (0.9921568627450981, 0.8784313725490196, 0.9372549019607843) ,
-  rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
-  rgb (0.9019607843137255, 0.9607843137254902, 0.8156862745098039) ,
-  rgb (0.7215686274509804, 0.8823529411764706, 0.5254901960784314) ,
-  rgb (0.4980392156862745, 0.7372549019607844, 0.2549019607843137) ,
-  rgb (0.30196078431372547, 0.5725490196078431, 0.12941176470588237) ,
-  rgb (0.15294117647058825, 0.39215686274509803, 0.09803921568627451)
-});
+    rgb (0.5568627450980392, 0.00392156862745098, 0.3215686274509804) ,
+      rgb (0.7725490196078432, 0.10588235294117647, 0.49019607843137253) ,
+      rgb (0.8705882352941177, 0.4666666666666667, 0.6823529411764706) ,
+      rgb (0.9450980392156862, 0.7137254901960784, 0.8549019607843137) ,
+      rgb (0.9921568627450981, 0.8784313725490196, 0.9372549019607843) ,
+      rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
+      rgb (0.9019607843137255, 0.9607843137254902, 0.8156862745098039) ,
+      rgb (0.7215686274509804, 0.8823529411764706, 0.5254901960784314) ,
+      rgb (0.4980392156862745, 0.7372549019607844, 0.2549019607843137) ,
+      rgb (0.30196078431372547, 0.5725490196078431, 0.12941176470588237) ,
+      rgb (0.15294117647058825, 0.39215686274509803, 0.09803921568627451)
+      });
 
 
 list_data PuBuGn = list_data(new pen[] {
-  rgb (1.0, 0.9686274509803922, 0.984313725490196) ,
-  rgb (0.9254901960784314, 0.8862745098039215, 0.9411764705882353) ,
-  rgb (0.8156862745098039, 0.8196078431372549, 0.9019607843137255) ,
-  rgb (0.6509803921568628, 0.7411764705882353, 0.8588235294117647) ,
-  rgb (0.403921568627451, 0.6627450980392157, 0.8117647058823529) ,
-  rgb (0.21176470588235294, 0.5647058823529412, 0.7529411764705882) ,
-  rgb (0.00784313725490196, 0.5058823529411764, 0.5411764705882353) ,
-  rgb (0.00392156862745098, 0.4235294117647059, 0.34901960784313724) ,
-  rgb (0.00392156862745098, 0.27450980392156865, 0.21176470588235294)
-});
+    rgb (1.0, 0.9686274509803922, 0.984313725490196) ,
+      rgb (0.9254901960784314, 0.8862745098039215, 0.9411764705882353) ,
+      rgb (0.8156862745098039, 0.8196078431372549, 0.9019607843137255) ,
+      rgb (0.6509803921568628, 0.7411764705882353, 0.8588235294117647) ,
+      rgb (0.403921568627451, 0.6627450980392157, 0.8117647058823529) ,
+      rgb (0.21176470588235294, 0.5647058823529412, 0.7529411764705882) ,
+      rgb (0.00784313725490196, 0.5058823529411764, 0.5411764705882353) ,
+      rgb (0.00392156862745098, 0.4235294117647059, 0.34901960784313724) ,
+      rgb (0.00392156862745098, 0.27450980392156865, 0.21176470588235294)
+      });
 
 
 list_data PuBu = list_data(new pen[] {
-  rgb (1.0, 0.9686274509803922, 0.984313725490196) ,
-  rgb (0.9254901960784314, 0.9058823529411765, 0.9490196078431372) ,
-  rgb (0.8156862745098039, 0.8196078431372549, 0.9019607843137255) ,
-  rgb (0.6509803921568628, 0.7411764705882353, 0.8588235294117647) ,
-  rgb (0.4549019607843137, 0.6627450980392157, 0.8117647058823529) ,
-  rgb (0.21176470588235294, 0.5647058823529412, 0.7529411764705882) ,
-  rgb (0.0196078431372549, 0.4392156862745098, 0.6901960784313725) ,
-  rgb (0.01568627450980392, 0.35294117647058826, 0.5529411764705883) ,
-  rgb (0.00784313725490196, 0.2196078431372549, 0.34509803921568627)
-});
+    rgb (1.0, 0.9686274509803922, 0.984313725490196) ,
+      rgb (0.9254901960784314, 0.9058823529411765, 0.9490196078431372) ,
+      rgb (0.8156862745098039, 0.8196078431372549, 0.9019607843137255) ,
+      rgb (0.6509803921568628, 0.7411764705882353, 0.8588235294117647) ,
+      rgb (0.4549019607843137, 0.6627450980392157, 0.8117647058823529) ,
+      rgb (0.21176470588235294, 0.5647058823529412, 0.7529411764705882) ,
+      rgb (0.0196078431372549, 0.4392156862745098, 0.6901960784313725) ,
+      rgb (0.01568627450980392, 0.35294117647058826, 0.5529411764705883) ,
+      rgb (0.00784313725490196, 0.2196078431372549, 0.34509803921568627)
+      });
 
 
 list_data PuOr = list_data(new pen[] {
-  rgb (0.4980392156862745, 0.23137254901960785, 0.03137254901960784) ,
-  rgb (0.7019607843137254, 0.34509803921568627, 0.02352941176470588) ,
-  rgb (0.8784313725490196, 0.5098039215686274, 0.0784313725490196) ,
-  rgb (0.9921568627450981, 0.7215686274509804, 0.38823529411764707) ,
-  rgb (0.996078431372549, 0.8784313725490196, 0.7137254901960784) ,
-  rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
-  rgb (0.8470588235294118, 0.8549019607843137, 0.9215686274509803) ,
-  rgb (0.6980392156862745, 0.6705882352941176, 0.8235294117647058) ,
-  rgb (0.5019607843137255, 0.45098039215686275, 0.6745098039215687) ,
-  rgb (0.32941176470588235, 0.15294117647058825, 0.5333333333333333) ,
-  rgb (0.17647058823529413, 0.0, 0.29411764705882354)
-});
+    rgb (0.4980392156862745, 0.23137254901960785, 0.03137254901960784) ,
+      rgb (0.7019607843137254, 0.34509803921568627, 0.02352941176470588) ,
+      rgb (0.8784313725490196, 0.5098039215686274, 0.0784313725490196) ,
+      rgb (0.9921568627450981, 0.7215686274509804, 0.38823529411764707) ,
+      rgb (0.996078431372549, 0.8784313725490196, 0.7137254901960784) ,
+      rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
+      rgb (0.8470588235294118, 0.8549019607843137, 0.9215686274509803) ,
+      rgb (0.6980392156862745, 0.6705882352941176, 0.8235294117647058) ,
+      rgb (0.5019607843137255, 0.45098039215686275, 0.6745098039215687) ,
+      rgb (0.32941176470588235, 0.15294117647058825, 0.5333333333333333) ,
+      rgb (0.17647058823529413, 0.0, 0.29411764705882354)
+      });
 
 
 list_data PuRd = list_data(new pen[] {
-  rgb (0.9686274509803922, 0.9568627450980393, 0.9764705882352941) ,
-  rgb (0.9058823529411765, 0.8823529411764706, 0.9372549019607843) ,
-  rgb (0.8313725490196079, 0.7254901960784313, 0.8549019607843137) ,
-  rgb (0.788235294117647, 0.5803921568627451, 0.7803921568627451) ,
-  rgb (0.8745098039215686, 0.396078431372549, 0.6901960784313725) ,
-  rgb (0.9058823529411765, 0.1607843137254902, 0.5411764705882353) ,
-  rgb (0.807843137254902, 0.07058823529411765, 0.33725490196078434) ,
-  rgb (0.596078431372549, 0.0, 0.2627450980392157) ,
-  rgb (0.403921568627451, 0.0, 0.12156862745098039)
-});
+    rgb (0.9686274509803922, 0.9568627450980393, 0.9764705882352941) ,
+      rgb (0.9058823529411765, 0.8823529411764706, 0.9372549019607843) ,
+      rgb (0.8313725490196079, 0.7254901960784313, 0.8549019607843137) ,
+      rgb (0.788235294117647, 0.5803921568627451, 0.7803921568627451) ,
+      rgb (0.8745098039215686, 0.396078431372549, 0.6901960784313725) ,
+      rgb (0.9058823529411765, 0.1607843137254902, 0.5411764705882353) ,
+      rgb (0.807843137254902, 0.07058823529411765, 0.33725490196078434) ,
+      rgb (0.596078431372549, 0.0, 0.2627450980392157) ,
+      rgb (0.403921568627451, 0.0, 0.12156862745098039)
+      });
 
 
 list_data Purples = list_data(new pen[] {
-  rgb (0.9882352941176471, 0.984313725490196, 0.9921568627450981) ,
-  rgb (0.9372549019607843, 0.9294117647058824, 0.9607843137254902) ,
-  rgb (0.8549019607843137, 0.8549019607843137, 0.9215686274509803) ,
-  rgb (0.7372549019607844, 0.7411764705882353, 0.8627450980392157) ,
-  rgb (0.6196078431372549, 0.6039215686274509, 0.7843137254901961) ,
-  rgb (0.5019607843137255, 0.49019607843137253, 0.7294117647058823) ,
-  rgb (0.41568627450980394, 0.3176470588235294, 0.6392156862745098) ,
-  rgb (0.32941176470588235, 0.15294117647058825, 0.5607843137254902) ,
-  rgb (0.24705882352941178, 0.0, 0.49019607843137253)
-});
+    rgb (0.9882352941176471, 0.984313725490196, 0.9921568627450981) ,
+      rgb (0.9372549019607843, 0.9294117647058824, 0.9607843137254902) ,
+      rgb (0.8549019607843137, 0.8549019607843137, 0.9215686274509803) ,
+      rgb (0.7372549019607844, 0.7411764705882353, 0.8627450980392157) ,
+      rgb (0.6196078431372549, 0.6039215686274509, 0.7843137254901961) ,
+      rgb (0.5019607843137255, 0.49019607843137253, 0.7294117647058823) ,
+      rgb (0.41568627450980394, 0.3176470588235294, 0.6392156862745098) ,
+      rgb (0.32941176470588235, 0.15294117647058825, 0.5607843137254902) ,
+      rgb (0.24705882352941178, 0.0, 0.49019607843137253)
+      });
 
 
 list_data RdBu = list_data(new pen[] {
-  rgb (0.403921568627451, 0.0, 0.12156862745098039) ,
-  rgb (0.6980392156862745, 0.09411764705882353, 0.16862745098039217) ,
-  rgb (0.8392156862745098, 0.3764705882352941, 0.30196078431372547) ,
-  rgb (0.9568627450980393, 0.6470588235294118, 0.5098039215686274) ,
-  rgb (0.9921568627450981, 0.8588235294117647, 0.7803921568627451) ,
-  rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
-  rgb (0.8196078431372549, 0.8980392156862745, 0.9411764705882353) ,
-  rgb (0.5725490196078431, 0.7725490196078432, 0.8705882352941177) ,
-  rgb (0.2627450980392157, 0.5764705882352941, 0.7647058823529411) ,
-  rgb (0.12941176470588237, 0.4, 0.6745098039215687) ,
-  rgb (0.0196078431372549, 0.18823529411764706, 0.3803921568627451)
-});
+    rgb (0.403921568627451, 0.0, 0.12156862745098039) ,
+      rgb (0.6980392156862745, 0.09411764705882353, 0.16862745098039217) ,
+      rgb (0.8392156862745098, 0.3764705882352941, 0.30196078431372547) ,
+      rgb (0.9568627450980393, 0.6470588235294118, 0.5098039215686274) ,
+      rgb (0.9921568627450981, 0.8588235294117647, 0.7803921568627451) ,
+      rgb (0.9686274509803922, 0.9686274509803922, 0.9686274509803922) ,
+      rgb (0.8196078431372549, 0.8980392156862745, 0.9411764705882353) ,
+      rgb (0.5725490196078431, 0.7725490196078432, 0.8705882352941177) ,
+      rgb (0.2627450980392157, 0.5764705882352941, 0.7647058823529411) ,
+      rgb (0.12941176470588237, 0.4, 0.6745098039215687) ,
+      rgb (0.0196078431372549, 0.18823529411764706, 0.3803921568627451)
+      });
 
 
 list_data RdGy = list_data(new pen[] {
-  rgb (0.403921568627451, 0.0, 0.12156862745098039) ,
-  rgb (0.6980392156862745, 0.09411764705882353, 0.16862745098039217) ,
-  rgb (0.8392156862745098, 0.3764705882352941, 0.30196078431372547) ,
-  rgb (0.9568627450980393, 0.6470588235294118, 0.5098039215686274) ,
-  rgb (0.9921568627450981, 0.8588235294117647, 0.7803921568627451) ,
-  rgb (1.0, 1.0, 1.0) ,
-  rgb (0.8784313725490196, 0.8784313725490196, 0.8784313725490196) ,
-  rgb (0.7294117647058823, 0.7294117647058823, 0.7294117647058823) ,
-  rgb (0.5294117647058824, 0.5294117647058824, 0.5294117647058824) ,
-  rgb (0.30196078431372547, 0.30196078431372547, 0.30196078431372547) ,
-  rgb (0.10196078431372549, 0.10196078431372549, 0.10196078431372549)
-});
+    rgb (0.403921568627451, 0.0, 0.12156862745098039) ,
+      rgb (0.6980392156862745, 0.09411764705882353, 0.16862745098039217) ,
+      rgb (0.8392156862745098, 0.3764705882352941, 0.30196078431372547) ,
+      rgb (0.9568627450980393, 0.6470588235294118, 0.5098039215686274) ,
+      rgb (0.9921568627450981, 0.8588235294117647, 0.7803921568627451) ,
+      rgb (1.0, 1.0, 1.0) ,
+      rgb (0.8784313725490196, 0.8784313725490196, 0.8784313725490196) ,
+      rgb (0.7294117647058823, 0.7294117647058823, 0.7294117647058823) ,
+      rgb (0.5294117647058824, 0.5294117647058824, 0.5294117647058824) ,
+      rgb (0.30196078431372547, 0.30196078431372547, 0.30196078431372547) ,
+      rgb (0.10196078431372549, 0.10196078431372549, 0.10196078431372549)
+      });
 
 
 list_data RdPu = list_data(new pen[] {
-  rgb (1.0, 0.9686274509803922, 0.9529411764705882) ,
-  rgb (0.9921568627450981, 0.8784313725490196, 0.8666666666666667) ,
-  rgb (0.9882352941176471, 0.7725490196078432, 0.7529411764705882) ,
-  rgb (0.9803921568627451, 0.6235294117647059, 0.7098039215686275) ,
-  rgb (0.9686274509803922, 0.40784313725490196, 0.6313725490196078) ,
-  rgb (0.8666666666666667, 0.20392156862745098, 0.592156862745098) ,
-  rgb (0.6823529411764706, 0.00392156862745098, 0.49411764705882355) ,
-  rgb (0.47843137254901963, 0.00392156862745098, 0.4666666666666667) ,
-  rgb (0.28627450980392155, 0.0, 0.41568627450980394)
-});
+    rgb (1.0, 0.9686274509803922, 0.9529411764705882) ,
+      rgb (0.9921568627450981, 0.8784313725490196, 0.8666666666666667) ,
+      rgb (0.9882352941176471, 0.7725490196078432, 0.7529411764705882) ,
+      rgb (0.9803921568627451, 0.6235294117647059, 0.7098039215686275) ,
+      rgb (0.9686274509803922, 0.40784313725490196, 0.6313725490196078) ,
+      rgb (0.8666666666666667, 0.20392156862745098, 0.592156862745098) ,
+      rgb (0.6823529411764706, 0.00392156862745098, 0.49411764705882355) ,
+      rgb (0.47843137254901963, 0.00392156862745098, 0.4666666666666667) ,
+      rgb (0.28627450980392155, 0.0, 0.41568627450980394)
+      });
 
 
 list_data RdYlBu = list_data(new pen[] {
-  rgb (0.6470588235294118, 0.0, 0.14901960784313725) ,
-  rgb (0.8431372549019608, 0.18823529411764706, 0.15294117647058825) ,
-  rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
-  rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
-  rgb (0.996078431372549, 0.8784313725490196, 0.5647058823529412) ,
-  rgb (1.0, 1.0, 0.7490196078431373) ,
-  rgb (0.8784313725490196, 0.9529411764705882, 0.9725490196078431) ,
-  rgb (0.6705882352941176, 0.8509803921568627, 0.9137254901960784) ,
-  rgb (0.4549019607843137, 0.6784313725490196, 0.8196078431372549) ,
-  rgb (0.27058823529411763, 0.4588235294117647, 0.7058823529411765) ,
-  rgb (0.19215686274509805, 0.21176470588235294, 0.5843137254901961)
-});
+    rgb (0.6470588235294118, 0.0, 0.14901960784313725) ,
+      rgb (0.8431372549019608, 0.18823529411764706, 0.15294117647058825) ,
+      rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
+      rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
+      rgb (0.996078431372549, 0.8784313725490196, 0.5647058823529412) ,
+      rgb (1.0, 1.0, 0.7490196078431373) ,
+      rgb (0.8784313725490196, 0.9529411764705882, 0.9725490196078431) ,
+      rgb (0.6705882352941176, 0.8509803921568627, 0.9137254901960784) ,
+      rgb (0.4549019607843137, 0.6784313725490196, 0.8196078431372549) ,
+      rgb (0.27058823529411763, 0.4588235294117647, 0.7058823529411765) ,
+      rgb (0.19215686274509805, 0.21176470588235294, 0.5843137254901961)
+      });
 
 
 list_data RdYlGn = list_data(new pen[] {
-  rgb (0.6470588235294118, 0.0, 0.14901960784313725) ,
-  rgb (0.8431372549019608, 0.18823529411764706, 0.15294117647058825) ,
-  rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
-  rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
-  rgb (0.996078431372549, 0.8784313725490196, 0.5450980392156862) ,
-  rgb (1.0, 1.0, 0.7490196078431373) ,
-  rgb (0.8509803921568627, 0.9372549019607843, 0.5450980392156862) ,
-  rgb (0.6509803921568628, 0.8509803921568627, 0.41568627450980394) ,
-  rgb (0.4, 0.7411764705882353, 0.38823529411764707) ,
-  rgb (0.10196078431372549, 0.596078431372549, 0.3137254901960784) ,
-  rgb (0.0, 0.40784313725490196, 0.21568627450980393)
-});
+    rgb (0.6470588235294118, 0.0, 0.14901960784313725) ,
+      rgb (0.8431372549019608, 0.18823529411764706, 0.15294117647058825) ,
+      rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
+      rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
+      rgb (0.996078431372549, 0.8784313725490196, 0.5450980392156862) ,
+      rgb (1.0, 1.0, 0.7490196078431373) ,
+      rgb (0.8509803921568627, 0.9372549019607843, 0.5450980392156862) ,
+      rgb (0.6509803921568628, 0.8509803921568627, 0.41568627450980394) ,
+      rgb (0.4, 0.7411764705882353, 0.38823529411764707) ,
+      rgb (0.10196078431372549, 0.596078431372549, 0.3137254901960784) ,
+      rgb (0.0, 0.40784313725490196, 0.21568627450980393)
+      });
 
 
 list_data Reds = list_data(new pen[] {
-  rgb (1.0, 0.9607843137254902, 0.9411764705882353) ,
-  rgb (0.996078431372549, 0.8784313725490196, 0.8235294117647058) ,
-  rgb (0.9882352941176471, 0.7333333333333333, 0.6313725490196078) ,
-  rgb (0.9882352941176471, 0.5725490196078431, 0.4470588235294118) ,
-  rgb (0.984313725490196, 0.41568627450980394, 0.2901960784313726) ,
-  rgb (0.9372549019607843, 0.23137254901960785, 0.17254901960784313) ,
-  rgb (0.796078431372549, 0.09411764705882353, 0.11372549019607843) ,
-  rgb (0.6470588235294118, 0.058823529411764705, 0.08235294117647057) ,
-  rgb (0.403921568627451, 0.0, 0.05098039215686274)
-});
+    rgb (1.0, 0.9607843137254902, 0.9411764705882353) ,
+      rgb (0.996078431372549, 0.8784313725490196, 0.8235294117647058) ,
+      rgb (0.9882352941176471, 0.7333333333333333, 0.6313725490196078) ,
+      rgb (0.9882352941176471, 0.5725490196078431, 0.4470588235294118) ,
+      rgb (0.984313725490196, 0.41568627450980394, 0.2901960784313726) ,
+      rgb (0.9372549019607843, 0.23137254901960785, 0.17254901960784313) ,
+      rgb (0.796078431372549, 0.09411764705882353, 0.11372549019607843) ,
+      rgb (0.6470588235294118, 0.058823529411764705, 0.08235294117647057) ,
+      rgb (0.403921568627451, 0.0, 0.05098039215686274)
+      });
 
 
 list_data Set1 = list_data(new pen[] {
-  rgb (0.8941176470588236, 0.10196078431372549, 0.10980392156862745) ,
-  rgb (0.21568627450980393, 0.49411764705882355, 0.7215686274509804) ,
-  rgb (0.30196078431372547, 0.6862745098039216, 0.2901960784313726) ,
-  rgb (0.596078431372549, 0.3058823529411765, 0.6392156862745098) ,
-  rgb (1.0, 0.4980392156862745, 0.0) ,
-  rgb (1.0, 1.0, 0.2) ,
-  rgb (0.6509803921568628, 0.33725490196078434, 0.1568627450980392) ,
-  rgb (0.9686274509803922, 0.5058823529411764, 0.7490196078431373) ,
-  rgb (0.6, 0.6, 0.6)
-});
+    rgb (0.8941176470588236, 0.10196078431372549, 0.10980392156862745) ,
+      rgb (0.21568627450980393, 0.49411764705882355, 0.7215686274509804) ,
+      rgb (0.30196078431372547, 0.6862745098039216, 0.2901960784313726) ,
+      rgb (0.596078431372549, 0.3058823529411765, 0.6392156862745098) ,
+      rgb (1.0, 0.4980392156862745, 0.0) ,
+      rgb (1.0, 1.0, 0.2) ,
+      rgb (0.6509803921568628, 0.33725490196078434, 0.1568627450980392) ,
+      rgb (0.9686274509803922, 0.5058823529411764, 0.7490196078431373) ,
+      rgb (0.6, 0.6, 0.6)
+      });
 
 
 list_data Set2 = list_data(new pen[] {
-  rgb (0.4, 0.7607843137254902, 0.6470588235294118) ,
-  rgb (0.9882352941176471, 0.5529411764705883, 0.3843137254901961) ,
-  rgb (0.5529411764705883, 0.6274509803921569, 0.796078431372549) ,
-  rgb (0.9058823529411765, 0.5411764705882353, 0.7647058823529411) ,
-  rgb (0.6509803921568628, 0.8470588235294118, 0.32941176470588235) ,
-  rgb (1.0, 0.8509803921568627, 0.1843137254901961) ,
-  rgb (0.8980392156862745, 0.7686274509803922, 0.5803921568627451) ,
-  rgb (0.7019607843137254, 0.7019607843137254, 0.7019607843137254)
-});
+    rgb (0.4, 0.7607843137254902, 0.6470588235294118) ,
+      rgb (0.9882352941176471, 0.5529411764705883, 0.3843137254901961) ,
+      rgb (0.5529411764705883, 0.6274509803921569, 0.796078431372549) ,
+      rgb (0.9058823529411765, 0.5411764705882353, 0.7647058823529411) ,
+      rgb (0.6509803921568628, 0.8470588235294118, 0.32941176470588235) ,
+      rgb (1.0, 0.8509803921568627, 0.1843137254901961) ,
+      rgb (0.8980392156862745, 0.7686274509803922, 0.5803921568627451) ,
+      rgb (0.7019607843137254, 0.7019607843137254, 0.7019607843137254)
+      });
 
 
 list_data Set3 = list_data(new pen[] {
-  rgb (0.5529411764705883, 0.8274509803921568, 0.7803921568627451) ,
-  rgb (1.0, 1.0, 0.7019607843137254) ,
-  rgb (0.7450980392156863, 0.7294117647058823, 0.8549019607843137) ,
-  rgb (0.984313725490196, 0.5019607843137255, 0.4470588235294118) ,
-  rgb (0.5019607843137255, 0.6941176470588235, 0.8274509803921568) ,
-  rgb (0.9921568627450981, 0.7058823529411765, 0.3843137254901961) ,
-  rgb (0.7019607843137254, 0.8705882352941177, 0.4117647058823529) ,
-  rgb (0.9882352941176471, 0.803921568627451, 0.8980392156862745) ,
-  rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627) ,
-  rgb (0.7372549019607844, 0.5019607843137255, 0.7411764705882353) ,
-  rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
-  rgb (1.0, 0.9294117647058824, 0.43529411764705883)
-});
+    rgb (0.5529411764705883, 0.8274509803921568, 0.7803921568627451) ,
+      rgb (1.0, 1.0, 0.7019607843137254) ,
+      rgb (0.7450980392156863, 0.7294117647058823, 0.8549019607843137) ,
+      rgb (0.984313725490196, 0.5019607843137255, 0.4470588235294118) ,
+      rgb (0.5019607843137255, 0.6941176470588235, 0.8274509803921568) ,
+      rgb (0.9921568627450981, 0.7058823529411765, 0.3843137254901961) ,
+      rgb (0.7019607843137254, 0.8705882352941177, 0.4117647058823529) ,
+      rgb (0.9882352941176471, 0.803921568627451, 0.8980392156862745) ,
+      rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627) ,
+      rgb (0.7372549019607844, 0.5019607843137255, 0.7411764705882353) ,
+      rgb (0.8, 0.9215686274509803, 0.7725490196078432) ,
+      rgb (1.0, 0.9294117647058824, 0.43529411764705883)
+      });
 
 
 list_data Spectral = list_data(new pen[] {
-  rgb (0.6196078431372549, 0.00392156862745098, 0.25882352941176473) ,
-  rgb (0.8352941176470589, 0.24313725490196078, 0.30980392156862746) ,
-  rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
-  rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
-  rgb (0.996078431372549, 0.8784313725490196, 0.5450980392156862) ,
-  rgb (1.0, 1.0, 0.7490196078431373) ,
-  rgb (0.9019607843137255, 0.9607843137254902, 0.596078431372549) ,
-  rgb (0.6705882352941176, 0.8666666666666667, 0.6431372549019608) ,
-  rgb (0.4, 0.7607843137254902, 0.6470588235294118) ,
-  rgb (0.19607843137254902, 0.5333333333333333, 0.7411764705882353) ,
-  rgb (0.3686274509803922, 0.30980392156862746, 0.6352941176470588)
-});
+    rgb (0.6196078431372549, 0.00392156862745098, 0.25882352941176473) ,
+      rgb (0.8352941176470589, 0.24313725490196078, 0.30980392156862746) ,
+      rgb (0.9568627450980393, 0.42745098039215684, 0.2627450980392157) ,
+      rgb (0.9921568627450981, 0.6823529411764706, 0.3803921568627451) ,
+      rgb (0.996078431372549, 0.8784313725490196, 0.5450980392156862) ,
+      rgb (1.0, 1.0, 0.7490196078431373) ,
+      rgb (0.9019607843137255, 0.9607843137254902, 0.596078431372549) ,
+      rgb (0.6705882352941176, 0.8666666666666667, 0.6431372549019608) ,
+      rgb (0.4, 0.7607843137254902, 0.6470588235294118) ,
+      rgb (0.19607843137254902, 0.5333333333333333, 0.7411764705882353) ,
+      rgb (0.3686274509803922, 0.30980392156862746, 0.6352941176470588)
+      });
 
 
 list_data YlGnBu = list_data(new pen[] {
-  rgb (1.0, 1.0, 0.8509803921568627) ,
-  rgb (0.9294117647058824, 0.9725490196078431, 0.6941176470588235) ,
-  rgb (0.7803921568627451, 0.9137254901960784, 0.7058823529411765) ,
-  rgb (0.4980392156862745, 0.803921568627451, 0.7333333333333333) ,
-  rgb (0.2549019607843137, 0.7137254901960784, 0.7686274509803922) ,
-  rgb (0.11372549019607843, 0.5686274509803921, 0.7529411764705882) ,
-  rgb (0.13333333333333333, 0.3686274509803922, 0.6588235294117647) ,
-  rgb (0.1450980392156863, 0.20392156862745098, 0.5803921568627451) ,
-  rgb (0.03137254901960784, 0.11372549019607843, 0.34509803921568627)
-});
+    rgb (1.0, 1.0, 0.8509803921568627) ,
+      rgb (0.9294117647058824, 0.9725490196078431, 0.6941176470588235) ,
+      rgb (0.7803921568627451, 0.9137254901960784, 0.7058823529411765) ,
+      rgb (0.4980392156862745, 0.803921568627451, 0.7333333333333333) ,
+      rgb (0.2549019607843137, 0.7137254901960784, 0.7686274509803922) ,
+      rgb (0.11372549019607843, 0.5686274509803921, 0.7529411764705882) ,
+      rgb (0.13333333333333333, 0.3686274509803922, 0.6588235294117647) ,
+      rgb (0.1450980392156863, 0.20392156862745098, 0.5803921568627451) ,
+      rgb (0.03137254901960784, 0.11372549019607843, 0.34509803921568627)
+      });
 
 
 list_data YlGn = list_data(new pen[] {
-  rgb (1.0, 1.0, 0.8980392156862745) ,
-  rgb (0.9686274509803922, 0.9882352941176471, 0.7254901960784313) ,
-  rgb (0.8509803921568627, 0.9411764705882353, 0.6392156862745098) ,
-  rgb (0.6784313725490196, 0.8666666666666667, 0.5568627450980392) ,
-  rgb (0.47058823529411764, 0.7764705882352941, 0.4745098039215686) ,
-  rgb (0.2549019607843137, 0.6705882352941176, 0.36470588235294116) ,
-  rgb (0.13725490196078433, 0.5176470588235295, 0.2627450980392157) ,
-  rgb (0.0, 0.40784313725490196, 0.21568627450980393) ,
-  rgb (0.0, 0.27058823529411763, 0.1607843137254902)
-});
+    rgb (1.0, 1.0, 0.8980392156862745) ,
+      rgb (0.9686274509803922, 0.9882352941176471, 0.7254901960784313) ,
+      rgb (0.8509803921568627, 0.9411764705882353, 0.6392156862745098) ,
+      rgb (0.6784313725490196, 0.8666666666666667, 0.5568627450980392) ,
+      rgb (0.47058823529411764, 0.7764705882352941, 0.4745098039215686) ,
+      rgb (0.2549019607843137, 0.6705882352941176, 0.36470588235294116) ,
+      rgb (0.13725490196078433, 0.5176470588235295, 0.2627450980392157) ,
+      rgb (0.0, 0.40784313725490196, 0.21568627450980393) ,
+      rgb (0.0, 0.27058823529411763, 0.1607843137254902)
+      });
 
 
 list_data YlOrBr = list_data(new pen[] {
-  rgb (1.0, 1.0, 0.8980392156862745) ,
-  rgb (1.0, 0.9686274509803922, 0.7372549019607844) ,
-  rgb (0.996078431372549, 0.8901960784313725, 0.5686274509803921) ,
-  rgb (0.996078431372549, 0.7686274509803922, 0.30980392156862746) ,
-  rgb (0.996078431372549, 0.6, 0.1607843137254902) ,
-  rgb (0.9254901960784314, 0.4392156862745098, 0.0784313725490196) ,
-  rgb (0.8, 0.2980392156862745, 0.00784313725490196) ,
-  rgb (0.6, 0.20392156862745098, 0.01568627450980392) ,
-  rgb (0.4, 0.1450980392156863, 0.02352941176470588)
-});
+    rgb (1.0, 1.0, 0.8980392156862745) ,
+      rgb (1.0, 0.9686274509803922, 0.7372549019607844) ,
+      rgb (0.996078431372549, 0.8901960784313725, 0.5686274509803921) ,
+      rgb (0.996078431372549, 0.7686274509803922, 0.30980392156862746) ,
+      rgb (0.996078431372549, 0.6, 0.1607843137254902) ,
+      rgb (0.9254901960784314, 0.4392156862745098, 0.0784313725490196) ,
+      rgb (0.8, 0.2980392156862745, 0.00784313725490196) ,
+      rgb (0.6, 0.20392156862745098, 0.01568627450980392) ,
+      rgb (0.4, 0.1450980392156863, 0.02352941176470588)
+      });
 
 
 list_data YlOrRd = list_data(new pen[] {
-  rgb (1.0, 1.0, 0.8) ,
-  rgb (1.0, 0.9294117647058824, 0.6274509803921569) ,
-  rgb (0.996078431372549, 0.8509803921568627, 0.4627450980392157) ,
-  rgb (0.996078431372549, 0.6980392156862745, 0.2980392156862745) ,
-  rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
-  rgb (0.9882352941176471, 0.3058823529411765, 0.16470588235294117) ,
-  rgb (0.8901960784313725, 0.10196078431372549, 0.10980392156862745) ,
-  rgb (0.7411764705882353, 0.0, 0.14901960784313725) ,
-  rgb (0.5019607843137255, 0.0, 0.14901960784313725)
-});
+    rgb (1.0, 1.0, 0.8) ,
+      rgb (1.0, 0.9294117647058824, 0.6274509803921569) ,
+      rgb (0.996078431372549, 0.8509803921568627, 0.4627450980392157) ,
+      rgb (0.996078431372549, 0.6980392156862745, 0.2980392156862745) ,
+      rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
+      rgb (0.9882352941176471, 0.3058823529411765, 0.16470588235294117) ,
+      rgb (0.8901960784313725, 0.10196078431372549, 0.10980392156862745) ,
+      rgb (0.7411764705882353, 0.0, 0.14901960784313725) ,
+      rgb (0.5019607843137255, 0.0, 0.14901960784313725)
+      });
 
 
 seg_data autumn = seg_data(
-  new triple[] {  // red
-     (0.0, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (1.0, 0.0, 0.0)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 0.0, 0.0)
+                               }
+                           );
 
 
 seg_data binary = seg_data(
-  new triple[] {  // red
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.0, 0.0)
-  },
-  new triple[] {  // green
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.0, 0.0)
-  },
-  new triple[] {  // blue
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.0, 0.0)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 0.0, 0.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 0.0, 0.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 0.0, 0.0)
+                               }
+                           );
 
 
 seg_data bone = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.746032, 0.652778, 0.652778) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.365079, 0.319444, 0.319444) ,
-     (0.746032, 0.777778, 0.777778) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.365079, 0.444444, 0.444444) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                         new triple[] {  // red
+                           (0.0, 0.0, 0.0) ,
+                             (0.746032, 0.652778, 0.652778) ,
+                             (1.0, 1.0, 1.0)
+                             },
+                         new triple[] {  // green
+                           (0.0, 0.0, 0.0) ,
+                             (0.365079, 0.319444, 0.319444) ,
+                             (0.746032, 0.777778, 0.777778) ,
+                             (1.0, 1.0, 1.0)
+                             },
+                         new triple[] {  // blue
+                           (0.0, 0.0, 0.0) ,
+                             (0.365079, 0.444444, 0.444444) ,
+                             (1.0, 1.0, 1.0)
+                             }
+                         );
 
 
 list_data brg = list_data(new pen[] {
-  rgb (0.0, 0.0, 1.0) ,
-  rgb (1.0, 0.0, 0.0) ,
-  rgb (0.0, 1.0, 0.0)
-});
+    rgb (0.0, 0.0, 1.0) ,
+      rgb (1.0, 0.0, 0.0) ,
+      rgb (0.0, 1.0, 0.0)
+      });
 
 
 list_data bwr = list_data(new pen[] {
-  rgb (0.0, 0.0, 1.0) ,
-  rgb (1.0, 1.0, 1.0) ,
-  rgb (1.0, 0.0, 0.0)
-});
+    rgb (0.0, 0.0, 1.0) ,
+      rgb (1.0, 1.0, 1.0) ,
+      rgb (1.0, 0.0, 0.0)
+      });
 
 
 seg_data cool = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.0, 0.0)
-  },
-  new triple[] {  // blue
-     (0.0, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                         new triple[] {  // red
+                           (0.0, 0.0, 0.0) ,
+                             (1.0, 1.0, 1.0)
+                             },
+                         new triple[] {  // green
+                           (0.0, 1.0, 1.0) ,
+                             (1.0, 0.0, 0.0)
+                             },
+                         new triple[] {  // blue
+                           (0.0, 1.0, 1.0) ,
+                             (1.0, 1.0, 1.0)
+                             }
+                         );
 
 
 seg_data coolwarm = seg_data(
-  new triple[] {  // red
-     (0.0, 0.2298057, 0.2298057) ,
-     (0.03125, 0.26623388, 0.26623388) ,
-     (0.0625, 0.30386891, 0.30386891) ,
-     (0.09375, 0.342804478, 0.342804478) ,
-     (0.125, 0.38301334, 0.38301334) ,
-     (0.15625, 0.424369608, 0.424369608) ,
-     (0.1875, 0.46666708, 0.46666708) ,
-     (0.21875, 0.509635204, 0.509635204) ,
-     (0.25, 0.552953156, 0.552953156) ,
-     (0.28125, 0.596262162, 0.596262162) ,
-     (0.3125, 0.639176211, 0.639176211) ,
-     (0.34375, 0.681291281, 0.681291281) ,
-     (0.375, 0.722193294, 0.722193294) ,
-     (0.40625, 0.761464949, 0.761464949) ,
-     (0.4375, 0.798691636, 0.798691636) ,
-     (0.46875, 0.833466556, 0.833466556) ,
-     (0.5, 0.865395197, 0.865395197) ,
-     (0.53125, 0.897787179, 0.897787179) ,
-     (0.5625, 0.924127593, 0.924127593) ,
-     (0.59375, 0.944468518, 0.944468518) ,
-     (0.625, 0.958852946, 0.958852946) ,
-     (0.65625, 0.96732803, 0.96732803) ,
-     (0.6875, 0.969954137, 0.969954137) ,
-     (0.71875, 0.966811177, 0.966811177) ,
-     (0.75, 0.958003065, 0.958003065) ,
-     (0.78125, 0.943660866, 0.943660866) ,
-     (0.8125, 0.923944917, 0.923944917) ,
-     (0.84375, 0.89904617, 0.89904617) ,
-     (0.875, 0.869186849, 0.869186849) ,
-     (0.90625, 0.834620542, 0.834620542) ,
-     (0.9375, 0.795631745, 0.795631745) ,
-     (0.96875, 0.752534934, 0.752534934) ,
-     (1.0, 0.705673158, 0.705673158)
-  },
-  new triple[] {  // green
-     (0.0, 0.298717966, 0.298717966) ,
-     (0.03125, 0.353094838, 0.353094838) ,
-     (0.0625, 0.406535296, 0.406535296) ,
-     (0.09375, 0.458757618, 0.458757618) ,
-     (0.125, 0.50941904, 0.50941904) ,
-     (0.15625, 0.558148092, 0.558148092) ,
-     (0.1875, 0.604562568, 0.604562568) ,
-     (0.21875, 0.648280772, 0.648280772) ,
-     (0.25, 0.688929332, 0.688929332) ,
-     (0.28125, 0.726149107, 0.726149107) ,
-     (0.3125, 0.759599947, 0.759599947) ,
-     (0.34375, 0.788964712, 0.788964712) ,
-     (0.375, 0.813952739, 0.813952739) ,
-     (0.40625, 0.834302879, 0.834302879) ,
-     (0.4375, 0.849786142, 0.849786142) ,
-     (0.46875, 0.860207984, 0.860207984) ,
-     (0.5, 0.86541021, 0.86541021) ,
-     (0.53125, 0.848937047, 0.848937047) ,
-     (0.5625, 0.827384882, 0.827384882) ,
-     (0.59375, 0.800927443, 0.800927443) ,
-     (0.625, 0.769767752, 0.769767752) ,
-     (0.65625, 0.734132809, 0.734132809) ,
-     (0.6875, 0.694266682, 0.694266682) ,
-     (0.71875, 0.650421156, 0.650421156) ,
-     (0.75, 0.602842431, 0.602842431) ,
-     (0.78125, 0.551750968, 0.551750968) ,
-     (0.8125, 0.49730856, 0.49730856) ,
-     (0.84375, 0.439559467, 0.439559467) ,
-     (0.875, 0.378313092, 0.378313092) ,
-     (0.90625, 0.312874446, 0.312874446) ,
-     (0.9375, 0.24128379, 0.24128379) ,
-     (0.96875, 0.157246067, 0.157246067) ,
-     (1.0, 0.01555616, 0.01555616)
-  },
-  new triple[] {  // blue
-     (0.0, 0.753683153, 0.753683153) ,
-     (0.03125, 0.801466763, 0.801466763) ,
-     (0.0625, 0.84495867, 0.84495867) ,
-     (0.09375, 0.883725899, 0.883725899) ,
-     (0.125, 0.917387822, 0.917387822) ,
-     (0.15625, 0.945619588, 0.945619588) ,
-     (0.1875, 0.968154911, 0.968154911) ,
-     (0.21875, 0.98478814, 0.98478814) ,
-     (0.25, 0.995375608, 0.995375608) ,
-     (0.28125, 0.999836203, 0.999836203) ,
-     (0.3125, 0.998151185, 0.998151185) ,
-     (0.34375, 0.990363227, 0.990363227) ,
-     (0.375, 0.976574709, 0.976574709) ,
-     (0.40625, 0.956945269, 0.956945269) ,
-     (0.4375, 0.931688648, 0.931688648) ,
-     (0.46875, 0.901068838, 0.901068838) ,
-     (0.5, 0.865395561, 0.865395561) ,
-     (0.53125, 0.820880546, 0.820880546) ,
-     (0.5625, 0.774508472, 0.774508472) ,
-     (0.59375, 0.726736146, 0.726736146) ,
-     (0.625, 0.678007945, 0.678007945) ,
-     (0.65625, 0.628751763, 0.628751763) ,
-     (0.6875, 0.579375448, 0.579375448) ,
-     (0.71875, 0.530263762, 0.530263762) ,
-     (0.75, 0.481775914, 0.481775914) ,
-     (0.78125, 0.434243684, 0.434243684) ,
-     (0.8125, 0.387970225, 0.387970225) ,
-     (0.84375, 0.343229596, 0.343229596) ,
-     (0.875, 0.300267182, 0.300267182) ,
-     (0.90625, 0.259301199, 0.259301199) ,
-     (0.9375, 0.220525627, 0.220525627) ,
-     (0.96875, 0.184115123, 0.184115123) ,
-     (1.0, 0.150232812, 0.150232812)
-  }
-);
+                             new triple[] {  // red
+                               (0.0, 0.2298057, 0.2298057) ,
+                                 (0.03125, 0.26623388, 0.26623388) ,
+                                 (0.0625, 0.30386891, 0.30386891) ,
+                                 (0.09375, 0.342804478, 0.342804478) ,
+                                 (0.125, 0.38301334, 0.38301334) ,
+                                 (0.15625, 0.424369608, 0.424369608) ,
+                                 (0.1875, 0.46666708, 0.46666708) ,
+                                 (0.21875, 0.509635204, 0.509635204) ,
+                                 (0.25, 0.552953156, 0.552953156) ,
+                                 (0.28125, 0.596262162, 0.596262162) ,
+                                 (0.3125, 0.639176211, 0.639176211) ,
+                                 (0.34375, 0.681291281, 0.681291281) ,
+                                 (0.375, 0.722193294, 0.722193294) ,
+                                 (0.40625, 0.761464949, 0.761464949) ,
+                                 (0.4375, 0.798691636, 0.798691636) ,
+                                 (0.46875, 0.833466556, 0.833466556) ,
+                                 (0.5, 0.865395197, 0.865395197) ,
+                                 (0.53125, 0.897787179, 0.897787179) ,
+                                 (0.5625, 0.924127593, 0.924127593) ,
+                                 (0.59375, 0.944468518, 0.944468518) ,
+                                 (0.625, 0.958852946, 0.958852946) ,
+                                 (0.65625, 0.96732803, 0.96732803) ,
+                                 (0.6875, 0.969954137, 0.969954137) ,
+                                 (0.71875, 0.966811177, 0.966811177) ,
+                                 (0.75, 0.958003065, 0.958003065) ,
+                                 (0.78125, 0.943660866, 0.943660866) ,
+                                 (0.8125, 0.923944917, 0.923944917) ,
+                                 (0.84375, 0.89904617, 0.89904617) ,
+                                 (0.875, 0.869186849, 0.869186849) ,
+                                 (0.90625, 0.834620542, 0.834620542) ,
+                                 (0.9375, 0.795631745, 0.795631745) ,
+                                 (0.96875, 0.752534934, 0.752534934) ,
+                                 (1.0, 0.705673158, 0.705673158)
+                                 },
+                             new triple[] {  // green
+                               (0.0, 0.298717966, 0.298717966) ,
+                                 (0.03125, 0.353094838, 0.353094838) ,
+                                 (0.0625, 0.406535296, 0.406535296) ,
+                                 (0.09375, 0.458757618, 0.458757618) ,
+                                 (0.125, 0.50941904, 0.50941904) ,
+                                 (0.15625, 0.558148092, 0.558148092) ,
+                                 (0.1875, 0.604562568, 0.604562568) ,
+                                 (0.21875, 0.648280772, 0.648280772) ,
+                                 (0.25, 0.688929332, 0.688929332) ,
+                                 (0.28125, 0.726149107, 0.726149107) ,
+                                 (0.3125, 0.759599947, 0.759599947) ,
+                                 (0.34375, 0.788964712, 0.788964712) ,
+                                 (0.375, 0.813952739, 0.813952739) ,
+                                 (0.40625, 0.834302879, 0.834302879) ,
+                                 (0.4375, 0.849786142, 0.849786142) ,
+                                 (0.46875, 0.860207984, 0.860207984) ,
+                                 (0.5, 0.86541021, 0.86541021) ,
+                                 (0.53125, 0.848937047, 0.848937047) ,
+                                 (0.5625, 0.827384882, 0.827384882) ,
+                                 (0.59375, 0.800927443, 0.800927443) ,
+                                 (0.625, 0.769767752, 0.769767752) ,
+                                 (0.65625, 0.734132809, 0.734132809) ,
+                                 (0.6875, 0.694266682, 0.694266682) ,
+                                 (0.71875, 0.650421156, 0.650421156) ,
+                                 (0.75, 0.602842431, 0.602842431) ,
+                                 (0.78125, 0.551750968, 0.551750968) ,
+                                 (0.8125, 0.49730856, 0.49730856) ,
+                                 (0.84375, 0.439559467, 0.439559467) ,
+                                 (0.875, 0.378313092, 0.378313092) ,
+                                 (0.90625, 0.312874446, 0.312874446) ,
+                                 (0.9375, 0.24128379, 0.24128379) ,
+                                 (0.96875, 0.157246067, 0.157246067) ,
+                                 (1.0, 0.01555616, 0.01555616)
+                                 },
+                             new triple[] {  // blue
+                               (0.0, 0.753683153, 0.753683153) ,
+                                 (0.03125, 0.801466763, 0.801466763) ,
+                                 (0.0625, 0.84495867, 0.84495867) ,
+                                 (0.09375, 0.883725899, 0.883725899) ,
+                                 (0.125, 0.917387822, 0.917387822) ,
+                                 (0.15625, 0.945619588, 0.945619588) ,
+                                 (0.1875, 0.968154911, 0.968154911) ,
+                                 (0.21875, 0.98478814, 0.98478814) ,
+                                 (0.25, 0.995375608, 0.995375608) ,
+                                 (0.28125, 0.999836203, 0.999836203) ,
+                                 (0.3125, 0.998151185, 0.998151185) ,
+                                 (0.34375, 0.990363227, 0.990363227) ,
+                                 (0.375, 0.976574709, 0.976574709) ,
+                                 (0.40625, 0.956945269, 0.956945269) ,
+                                 (0.4375, 0.931688648, 0.931688648) ,
+                                 (0.46875, 0.901068838, 0.901068838) ,
+                                 (0.5, 0.865395561, 0.865395561) ,
+                                 (0.53125, 0.820880546, 0.820880546) ,
+                                 (0.5625, 0.774508472, 0.774508472) ,
+                                 (0.59375, 0.726736146, 0.726736146) ,
+                                 (0.625, 0.678007945, 0.678007945) ,
+                                 (0.65625, 0.628751763, 0.628751763) ,
+                                 (0.6875, 0.579375448, 0.579375448) ,
+                                 (0.71875, 0.530263762, 0.530263762) ,
+                                 (0.75, 0.481775914, 0.481775914) ,
+                                 (0.78125, 0.434243684, 0.434243684) ,
+                                 (0.8125, 0.387970225, 0.387970225) ,
+                                 (0.84375, 0.343229596, 0.343229596) ,
+                                 (0.875, 0.300267182, 0.300267182) ,
+                                 (0.90625, 0.259301199, 0.259301199) ,
+                                 (0.9375, 0.220525627, 0.220525627) ,
+                                 (0.96875, 0.184115123, 0.184115123) ,
+                                 (1.0, 0.150232812, 0.150232812)
+                                 }
+                             );
 
 
 seg_data copper = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.809524, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (1.0, 0.7812, 0.7812)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (1.0, 0.4975, 0.4975)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 0.0, 0.0) ,
+                               (0.809524, 1.0, 1.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 0.7812, 0.7812)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 0.4975, 0.4975)
+                               }
+                           );
 
 
 seg_data gist_earth = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.2824, 0.1882, 0.1882) ,
-     (0.4588, 0.2714, 0.2714) ,
-     (0.549, 0.4719, 0.4719) ,
-     (0.698, 0.7176, 0.7176) ,
-     (0.7882, 0.7553, 0.7553) ,
-     (1.0, 0.9922, 0.9922)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.0275, 0.0, 0.0) ,
-     (0.1098, 0.1893, 0.1893) ,
-     (0.1647, 0.3035, 0.3035) ,
-     (0.2078, 0.3841, 0.3841) ,
-     (0.2824, 0.502, 0.502) ,
-     (0.5216, 0.6397, 0.6397) ,
-     (0.698, 0.7171, 0.7171) ,
-     (0.7882, 0.6392, 0.6392) ,
-     (0.7922, 0.6413, 0.6413) ,
-     (0.8, 0.6447, 0.6447) ,
-     (0.8078, 0.6481, 0.6481) ,
-     (0.8157, 0.6549, 0.6549) ,
-     (0.8667, 0.6991, 0.6991) ,
-     (0.8745, 0.7103, 0.7103) ,
-     (0.8824, 0.7216, 0.7216) ,
-     (0.8902, 0.7323, 0.7323) ,
-     (0.898, 0.743, 0.743) ,
-     (0.9412, 0.8275, 0.8275) ,
-     (0.9569, 0.8635, 0.8635) ,
-     (0.9647, 0.8816, 0.8816) ,
-     (0.9961, 0.9733, 0.9733) ,
-     (1.0, 0.9843, 0.9843)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.0039, 0.1684, 0.1684) ,
-     (0.0078, 0.2212, 0.2212) ,
-     (0.0275, 0.4329, 0.4329) ,
-     (0.0314, 0.4549, 0.4549) ,
-     (0.2824, 0.5004, 0.5004) ,
-     (0.4667, 0.2748, 0.2748) ,
-     (0.5451, 0.3205, 0.3205) ,
-     (0.7843, 0.3961, 0.3961) ,
-     (0.8941, 0.6651, 0.6651) ,
-     (1.0, 0.9843, 0.9843)
-  }
-);
+                               new triple[] {  // red
+                                 (0.0, 0.0, 0.0) ,
+                                   (0.2824, 0.1882, 0.1882) ,
+                                   (0.4588, 0.2714, 0.2714) ,
+                                   (0.549, 0.4719, 0.4719) ,
+                                   (0.698, 0.7176, 0.7176) ,
+                                   (0.7882, 0.7553, 0.7553) ,
+                                   (1.0, 0.9922, 0.9922)
+                                   },
+                               new triple[] {  // green
+                                 (0.0, 0.0, 0.0) ,
+                                   (0.0275, 0.0, 0.0) ,
+                                   (0.1098, 0.1893, 0.1893) ,
+                                   (0.1647, 0.3035, 0.3035) ,
+                                   (0.2078, 0.3841, 0.3841) ,
+                                   (0.2824, 0.502, 0.502) ,
+                                   (0.5216, 0.6397, 0.6397) ,
+                                   (0.698, 0.7171, 0.7171) ,
+                                   (0.7882, 0.6392, 0.6392) ,
+                                   (0.7922, 0.6413, 0.6413) ,
+                                   (0.8, 0.6447, 0.6447) ,
+                                   (0.8078, 0.6481, 0.6481) ,
+                                   (0.8157, 0.6549, 0.6549) ,
+                                   (0.8667, 0.6991, 0.6991) ,
+                                   (0.8745, 0.7103, 0.7103) ,
+                                   (0.8824, 0.7216, 0.7216) ,
+                                   (0.8902, 0.7323, 0.7323) ,
+                                   (0.898, 0.743, 0.743) ,
+                                   (0.9412, 0.8275, 0.8275) ,
+                                   (0.9569, 0.8635, 0.8635) ,
+                                   (0.9647, 0.8816, 0.8816) ,
+                                   (0.9961, 0.9733, 0.9733) ,
+                                   (1.0, 0.9843, 0.9843)
+                                   },
+                               new triple[] {  // blue
+                                 (0.0, 0.0, 0.0) ,
+                                   (0.0039, 0.1684, 0.1684) ,
+                                   (0.0078, 0.2212, 0.2212) ,
+                                   (0.0275, 0.4329, 0.4329) ,
+                                   (0.0314, 0.4549, 0.4549) ,
+                                   (0.2824, 0.5004, 0.5004) ,
+                                   (0.4667, 0.2748, 0.2748) ,
+                                   (0.5451, 0.3205, 0.3205) ,
+                                   (0.7843, 0.3961, 0.3961) ,
+                                   (0.8941, 0.6651, 0.6651) ,
+                                   (1.0, 0.9843, 0.9843)
+                                   }
+                               );
 
 
 seg_data gist_ncar = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.3098, 0.0, 0.0) ,
-     (0.3725, 0.3993, 0.3993) ,
-     (0.4235, 0.5003, 0.5003) ,
-     (0.5333, 1.0, 1.0) ,
-     (0.7922, 1.0, 1.0) ,
-     (0.8471, 0.6218, 0.6218) ,
-     (0.898, 0.9235, 0.9235) ,
-     (1.0, 0.9961, 0.9961)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.051, 0.3722, 0.3722) ,
-     (0.1059, 0.0, 0.0) ,
-     (0.1569, 0.7202, 0.7202) ,
-     (0.1608, 0.7537, 0.7537) ,
-     (0.1647, 0.7752, 0.7752) ,
-     (0.2157, 1.0, 1.0) ,
-     (0.2588, 0.9804, 0.9804) ,
-     (0.2706, 0.9804, 0.9804) ,
-     (0.3176, 1.0, 1.0) ,
-     (0.3686, 0.8081, 0.8081) ,
-     (0.4275, 1.0, 1.0) ,
-     (0.5216, 1.0, 1.0) ,
-     (0.6314, 0.7292, 0.7292) ,
-     (0.6863, 0.2796, 0.2796) ,
-     (0.7451, 0.0, 0.0) ,
-     (0.7922, 0.0, 0.0) ,
-     (0.8431, 0.1753, 0.1753) ,
-     (0.898, 0.5, 0.5) ,
-     (1.0, 0.9725, 0.9725)
-  },
-  new triple[] {  // blue
-     (0.0, 0.502, 0.502) ,
-     (0.051, 0.0222, 0.0222) ,
-     (0.1098, 1.0, 1.0) ,
-     (0.2039, 1.0, 1.0) ,
-     (0.2627, 0.6145, 0.6145) ,
-     (0.3216, 0.0, 0.0) ,
-     (0.4157, 0.0, 0.0) ,
-     (0.4745, 0.2342, 0.2342) ,
-     (0.5333, 0.0, 0.0) ,
-     (0.5804, 0.0, 0.0) ,
-     (0.6314, 0.0549, 0.0549) ,
-     (0.6902, 0.0, 0.0) ,
-     (0.7373, 0.0, 0.0) ,
-     (0.7922, 0.9738, 0.9738) ,
-     (0.8, 1.0, 1.0) ,
-     (0.8431, 1.0, 1.0) ,
-     (0.898, 0.9341, 0.9341) ,
-     (1.0, 0.9961, 0.9961)
-  }
-);
+                              new triple[] {  // red
+                                (0.0, 0.0, 0.0) ,
+                                  (0.3098, 0.0, 0.0) ,
+                                  (0.3725, 0.3993, 0.3993) ,
+                                  (0.4235, 0.5003, 0.5003) ,
+                                  (0.5333, 1.0, 1.0) ,
+                                  (0.7922, 1.0, 1.0) ,
+                                  (0.8471, 0.6218, 0.6218) ,
+                                  (0.898, 0.9235, 0.9235) ,
+                                  (1.0, 0.9961, 0.9961)
+                                  },
+                              new triple[] {  // green
+                                (0.0, 0.0, 0.0) ,
+                                  (0.051, 0.3722, 0.3722) ,
+                                  (0.1059, 0.0, 0.0) ,
+                                  (0.1569, 0.7202, 0.7202) ,
+                                  (0.1608, 0.7537, 0.7537) ,
+                                  (0.1647, 0.7752, 0.7752) ,
+                                  (0.2157, 1.0, 1.0) ,
+                                  (0.2588, 0.9804, 0.9804) ,
+                                  (0.2706, 0.9804, 0.9804) ,
+                                  (0.3176, 1.0, 1.0) ,
+                                  (0.3686, 0.8081, 0.8081) ,
+                                  (0.4275, 1.0, 1.0) ,
+                                  (0.5216, 1.0, 1.0) ,
+                                  (0.6314, 0.7292, 0.7292) ,
+                                  (0.6863, 0.2796, 0.2796) ,
+                                  (0.7451, 0.0, 0.0) ,
+                                  (0.7922, 0.0, 0.0) ,
+                                  (0.8431, 0.1753, 0.1753) ,
+                                  (0.898, 0.5, 0.5) ,
+                                  (1.0, 0.9725, 0.9725)
+                                  },
+                              new triple[] {  // blue
+                                (0.0, 0.502, 0.502) ,
+                                  (0.051, 0.0222, 0.0222) ,
+                                  (0.1098, 1.0, 1.0) ,
+                                  (0.2039, 1.0, 1.0) ,
+                                  (0.2627, 0.6145, 0.6145) ,
+                                  (0.3216, 0.0, 0.0) ,
+                                  (0.4157, 0.0, 0.0) ,
+                                  (0.4745, 0.2342, 0.2342) ,
+                                  (0.5333, 0.0, 0.0) ,
+                                  (0.5804, 0.0, 0.0) ,
+                                  (0.6314, 0.0549, 0.0549) ,
+                                  (0.6902, 0.0, 0.0) ,
+                                  (0.7373, 0.0, 0.0) ,
+                                  (0.7922, 0.9738, 0.9738) ,
+                                  (0.8, 1.0, 1.0) ,
+                                  (0.8431, 1.0, 1.0) ,
+                                  (0.898, 0.9341, 0.9341) ,
+                                  (1.0, 0.9961, 0.9961)
+                                  }
+                              );
 
 
 seg_data gist_stern = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.0547, 1.0, 1.0) ,
-     (0.25, 0.027, 0.25) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0, 0, 0) ,
-     (1, 1, 1)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.5, 1.0, 1.0) ,
-     (0.735, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                               new triple[] {  // red
+                                 (0.0, 0.0, 0.0) ,
+                                   (0.0547, 1.0, 1.0) ,
+                                   (0.25, 0.027, 0.25) ,
+                                   (1.0, 1.0, 1.0)
+                                   },
+                               new triple[] {  // green
+                                 (0, 0, 0) ,
+                                   (1, 1, 1)
+                                   },
+                               new triple[] {  // blue
+                                 (0.0, 0.0, 0.0) ,
+                                   (0.5, 1.0, 1.0) ,
+                                   (0.735, 0.0, 0.0) ,
+                                   (1.0, 1.0, 1.0)
+                                   }
+                               );
 
 
 seg_data gray = seg_data(
-  new triple[] {  // red
-     (0.0, 0, 0) ,
-     (1.0, 1, 1)
-  },
-  new triple[] {  // green
-     (0.0, 0, 0) ,
-     (1.0, 1, 1)
-  },
-  new triple[] {  // blue
-     (0.0, 0, 0) ,
-     (1.0, 1, 1)
-  }
-);
+                         new triple[] {  // red
+                           (0.0, 0, 0) ,
+                             (1.0, 1, 1)
+                             },
+                         new triple[] {  // green
+                           (0.0, 0, 0) ,
+                             (1.0, 1, 1)
+                             },
+                         new triple[] {  // blue
+                           (0.0, 0, 0) ,
+                             (1.0, 1, 1)
+                             }
+                         );
 
 
 seg_data hot = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0416, 0.0416) ,
-     (0.365079, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.365079, 0.0, 0.0) ,
-     (0.746032, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.746032, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                        new triple[] {  // red
+                          (0.0, 0.0416, 0.0416) ,
+                            (0.365079, 1.0, 1.0) ,
+                            (1.0, 1.0, 1.0)
+                            },
+                        new triple[] {  // green
+                          (0.0, 0.0, 0.0) ,
+                            (0.365079, 0.0, 0.0) ,
+                            (0.746032, 1.0, 1.0) ,
+                            (1.0, 1.0, 1.0)
+                            },
+                        new triple[] {  // blue
+                          (0.0, 0.0, 0.0) ,
+                            (0.746032, 0.0, 0.0) ,
+                            (1.0, 1.0, 1.0)
+                            }
+                        );
 
 
 seg_data hsv = seg_data(
-  new triple[] {  // red
-     (0.0, 1.0, 1.0) ,
-     (0.15873, 1.0, 1.0) ,
-     (0.174603, 0.96875, 0.96875) ,
-     (0.333333, 0.03125, 0.03125) ,
-     (0.349206, 0.0, 0.0) ,
-     (0.666667, 0.0, 0.0) ,
-     (0.68254, 0.03125, 0.03125) ,
-     (0.84127, 0.96875, 0.96875) ,
-     (0.857143, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.15873, 0.9375, 0.9375) ,
-     (0.174603, 1.0, 1.0) ,
-     (0.507937, 1.0, 1.0) ,
-     (0.666667, 0.0625, 0.0625) ,
-     (0.68254, 0.0, 0.0) ,
-     (1.0, 0.0, 0.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.333333, 0.0, 0.0) ,
-     (0.349206, 0.0625, 0.0625) ,
-     (0.507937, 1.0, 1.0) ,
-     (0.84127, 1.0, 1.0) ,
-     (0.857143, 0.9375, 0.9375) ,
-     (1.0, 0.09375, 0.09375)
-  }
-);
+                        new triple[] {  // red
+                          (0.0, 1.0, 1.0) ,
+                            (0.15873, 1.0, 1.0) ,
+                            (0.174603, 0.96875, 0.96875) ,
+                            (0.333333, 0.03125, 0.03125) ,
+                            (0.349206, 0.0, 0.0) ,
+                            (0.666667, 0.0, 0.0) ,
+                            (0.68254, 0.03125, 0.03125) ,
+                            (0.84127, 0.96875, 0.96875) ,
+                            (0.857143, 1.0, 1.0) ,
+                            (1.0, 1.0, 1.0)
+                            },
+                        new triple[] {  // green
+                          (0.0, 0.0, 0.0) ,
+                            (0.15873, 0.9375, 0.9375) ,
+                            (0.174603, 1.0, 1.0) ,
+                            (0.507937, 1.0, 1.0) ,
+                            (0.666667, 0.0625, 0.0625) ,
+                            (0.68254, 0.0, 0.0) ,
+                            (1.0, 0.0, 0.0)
+                            },
+                        new triple[] {  // blue
+                          (0.0, 0.0, 0.0) ,
+                            (0.333333, 0.0, 0.0) ,
+                            (0.349206, 0.0625, 0.0625) ,
+                            (0.507937, 1.0, 1.0) ,
+                            (0.84127, 1.0, 1.0) ,
+                            (0.857143, 0.9375, 0.9375) ,
+                            (1.0, 0.09375, 0.09375)
+                            }
+                        );
 
 
 seg_data jet = seg_data(
-  new triple[] {  // red
-     (0.0, 0, 0) ,
-     (0.35, 0, 0) ,
-     (0.66, 1, 1) ,
-     (0.89, 1, 1) ,
-     (1, 0.5, 0.5)
-  },
-  new triple[] {  // green
-     (0.0, 0, 0) ,
-     (0.125, 0, 0) ,
-     (0.375, 1, 1) ,
-     (0.64, 1, 1) ,
-     (0.91, 0, 0) ,
-     (1, 0, 0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.5, 0.5) ,
-     (0.11, 1, 1) ,
-     (0.34, 1, 1) ,
-     (0.65, 0, 0) ,
-     (1, 0, 0)
-  }
-);
+                        new triple[] {  // red
+                          (0.0, 0, 0) ,
+                            (0.35, 0, 0) ,
+                            (0.66, 1, 1) ,
+                            (0.89, 1, 1) ,
+                            (1, 0.5, 0.5)
+                            },
+                        new triple[] {  // green
+                          (0.0, 0, 0) ,
+                            (0.125, 0, 0) ,
+                            (0.375, 1, 1) ,
+                            (0.64, 1, 1) ,
+                            (0.91, 0, 0) ,
+                            (1, 0, 0)
+                            },
+                        new triple[] {  // blue
+                          (0.0, 0.5, 0.5) ,
+                            (0.11, 1, 1) ,
+                            (0.34, 1, 1) ,
+                            (0.65, 0, 0) ,
+                            (1, 0, 0)
+                            }
+                        );
 
 
 seg_data nipy_spectral = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (0.05, 0.4667, 0.4667) ,
-     (0.1, 0.5333, 0.5333) ,
-     (0.15, 0.0, 0.0) ,
-     (0.2, 0.0, 0.0) ,
-     (0.25, 0.0, 0.0) ,
-     (0.3, 0.0, 0.0) ,
-     (0.35, 0.0, 0.0) ,
-     (0.4, 0.0, 0.0) ,
-     (0.45, 0.0, 0.0) ,
-     (0.5, 0.0, 0.0) ,
-     (0.55, 0.0, 0.0) ,
-     (0.6, 0.0, 0.0) ,
-     (0.65, 0.7333, 0.7333) ,
-     (0.7, 0.9333, 0.9333) ,
-     (0.75, 1.0, 1.0) ,
-     (0.8, 1.0, 1.0) ,
-     (0.85, 1.0, 1.0) ,
-     (0.9, 0.8667, 0.8667) ,
-     (0.95, 0.8, 0.8) ,
-     (1.0, 0.8, 0.8)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.05, 0.0, 0.0) ,
-     (0.1, 0.0, 0.0) ,
-     (0.15, 0.0, 0.0) ,
-     (0.2, 0.0, 0.0) ,
-     (0.25, 0.4667, 0.4667) ,
-     (0.3, 0.6, 0.6) ,
-     (0.35, 0.6667, 0.6667) ,
-     (0.4, 0.6667, 0.6667) ,
-     (0.45, 0.6, 0.6) ,
-     (0.5, 0.7333, 0.7333) ,
-     (0.55, 0.8667, 0.8667) ,
-     (0.6, 1.0, 1.0) ,
-     (0.65, 1.0, 1.0) ,
-     (0.7, 0.9333, 0.9333) ,
-     (0.75, 0.8, 0.8) ,
-     (0.8, 0.6, 0.6) ,
-     (0.85, 0.0, 0.0) ,
-     (0.9, 0.0, 0.0) ,
-     (0.95, 0.0, 0.0) ,
-     (1.0, 0.8, 0.8)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.05, 0.5333, 0.5333) ,
-     (0.1, 0.6, 0.6) ,
-     (0.15, 0.6667, 0.6667) ,
-     (0.2, 0.8667, 0.8667) ,
-     (0.25, 0.8667, 0.8667) ,
-     (0.3, 0.8667, 0.8667) ,
-     (0.35, 0.6667, 0.6667) ,
-     (0.4, 0.5333, 0.5333) ,
-     (0.45, 0.0, 0.0) ,
-     (0.5, 0.0, 0.0) ,
-     (0.55, 0.0, 0.0) ,
-     (0.6, 0.0, 0.0) ,
-     (0.65, 0.0, 0.0) ,
-     (0.7, 0.0, 0.0) ,
-     (0.75, 0.0, 0.0) ,
-     (0.8, 0.0, 0.0) ,
-     (0.85, 0.0, 0.0) ,
-     (0.9, 0.0, 0.0) ,
-     (0.95, 0.0, 0.0) ,
-     (1.0, 0.8, 0.8)
-  }
-);
+                                  new triple[] {  // red
+                                    (0.0, 0.0, 0.0) ,
+                                      (0.05, 0.4667, 0.4667) ,
+                                      (0.1, 0.5333, 0.5333) ,
+                                      (0.15, 0.0, 0.0) ,
+                                      (0.2, 0.0, 0.0) ,
+                                      (0.25, 0.0, 0.0) ,
+                                      (0.3, 0.0, 0.0) ,
+                                      (0.35, 0.0, 0.0) ,
+                                      (0.4, 0.0, 0.0) ,
+                                      (0.45, 0.0, 0.0) ,
+                                      (0.5, 0.0, 0.0) ,
+                                      (0.55, 0.0, 0.0) ,
+                                      (0.6, 0.0, 0.0) ,
+                                      (0.65, 0.7333, 0.7333) ,
+                                      (0.7, 0.9333, 0.9333) ,
+                                      (0.75, 1.0, 1.0) ,
+                                      (0.8, 1.0, 1.0) ,
+                                      (0.85, 1.0, 1.0) ,
+                                      (0.9, 0.8667, 0.8667) ,
+                                      (0.95, 0.8, 0.8) ,
+                                      (1.0, 0.8, 0.8)
+                                      },
+                                  new triple[] {  // green
+                                    (0.0, 0.0, 0.0) ,
+                                      (0.05, 0.0, 0.0) ,
+                                      (0.1, 0.0, 0.0) ,
+                                      (0.15, 0.0, 0.0) ,
+                                      (0.2, 0.0, 0.0) ,
+                                      (0.25, 0.4667, 0.4667) ,
+                                      (0.3, 0.6, 0.6) ,
+                                      (0.35, 0.6667, 0.6667) ,
+                                      (0.4, 0.6667, 0.6667) ,
+                                      (0.45, 0.6, 0.6) ,
+                                      (0.5, 0.7333, 0.7333) ,
+                                      (0.55, 0.8667, 0.8667) ,
+                                      (0.6, 1.0, 1.0) ,
+                                      (0.65, 1.0, 1.0) ,
+                                      (0.7, 0.9333, 0.9333) ,
+                                      (0.75, 0.8, 0.8) ,
+                                      (0.8, 0.6, 0.6) ,
+                                      (0.85, 0.0, 0.0) ,
+                                      (0.9, 0.0, 0.0) ,
+                                      (0.95, 0.0, 0.0) ,
+                                      (1.0, 0.8, 0.8)
+                                      },
+                                  new triple[] {  // blue
+                                    (0.0, 0.0, 0.0) ,
+                                      (0.05, 0.5333, 0.5333) ,
+                                      (0.1, 0.6, 0.6) ,
+                                      (0.15, 0.6667, 0.6667) ,
+                                      (0.2, 0.8667, 0.8667) ,
+                                      (0.25, 0.8667, 0.8667) ,
+                                      (0.3, 0.8667, 0.8667) ,
+                                      (0.35, 0.6667, 0.6667) ,
+                                      (0.4, 0.5333, 0.5333) ,
+                                      (0.45, 0.0, 0.0) ,
+                                      (0.5, 0.0, 0.0) ,
+                                      (0.55, 0.0, 0.0) ,
+                                      (0.6, 0.0, 0.0) ,
+                                      (0.65, 0.0, 0.0) ,
+                                      (0.7, 0.0, 0.0) ,
+                                      (0.75, 0.0, 0.0) ,
+                                      (0.8, 0.0, 0.0) ,
+                                      (0.85, 0.0, 0.0) ,
+                                      (0.9, 0.0, 0.0) ,
+                                      (0.95, 0.0, 0.0) ,
+                                      (1.0, 0.8, 0.8)
+                                      }
+                                  );
 
 
 seg_data pink = seg_data(
-  new triple[] {  // red
-     (0.0, 0.1178, 0.1178) ,
-     (0.015873, 0.195857, 0.195857) ,
-     (0.031746, 0.250661, 0.250661) ,
-     (0.047619, 0.295468, 0.295468) ,
-     (0.063492, 0.334324, 0.334324) ,
-     (0.079365, 0.369112, 0.369112) ,
-     (0.095238, 0.400892, 0.400892) ,
-     (0.111111, 0.430331, 0.430331) ,
-     (0.126984, 0.457882, 0.457882) ,
-     (0.142857, 0.483867, 0.483867) ,
-     (0.15873, 0.508525, 0.508525) ,
-     (0.174603, 0.532042, 0.532042) ,
-     (0.190476, 0.554563, 0.554563) ,
-     (0.206349, 0.576204, 0.576204) ,
-     (0.222222, 0.597061, 0.597061) ,
-     (0.238095, 0.617213, 0.617213) ,
-     (0.253968, 0.636729, 0.636729) ,
-     (0.269841, 0.655663, 0.655663) ,
-     (0.285714, 0.674066, 0.674066) ,
-     (0.301587, 0.69198, 0.69198) ,
-     (0.31746, 0.709441, 0.709441) ,
-     (0.333333, 0.726483, 0.726483) ,
-     (0.349206, 0.743134, 0.743134) ,
-     (0.365079, 0.759421, 0.759421) ,
-     (0.380952, 0.766356, 0.766356) ,
-     (0.396825, 0.773229, 0.773229) ,
-     (0.412698, 0.780042, 0.780042) ,
-     (0.428571, 0.786796, 0.786796) ,
-     (0.444444, 0.793492, 0.793492) ,
-     (0.460317, 0.800132, 0.800132) ,
-     (0.47619, 0.806718, 0.806718) ,
-     (0.492063, 0.81325, 0.81325) ,
-     (0.507937, 0.81973, 0.81973) ,
-     (0.52381, 0.82616, 0.82616) ,
-     (0.539683, 0.832539, 0.832539) ,
-     (0.555556, 0.83887, 0.83887) ,
-     (0.571429, 0.845154, 0.845154) ,
-     (0.587302, 0.851392, 0.851392) ,
-     (0.603175, 0.857584, 0.857584) ,
-     (0.619048, 0.863731, 0.863731) ,
-     (0.634921, 0.869835, 0.869835) ,
-     (0.650794, 0.875897, 0.875897) ,
-     (0.666667, 0.881917, 0.881917) ,
-     (0.68254, 0.887896, 0.887896) ,
-     (0.698413, 0.893835, 0.893835) ,
-     (0.714286, 0.899735, 0.899735) ,
-     (0.730159, 0.905597, 0.905597) ,
-     (0.746032, 0.911421, 0.911421) ,
-     (0.761905, 0.917208, 0.917208) ,
-     (0.777778, 0.922958, 0.922958) ,
-     (0.793651, 0.928673, 0.928673) ,
-     (0.809524, 0.934353, 0.934353) ,
-     (0.825397, 0.939999, 0.939999) ,
-     (0.84127, 0.945611, 0.945611) ,
-     (0.857143, 0.95119, 0.95119) ,
-     (0.873016, 0.956736, 0.956736) ,
-     (0.888889, 0.96225, 0.96225) ,
-     (0.904762, 0.967733, 0.967733) ,
-     (0.920635, 0.973185, 0.973185) ,
-     (0.936508, 0.978607, 0.978607) ,
-     (0.952381, 0.983999, 0.983999) ,
-     (0.968254, 0.989361, 0.989361) ,
-     (0.984127, 0.994695, 0.994695) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (0.015873, 0.102869, 0.102869) ,
-     (0.031746, 0.145479, 0.145479) ,
-     (0.047619, 0.178174, 0.178174) ,
-     (0.063492, 0.205738, 0.205738) ,
-     (0.079365, 0.230022, 0.230022) ,
-     (0.095238, 0.251976, 0.251976) ,
-     (0.111111, 0.272166, 0.272166) ,
-     (0.126984, 0.290957, 0.290957) ,
-     (0.142857, 0.308607, 0.308607) ,
-     (0.15873, 0.3253, 0.3253) ,
-     (0.174603, 0.341178, 0.341178) ,
-     (0.190476, 0.356348, 0.356348) ,
-     (0.206349, 0.370899, 0.370899) ,
-     (0.222222, 0.3849, 0.3849) ,
-     (0.238095, 0.39841, 0.39841) ,
-     (0.253968, 0.411476, 0.411476) ,
-     (0.269841, 0.424139, 0.424139) ,
-     (0.285714, 0.436436, 0.436436) ,
-     (0.301587, 0.448395, 0.448395) ,
-     (0.31746, 0.460044, 0.460044) ,
-     (0.333333, 0.471405, 0.471405) ,
-     (0.349206, 0.482498, 0.482498) ,
-     (0.365079, 0.493342, 0.493342) ,
-     (0.380952, 0.517549, 0.517549) ,
-     (0.396825, 0.540674, 0.540674) ,
-     (0.412698, 0.562849, 0.562849) ,
-     (0.428571, 0.584183, 0.584183) ,
-     (0.444444, 0.604765, 0.604765) ,
-     (0.460317, 0.624669, 0.624669) ,
-     (0.47619, 0.643958, 0.643958) ,
-     (0.492063, 0.662687, 0.662687) ,
-     (0.507937, 0.6809, 0.6809) ,
-     (0.52381, 0.698638, 0.698638) ,
-     (0.539683, 0.715937, 0.715937) ,
-     (0.555556, 0.732828, 0.732828) ,
-     (0.571429, 0.749338, 0.749338) ,
-     (0.587302, 0.765493, 0.765493) ,
-     (0.603175, 0.781313, 0.781313) ,
-     (0.619048, 0.796819, 0.796819) ,
-     (0.634921, 0.812029, 0.812029) ,
-     (0.650794, 0.82696, 0.82696) ,
-     (0.666667, 0.841625, 0.841625) ,
-     (0.68254, 0.85604, 0.85604) ,
-     (0.698413, 0.870216, 0.870216) ,
-     (0.714286, 0.884164, 0.884164) ,
-     (0.730159, 0.897896, 0.897896) ,
-     (0.746032, 0.911421, 0.911421) ,
-     (0.761905, 0.917208, 0.917208) ,
-     (0.777778, 0.922958, 0.922958) ,
-     (0.793651, 0.928673, 0.928673) ,
-     (0.809524, 0.934353, 0.934353) ,
-     (0.825397, 0.939999, 0.939999) ,
-     (0.84127, 0.945611, 0.945611) ,
-     (0.857143, 0.95119, 0.95119) ,
-     (0.873016, 0.956736, 0.956736) ,
-     (0.888889, 0.96225, 0.96225) ,
-     (0.904762, 0.967733, 0.967733) ,
-     (0.920635, 0.973185, 0.973185) ,
-     (0.936508, 0.978607, 0.978607) ,
-     (0.952381, 0.983999, 0.983999) ,
-     (0.968254, 0.989361, 0.989361) ,
-     (0.984127, 0.994695, 0.994695) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.0, 0.0) ,
-     (0.015873, 0.102869, 0.102869) ,
-     (0.031746, 0.145479, 0.145479) ,
-     (0.047619, 0.178174, 0.178174) ,
-     (0.063492, 0.205738, 0.205738) ,
-     (0.079365, 0.230022, 0.230022) ,
-     (0.095238, 0.251976, 0.251976) ,
-     (0.111111, 0.272166, 0.272166) ,
-     (0.126984, 0.290957, 0.290957) ,
-     (0.142857, 0.308607, 0.308607) ,
-     (0.15873, 0.3253, 0.3253) ,
-     (0.174603, 0.341178, 0.341178) ,
-     (0.190476, 0.356348, 0.356348) ,
-     (0.206349, 0.370899, 0.370899) ,
-     (0.222222, 0.3849, 0.3849) ,
-     (0.238095, 0.39841, 0.39841) ,
-     (0.253968, 0.411476, 0.411476) ,
-     (0.269841, 0.424139, 0.424139) ,
-     (0.285714, 0.436436, 0.436436) ,
-     (0.301587, 0.448395, 0.448395) ,
-     (0.31746, 0.460044, 0.460044) ,
-     (0.333333, 0.471405, 0.471405) ,
-     (0.349206, 0.482498, 0.482498) ,
-     (0.365079, 0.493342, 0.493342) ,
-     (0.380952, 0.503953, 0.503953) ,
-     (0.396825, 0.514344, 0.514344) ,
-     (0.412698, 0.524531, 0.524531) ,
-     (0.428571, 0.534522, 0.534522) ,
-     (0.444444, 0.544331, 0.544331) ,
-     (0.460317, 0.553966, 0.553966) ,
-     (0.47619, 0.563436, 0.563436) ,
-     (0.492063, 0.57275, 0.57275) ,
-     (0.507937, 0.581914, 0.581914) ,
-     (0.52381, 0.590937, 0.590937) ,
-     (0.539683, 0.599824, 0.599824) ,
-     (0.555556, 0.608581, 0.608581) ,
-     (0.571429, 0.617213, 0.617213) ,
-     (0.587302, 0.625727, 0.625727) ,
-     (0.603175, 0.634126, 0.634126) ,
-     (0.619048, 0.642416, 0.642416) ,
-     (0.634921, 0.6506, 0.6506) ,
-     (0.650794, 0.658682, 0.658682) ,
-     (0.666667, 0.666667, 0.666667) ,
-     (0.68254, 0.674556, 0.674556) ,
-     (0.698413, 0.682355, 0.682355) ,
-     (0.714286, 0.690066, 0.690066) ,
-     (0.730159, 0.697691, 0.697691) ,
-     (0.746032, 0.705234, 0.705234) ,
-     (0.761905, 0.727166, 0.727166) ,
-     (0.777778, 0.748455, 0.748455) ,
-     (0.793651, 0.769156, 0.769156) ,
-     (0.809524, 0.789314, 0.789314) ,
-     (0.825397, 0.808969, 0.808969) ,
-     (0.84127, 0.828159, 0.828159) ,
-     (0.857143, 0.846913, 0.846913) ,
-     (0.873016, 0.865261, 0.865261) ,
-     (0.888889, 0.883229, 0.883229) ,
-     (0.904762, 0.900837, 0.900837) ,
-     (0.920635, 0.918109, 0.918109) ,
-     (0.936508, 0.935061, 0.935061) ,
-     (0.952381, 0.951711, 0.951711) ,
-     (0.968254, 0.968075, 0.968075) ,
-     (0.984127, 0.984167, 0.984167) ,
-     (1.0, 1.0, 1.0)
-  }
-);
+                         new triple[] {  // red
+                           (0.0, 0.1178, 0.1178) ,
+                             (0.015873, 0.195857, 0.195857) ,
+                             (0.031746, 0.250661, 0.250661) ,
+                             (0.047619, 0.295468, 0.295468) ,
+                             (0.063492, 0.334324, 0.334324) ,
+                             (0.079365, 0.369112, 0.369112) ,
+                             (0.095238, 0.400892, 0.400892) ,
+                             (0.111111, 0.430331, 0.430331) ,
+                             (0.126984, 0.457882, 0.457882) ,
+                             (0.142857, 0.483867, 0.483867) ,
+                             (0.15873, 0.508525, 0.508525) ,
+                             (0.174603, 0.532042, 0.532042) ,
+                             (0.190476, 0.554563, 0.554563) ,
+                             (0.206349, 0.576204, 0.576204) ,
+                             (0.222222, 0.597061, 0.597061) ,
+                             (0.238095, 0.617213, 0.617213) ,
+                             (0.253968, 0.636729, 0.636729) ,
+                             (0.269841, 0.655663, 0.655663) ,
+                             (0.285714, 0.674066, 0.674066) ,
+                             (0.301587, 0.69198, 0.69198) ,
+                             (0.31746, 0.709441, 0.709441) ,
+                             (0.333333, 0.726483, 0.726483) ,
+                             (0.349206, 0.743134, 0.743134) ,
+                             (0.365079, 0.759421, 0.759421) ,
+                             (0.380952, 0.766356, 0.766356) ,
+                             (0.396825, 0.773229, 0.773229) ,
+                             (0.412698, 0.780042, 0.780042) ,
+                             (0.428571, 0.786796, 0.786796) ,
+                             (0.444444, 0.793492, 0.793492) ,
+                             (0.460317, 0.800132, 0.800132) ,
+                             (0.47619, 0.806718, 0.806718) ,
+                             (0.492063, 0.81325, 0.81325) ,
+                             (0.507937, 0.81973, 0.81973) ,
+                             (0.52381, 0.82616, 0.82616) ,
+                             (0.539683, 0.832539, 0.832539) ,
+                             (0.555556, 0.83887, 0.83887) ,
+                             (0.571429, 0.845154, 0.845154) ,
+                             (0.587302, 0.851392, 0.851392) ,
+                             (0.603175, 0.857584, 0.857584) ,
+                             (0.619048, 0.863731, 0.863731) ,
+                             (0.634921, 0.869835, 0.869835) ,
+                             (0.650794, 0.875897, 0.875897) ,
+                             (0.666667, 0.881917, 0.881917) ,
+                             (0.68254, 0.887896, 0.887896) ,
+                             (0.698413, 0.893835, 0.893835) ,
+                             (0.714286, 0.899735, 0.899735) ,
+                             (0.730159, 0.905597, 0.905597) ,
+                             (0.746032, 0.911421, 0.911421) ,
+                             (0.761905, 0.917208, 0.917208) ,
+                             (0.777778, 0.922958, 0.922958) ,
+                             (0.793651, 0.928673, 0.928673) ,
+                             (0.809524, 0.934353, 0.934353) ,
+                             (0.825397, 0.939999, 0.939999) ,
+                             (0.84127, 0.945611, 0.945611) ,
+                             (0.857143, 0.95119, 0.95119) ,
+                             (0.873016, 0.956736, 0.956736) ,
+                             (0.888889, 0.96225, 0.96225) ,
+                             (0.904762, 0.967733, 0.967733) ,
+                             (0.920635, 0.973185, 0.973185) ,
+                             (0.936508, 0.978607, 0.978607) ,
+                             (0.952381, 0.983999, 0.983999) ,
+                             (0.968254, 0.989361, 0.989361) ,
+                             (0.984127, 0.994695, 0.994695) ,
+                             (1.0, 1.0, 1.0)
+                             },
+                         new triple[] {  // green
+                           (0.0, 0.0, 0.0) ,
+                             (0.015873, 0.102869, 0.102869) ,
+                             (0.031746, 0.145479, 0.145479) ,
+                             (0.047619, 0.178174, 0.178174) ,
+                             (0.063492, 0.205738, 0.205738) ,
+                             (0.079365, 0.230022, 0.230022) ,
+                             (0.095238, 0.251976, 0.251976) ,
+                             (0.111111, 0.272166, 0.272166) ,
+                             (0.126984, 0.290957, 0.290957) ,
+                             (0.142857, 0.308607, 0.308607) ,
+                             (0.15873, 0.3253, 0.3253) ,
+                             (0.174603, 0.341178, 0.341178) ,
+                             (0.190476, 0.356348, 0.356348) ,
+                             (0.206349, 0.370899, 0.370899) ,
+                             (0.222222, 0.3849, 0.3849) ,
+                             (0.238095, 0.39841, 0.39841) ,
+                             (0.253968, 0.411476, 0.411476) ,
+                             (0.269841, 0.424139, 0.424139) ,
+                             (0.285714, 0.436436, 0.436436) ,
+                             (0.301587, 0.448395, 0.448395) ,
+                             (0.31746, 0.460044, 0.460044) ,
+                             (0.333333, 0.471405, 0.471405) ,
+                             (0.349206, 0.482498, 0.482498) ,
+                             (0.365079, 0.493342, 0.493342) ,
+                             (0.380952, 0.517549, 0.517549) ,
+                             (0.396825, 0.540674, 0.540674) ,
+                             (0.412698, 0.562849, 0.562849) ,
+                             (0.428571, 0.584183, 0.584183) ,
+                             (0.444444, 0.604765, 0.604765) ,
+                             (0.460317, 0.624669, 0.624669) ,
+                             (0.47619, 0.643958, 0.643958) ,
+                             (0.492063, 0.662687, 0.662687) ,
+                             (0.507937, 0.6809, 0.6809) ,
+                             (0.52381, 0.698638, 0.698638) ,
+                             (0.539683, 0.715937, 0.715937) ,
+                             (0.555556, 0.732828, 0.732828) ,
+                             (0.571429, 0.749338, 0.749338) ,
+                             (0.587302, 0.765493, 0.765493) ,
+                             (0.603175, 0.781313, 0.781313) ,
+                             (0.619048, 0.796819, 0.796819) ,
+                             (0.634921, 0.812029, 0.812029) ,
+                             (0.650794, 0.82696, 0.82696) ,
+                             (0.666667, 0.841625, 0.841625) ,
+                             (0.68254, 0.85604, 0.85604) ,
+                             (0.698413, 0.870216, 0.870216) ,
+                             (0.714286, 0.884164, 0.884164) ,
+                             (0.730159, 0.897896, 0.897896) ,
+                             (0.746032, 0.911421, 0.911421) ,
+                             (0.761905, 0.917208, 0.917208) ,
+                             (0.777778, 0.922958, 0.922958) ,
+                             (0.793651, 0.928673, 0.928673) ,
+                             (0.809524, 0.934353, 0.934353) ,
+                             (0.825397, 0.939999, 0.939999) ,
+                             (0.84127, 0.945611, 0.945611) ,
+                             (0.857143, 0.95119, 0.95119) ,
+                             (0.873016, 0.956736, 0.956736) ,
+                             (0.888889, 0.96225, 0.96225) ,
+                             (0.904762, 0.967733, 0.967733) ,
+                             (0.920635, 0.973185, 0.973185) ,
+                             (0.936508, 0.978607, 0.978607) ,
+                             (0.952381, 0.983999, 0.983999) ,
+                             (0.968254, 0.989361, 0.989361) ,
+                             (0.984127, 0.994695, 0.994695) ,
+                             (1.0, 1.0, 1.0)
+                             },
+                         new triple[] {  // blue
+                           (0.0, 0.0, 0.0) ,
+                             (0.015873, 0.102869, 0.102869) ,
+                             (0.031746, 0.145479, 0.145479) ,
+                             (0.047619, 0.178174, 0.178174) ,
+                             (0.063492, 0.205738, 0.205738) ,
+                             (0.079365, 0.230022, 0.230022) ,
+                             (0.095238, 0.251976, 0.251976) ,
+                             (0.111111, 0.272166, 0.272166) ,
+                             (0.126984, 0.290957, 0.290957) ,
+                             (0.142857, 0.308607, 0.308607) ,
+                             (0.15873, 0.3253, 0.3253) ,
+                             (0.174603, 0.341178, 0.341178) ,
+                             (0.190476, 0.356348, 0.356348) ,
+                             (0.206349, 0.370899, 0.370899) ,
+                             (0.222222, 0.3849, 0.3849) ,
+                             (0.238095, 0.39841, 0.39841) ,
+                             (0.253968, 0.411476, 0.411476) ,
+                             (0.269841, 0.424139, 0.424139) ,
+                             (0.285714, 0.436436, 0.436436) ,
+                             (0.301587, 0.448395, 0.448395) ,
+                             (0.31746, 0.460044, 0.460044) ,
+                             (0.333333, 0.471405, 0.471405) ,
+                             (0.349206, 0.482498, 0.482498) ,
+                             (0.365079, 0.493342, 0.493342) ,
+                             (0.380952, 0.503953, 0.503953) ,
+                             (0.396825, 0.514344, 0.514344) ,
+                             (0.412698, 0.524531, 0.524531) ,
+                             (0.428571, 0.534522, 0.534522) ,
+                             (0.444444, 0.544331, 0.544331) ,
+                             (0.460317, 0.553966, 0.553966) ,
+                             (0.47619, 0.563436, 0.563436) ,
+                             (0.492063, 0.57275, 0.57275) ,
+                             (0.507937, 0.581914, 0.581914) ,
+                             (0.52381, 0.590937, 0.590937) ,
+                             (0.539683, 0.599824, 0.599824) ,
+                             (0.555556, 0.608581, 0.608581) ,
+                             (0.571429, 0.617213, 0.617213) ,
+                             (0.587302, 0.625727, 0.625727) ,
+                             (0.603175, 0.634126, 0.634126) ,
+                             (0.619048, 0.642416, 0.642416) ,
+                             (0.634921, 0.6506, 0.6506) ,
+                             (0.650794, 0.658682, 0.658682) ,
+                             (0.666667, 0.666667, 0.666667) ,
+                             (0.68254, 0.674556, 0.674556) ,
+                             (0.698413, 0.682355, 0.682355) ,
+                             (0.714286, 0.690066, 0.690066) ,
+                             (0.730159, 0.697691, 0.697691) ,
+                             (0.746032, 0.705234, 0.705234) ,
+                             (0.761905, 0.727166, 0.727166) ,
+                             (0.777778, 0.748455, 0.748455) ,
+                             (0.793651, 0.769156, 0.769156) ,
+                             (0.809524, 0.789314, 0.789314) ,
+                             (0.825397, 0.808969, 0.808969) ,
+                             (0.84127, 0.828159, 0.828159) ,
+                             (0.857143, 0.846913, 0.846913) ,
+                             (0.873016, 0.865261, 0.865261) ,
+                             (0.888889, 0.883229, 0.883229) ,
+                             (0.904762, 0.900837, 0.900837) ,
+                             (0.920635, 0.918109, 0.918109) ,
+                             (0.936508, 0.935061, 0.935061) ,
+                             (0.952381, 0.951711, 0.951711) ,
+                             (0.968254, 0.968075, 0.968075) ,
+                             (0.984127, 0.984167, 0.984167) ,
+                             (1.0, 1.0, 1.0)
+                             }
+                         );
 
 
 list_data seismic = list_data(new pen[] {
-  rgb (0.0, 0.0, 0.3) ,
-  rgb (0.0, 0.0, 1.0) ,
-  rgb (1.0, 1.0, 1.0) ,
-  rgb (1.0, 0.0, 0.0) ,
-  rgb (0.5, 0.0, 0.0)
-});
+    rgb (0.0, 0.0, 0.3) ,
+      rgb (0.0, 0.0, 1.0) ,
+      rgb (1.0, 1.0, 1.0) ,
+      rgb (1.0, 0.0, 0.0) ,
+      rgb (0.5, 0.0, 0.0)
+      });
 
 
 seg_data spring = seg_data(
-  new triple[] {  // red
-     (0.0, 1.0, 1.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.0, 0.0)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 0.0, 0.0)
+                               }
+                           );
 
 
 seg_data summer = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.5, 0.5) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 0.4, 0.4) ,
-     (1.0, 0.4, 0.4)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.5, 0.5) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 0.4, 0.4) ,
+                               (1.0, 0.4, 0.4)
+                               }
+                           );
 
 
 list_data tab10 = list_data(new pen[] {
-  rgb (0.12156862745098039, 0.4666666666666667, 0.7058823529411765) ,
-  rgb (1.0, 0.4980392156862745, 0.054901960784313725) ,
-  rgb (0.17254901960784313, 0.6274509803921569, 0.17254901960784313) ,
-  rgb (0.8392156862745098, 0.15294117647058825, 0.1568627450980392) ,
-  rgb (0.5803921568627451, 0.403921568627451, 0.7411764705882353) ,
-  rgb (0.5490196078431373, 0.33725490196078434, 0.29411764705882354) ,
-  rgb (0.8901960784313725, 0.4666666666666667, 0.7607843137254902) ,
-  rgb (0.4980392156862745, 0.4980392156862745, 0.4980392156862745) ,
-  rgb (0.7372549019607844, 0.7411764705882353, 0.13333333333333333) ,
-  rgb (0.09019607843137255, 0.7450980392156863, 0.8117647058823529)
-});
+    rgb (0.12156862745098039, 0.4666666666666667, 0.7058823529411765) ,
+      rgb (1.0, 0.4980392156862745, 0.054901960784313725) ,
+      rgb (0.17254901960784313, 0.6274509803921569, 0.17254901960784313) ,
+      rgb (0.8392156862745098, 0.15294117647058825, 0.1568627450980392) ,
+      rgb (0.5803921568627451, 0.403921568627451, 0.7411764705882353) ,
+      rgb (0.5490196078431373, 0.33725490196078434, 0.29411764705882354) ,
+      rgb (0.8901960784313725, 0.4666666666666667, 0.7607843137254902) ,
+      rgb (0.4980392156862745, 0.4980392156862745, 0.4980392156862745) ,
+      rgb (0.7372549019607844, 0.7411764705882353, 0.13333333333333333) ,
+      rgb (0.09019607843137255, 0.7450980392156863, 0.8117647058823529)
+      });
 
 
 list_data tab20 = list_data(new pen[] {
-  rgb (0.12156862745098039, 0.4666666666666667, 0.7058823529411765) ,
-  rgb (0.6823529411764706, 0.7803921568627451, 0.9098039215686274) ,
-  rgb (1.0, 0.4980392156862745, 0.054901960784313725) ,
-  rgb (1.0, 0.7333333333333333, 0.47058823529411764) ,
-  rgb (0.17254901960784313, 0.6274509803921569, 0.17254901960784313) ,
-  rgb (0.596078431372549, 0.8745098039215686, 0.5411764705882353) ,
-  rgb (0.8392156862745098, 0.15294117647058825, 0.1568627450980392) ,
-  rgb (1.0, 0.596078431372549, 0.5882352941176471) ,
-  rgb (0.5803921568627451, 0.403921568627451, 0.7411764705882353) ,
-  rgb (0.7725490196078432, 0.6901960784313725, 0.8352941176470589) ,
-  rgb (0.5490196078431373, 0.33725490196078434, 0.29411764705882354) ,
-  rgb (0.7686274509803922, 0.611764705882353, 0.5803921568627451) ,
-  rgb (0.8901960784313725, 0.4666666666666667, 0.7607843137254902) ,
-  rgb (0.9686274509803922, 0.7137254901960784, 0.8235294117647058) ,
-  rgb (0.4980392156862745, 0.4980392156862745, 0.4980392156862745) ,
-  rgb (0.7803921568627451, 0.7803921568627451, 0.7803921568627451) ,
-  rgb (0.7372549019607844, 0.7411764705882353, 0.13333333333333333) ,
-  rgb (0.8588235294117647, 0.8588235294117647, 0.5529411764705883) ,
-  rgb (0.09019607843137255, 0.7450980392156863, 0.8117647058823529) ,
-  rgb (0.6196078431372549, 0.8549019607843137, 0.8980392156862745)
-});
+    rgb (0.12156862745098039, 0.4666666666666667, 0.7058823529411765) ,
+      rgb (0.6823529411764706, 0.7803921568627451, 0.9098039215686274) ,
+      rgb (1.0, 0.4980392156862745, 0.054901960784313725) ,
+      rgb (1.0, 0.7333333333333333, 0.47058823529411764) ,
+      rgb (0.17254901960784313, 0.6274509803921569, 0.17254901960784313) ,
+      rgb (0.596078431372549, 0.8745098039215686, 0.5411764705882353) ,
+      rgb (0.8392156862745098, 0.15294117647058825, 0.1568627450980392) ,
+      rgb (1.0, 0.596078431372549, 0.5882352941176471) ,
+      rgb (0.5803921568627451, 0.403921568627451, 0.7411764705882353) ,
+      rgb (0.7725490196078432, 0.6901960784313725, 0.8352941176470589) ,
+      rgb (0.5490196078431373, 0.33725490196078434, 0.29411764705882354) ,
+      rgb (0.7686274509803922, 0.611764705882353, 0.5803921568627451) ,
+      rgb (0.8901960784313725, 0.4666666666666667, 0.7607843137254902) ,
+      rgb (0.9686274509803922, 0.7137254901960784, 0.8235294117647058) ,
+      rgb (0.4980392156862745, 0.4980392156862745, 0.4980392156862745) ,
+      rgb (0.7803921568627451, 0.7803921568627451, 0.7803921568627451) ,
+      rgb (0.7372549019607844, 0.7411764705882353, 0.13333333333333333) ,
+      rgb (0.8588235294117647, 0.8588235294117647, 0.5529411764705883) ,
+      rgb (0.09019607843137255, 0.7450980392156863, 0.8117647058823529) ,
+      rgb (0.6196078431372549, 0.8549019607843137, 0.8980392156862745)
+      });
 
 
 list_data tab20b = list_data(new pen[] {
-  rgb (0.2235294117647059, 0.23137254901960785, 0.4745098039215686) ,
-  rgb (0.3215686274509804, 0.32941176470588235, 0.6392156862745098) ,
-  rgb (0.4196078431372549, 0.43137254901960786, 0.8117647058823529) ,
-  rgb (0.611764705882353, 0.6196078431372549, 0.8705882352941177) ,
-  rgb (0.38823529411764707, 0.4745098039215686, 0.2235294117647059) ,
-  rgb (0.5490196078431373, 0.6352941176470588, 0.3215686274509804) ,
-  rgb (0.7098039215686275, 0.8117647058823529, 0.4196078431372549) ,
-  rgb (0.807843137254902, 0.8588235294117647, 0.611764705882353) ,
-  rgb (0.5490196078431373, 0.42745098039215684, 0.19215686274509805) ,
-  rgb (0.7411764705882353, 0.6196078431372549, 0.2235294117647059) ,
-  rgb (0.9058823529411765, 0.7294117647058823, 0.3215686274509804) ,
-  rgb (0.9058823529411765, 0.796078431372549, 0.5803921568627451) ,
-  rgb (0.5176470588235295, 0.23529411764705882, 0.2235294117647059) ,
-  rgb (0.6784313725490196, 0.28627450980392155, 0.2901960784313726) ,
-  rgb (0.8392156862745098, 0.3803921568627451, 0.4196078431372549) ,
-  rgb (0.9058823529411765, 0.5882352941176471, 0.611764705882353) ,
-  rgb (0.4823529411764706, 0.2549019607843137, 0.45098039215686275) ,
-  rgb (0.6470588235294118, 0.3176470588235294, 0.5803921568627451) ,
-  rgb (0.807843137254902, 0.42745098039215684, 0.7411764705882353) ,
-  rgb (0.8705882352941177, 0.6196078431372549, 0.8392156862745098)
-});
+    rgb (0.2235294117647059, 0.23137254901960785, 0.4745098039215686) ,
+      rgb (0.3215686274509804, 0.32941176470588235, 0.6392156862745098) ,
+      rgb (0.4196078431372549, 0.43137254901960786, 0.8117647058823529) ,
+      rgb (0.611764705882353, 0.6196078431372549, 0.8705882352941177) ,
+      rgb (0.38823529411764707, 0.4745098039215686, 0.2235294117647059) ,
+      rgb (0.5490196078431373, 0.6352941176470588, 0.3215686274509804) ,
+      rgb (0.7098039215686275, 0.8117647058823529, 0.4196078431372549) ,
+      rgb (0.807843137254902, 0.8588235294117647, 0.611764705882353) ,
+      rgb (0.5490196078431373, 0.42745098039215684, 0.19215686274509805) ,
+      rgb (0.7411764705882353, 0.6196078431372549, 0.2235294117647059) ,
+      rgb (0.9058823529411765, 0.7294117647058823, 0.3215686274509804) ,
+      rgb (0.9058823529411765, 0.796078431372549, 0.5803921568627451) ,
+      rgb (0.5176470588235295, 0.23529411764705882, 0.2235294117647059) ,
+      rgb (0.6784313725490196, 0.28627450980392155, 0.2901960784313726) ,
+      rgb (0.8392156862745098, 0.3803921568627451, 0.4196078431372549) ,
+      rgb (0.9058823529411765, 0.5882352941176471, 0.611764705882353) ,
+      rgb (0.4823529411764706, 0.2549019607843137, 0.45098039215686275) ,
+      rgb (0.6470588235294118, 0.3176470588235294, 0.5803921568627451) ,
+      rgb (0.807843137254902, 0.42745098039215684, 0.7411764705882353) ,
+      rgb (0.8705882352941177, 0.6196078431372549, 0.8392156862745098)
+      });
 
 
 list_data tab20c = list_data(new pen[] {
-  rgb (0.19215686274509805, 0.5098039215686274, 0.7411764705882353) ,
-  rgb (0.4196078431372549, 0.6823529411764706, 0.8392156862745098) ,
-  rgb (0.6196078431372549, 0.792156862745098, 0.8823529411764706) ,
-  rgb (0.7764705882352941, 0.8588235294117647, 0.9372549019607843) ,
-  rgb (0.9019607843137255, 0.3333333333333333, 0.050980392156862744) ,
-  rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
-  rgb (0.9921568627450981, 0.6823529411764706, 0.4196078431372549) ,
-  rgb (0.9921568627450981, 0.8156862745098039, 0.6352941176470588) ,
-  rgb (0.19215686274509805, 0.6392156862745098, 0.32941176470588235) ,
-  rgb (0.4549019607843137, 0.7686274509803922, 0.4627450980392157) ,
-  rgb (0.6313725490196078, 0.8509803921568627, 0.6078431372549019) ,
-  rgb (0.7803921568627451, 0.9137254901960784, 0.7529411764705882) ,
-  rgb (0.4588235294117647, 0.4196078431372549, 0.6941176470588235) ,
-  rgb (0.6196078431372549, 0.6039215686274509, 0.7843137254901961) ,
-  rgb (0.7372549019607844, 0.7411764705882353, 0.8627450980392157) ,
-  rgb (0.8549019607843137, 0.8549019607843137, 0.9215686274509803) ,
-  rgb (0.38823529411764707, 0.38823529411764707, 0.38823529411764707) ,
-  rgb (0.5882352941176471, 0.5882352941176471, 0.5882352941176471) ,
-  rgb (0.7411764705882353, 0.7411764705882353, 0.7411764705882353) ,
-  rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627)
-});
+    rgb (0.19215686274509805, 0.5098039215686274, 0.7411764705882353) ,
+      rgb (0.4196078431372549, 0.6823529411764706, 0.8392156862745098) ,
+      rgb (0.6196078431372549, 0.792156862745098, 0.8823529411764706) ,
+      rgb (0.7764705882352941, 0.8588235294117647, 0.9372549019607843) ,
+      rgb (0.9019607843137255, 0.3333333333333333, 0.050980392156862744) ,
+      rgb (0.9921568627450981, 0.5529411764705883, 0.23529411764705882) ,
+      rgb (0.9921568627450981, 0.6823529411764706, 0.4196078431372549) ,
+      rgb (0.9921568627450981, 0.8156862745098039, 0.6352941176470588) ,
+      rgb (0.19215686274509805, 0.6392156862745098, 0.32941176470588235) ,
+      rgb (0.4549019607843137, 0.7686274509803922, 0.4627450980392157) ,
+      rgb (0.6313725490196078, 0.8509803921568627, 0.6078431372549019) ,
+      rgb (0.7803921568627451, 0.9137254901960784, 0.7529411764705882) ,
+      rgb (0.4588235294117647, 0.4196078431372549, 0.6941176470588235) ,
+      rgb (0.6196078431372549, 0.6039215686274509, 0.7843137254901961) ,
+      rgb (0.7372549019607844, 0.7411764705882353, 0.8627450980392157) ,
+      rgb (0.8549019607843137, 0.8549019607843137, 0.9215686274509803) ,
+      rgb (0.38823529411764707, 0.38823529411764707, 0.38823529411764707) ,
+      rgb (0.5882352941176471, 0.5882352941176471, 0.5882352941176471) ,
+      rgb (0.7411764705882353, 0.7411764705882353, 0.7411764705882353) ,
+      rgb (0.8509803921568627, 0.8509803921568627, 0.8509803921568627)
+      });
 
 
 seg_data winter = seg_data(
-  new triple[] {  // red
-     (0.0, 0.0, 0.0) ,
-     (1.0, 0.0, 0.0)
-  },
-  new triple[] {  // green
-     (0.0, 0.0, 0.0) ,
-     (1.0, 1.0, 1.0)
-  },
-  new triple[] {  // blue
-     (0.0, 1.0, 1.0) ,
-     (1.0, 0.5, 0.5)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 0.0, 0.0)
+                               },
+                           new triple[] {  // green
+                             (0.0, 0.0, 0.0) ,
+                               (1.0, 1.0, 1.0)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 1.0, 1.0) ,
+                               (1.0, 0.5, 0.5)
+                               }
+                           );
 
 
 seg_data wistia = seg_data(
-  new triple[] {  // red
-     (0.0, 0.8941176470588236, 0.8941176470588236) ,
-     (0.25, 1.0, 1.0) ,
-     (0.5, 1.0, 1.0) ,
-     (0.75, 1.0, 1.0) ,
-     (1.0, 0.9882352941176471, 0.9882352941176471)
-  },
-  new triple[] {  // green
-     (0.0, 1.0, 1.0) ,
-     (0.25, 0.9098039215686274, 0.9098039215686274) ,
-     (0.5, 0.7411764705882353, 0.7411764705882353) ,
-     (0.75, 0.6274509803921569, 0.6274509803921569) ,
-     (1.0, 0.4980392156862745, 0.4980392156862745)
-  },
-  new triple[] {  // blue
-     (0.0, 0.47843137254901963, 0.47843137254901963) ,
-     (0.25, 0.10196078431372549, 0.10196078431372549) ,
-     (0.5, 0.0, 0.0) ,
-     (0.75, 0.0, 0.0) ,
-     (1.0, 0.0, 0.0)
-  }
-);
+                           new triple[] {  // red
+                             (0.0, 0.8941176470588236, 0.8941176470588236) ,
+                               (0.25, 1.0, 1.0) ,
+                               (0.5, 1.0, 1.0) ,
+                               (0.75, 1.0, 1.0) ,
+                               (1.0, 0.9882352941176471, 0.9882352941176471)
+                               },
+                           new triple[] {  // green
+                             (0.0, 1.0, 1.0) ,
+                               (0.25, 0.9098039215686274, 0.9098039215686274) ,
+                               (0.5, 0.7411764705882353, 0.7411764705882353) ,
+                               (0.75, 0.6274509803921569, 0.6274509803921569) ,
+                               (1.0, 0.4980392156862745, 0.4980392156862745)
+                               },
+                           new triple[] {  // blue
+                             (0.0, 0.47843137254901963, 0.47843137254901963) ,
+                               (0.25, 0.10196078431372549, 0.10196078431372549) ,
+                               (0.5, 0.0, 0.0) ,
+                               (0.75, 0.0, 0.0) ,
+                               (1.0, 0.0, 0.0)
+                               }
+                           );
 
 
 list_data cividis = list_data(new pen[] {
-  rgb (0.0, 0.135112, 0.304751) ,
-  rgb (0.0, 0.138068, 0.311105) ,
-  rgb (0.0, 0.141013, 0.317579) ,
-  rgb (0.0, 0.143951, 0.323982) ,
-  rgb (0.0, 0.146877, 0.330479) ,
-  rgb (0.0, 0.149791, 0.337065) ,
-  rgb (0.0, 0.152673, 0.343704) ,
-  rgb (0.0, 0.155377, 0.3505) ,
-  rgb (0.0, 0.157932, 0.357521) ,
-  rgb (0.0, 0.160495, 0.364534) ,
-  rgb (0.0, 0.163058, 0.371608) ,
-  rgb (0.0, 0.165621, 0.378769) ,
-  rgb (0.0, 0.168204, 0.385902) ,
-  rgb (0.0, 0.1708, 0.3931) ,
-  rgb (0.0, 0.17342, 0.400353) ,
-  rgb (0.0, 0.176082, 0.407577) ,
-  rgb (0.0, 0.178802, 0.414764) ,
-  rgb (0.0, 0.18161, 0.421859) ,
-  rgb (0.0, 0.18455, 0.428802) ,
-  rgb (0.0, 0.186915, 0.435532) ,
-  rgb (0.0, 0.188769, 0.439563) ,
-  rgb (0.0, 0.19095, 0.441085) ,
-  rgb (0.0, 0.193366, 0.441561) ,
-  rgb (0.003602, 0.195911, 0.441564) ,
-  rgb (0.017852, 0.198528, 0.441248) ,
-  rgb (0.03211, 0.201199, 0.440785) ,
-  rgb (0.046205, 0.203903, 0.440196) ,
-  rgb (0.058378, 0.206629, 0.439531) ,
-  rgb (0.068968, 0.209372, 0.438863) ,
-  rgb (0.078624, 0.212122, 0.438105) ,
-  rgb (0.087465, 0.214879, 0.437342) ,
-  rgb (0.095645, 0.217643, 0.436593) ,
-  rgb (0.103401, 0.220406, 0.43579) ,
-  rgb (0.110658, 0.22317, 0.435067) ,
-  rgb (0.117612, 0.225935, 0.434308) ,
-  rgb (0.124291, 0.228697, 0.433547) ,
-  rgb (0.130669, 0.231458, 0.43284) ,
-  rgb (0.13683, 0.234216, 0.432148) ,
-  rgb (0.142852, 0.236972, 0.431404) ,
-  rgb (0.148638, 0.239724, 0.430752) ,
-  rgb (0.154261, 0.242475, 0.43012) ,
-  rgb (0.159733, 0.245221, 0.429528) ,
-  rgb (0.165113, 0.247965, 0.428908) ,
-  rgb (0.170362, 0.250707, 0.428325) ,
-  rgb (0.17549, 0.253444, 0.42779) ,
-  rgb (0.180503, 0.25618, 0.427299) ,
-  rgb (0.185453, 0.258914, 0.426788) ,
-  rgb (0.190303, 0.261644, 0.426329) ,
-  rgb (0.195057, 0.264372, 0.425924) ,
-  rgb (0.199764, 0.267099, 0.425497) ,
-  rgb (0.204385, 0.269823, 0.425126) ,
-  rgb (0.208926, 0.272546, 0.424809) ,
-  rgb (0.213431, 0.275266, 0.42448) ,
-  rgb (0.217863, 0.277985, 0.424206) ,
-  rgb (0.222264, 0.280702, 0.423914) ,
-  rgb (0.226598, 0.283419, 0.423678) ,
-  rgb (0.230871, 0.286134, 0.423498) ,
-  rgb (0.23512, 0.288848, 0.423304) ,
-  rgb (0.239312, 0.291562, 0.423167) ,
-  rgb (0.243485, 0.294274, 0.423014) ,
-  rgb (0.247605, 0.296986, 0.422917) ,
-  rgb (0.251675, 0.299698, 0.422873) ,
-  rgb (0.255731, 0.302409, 0.422814) ,
-  rgb (0.25974, 0.30512, 0.42281) ,
-  rgb (0.263738, 0.307831, 0.422789) ,
-  rgb (0.267693, 0.310542, 0.422821) ,
-  rgb (0.271639, 0.313253, 0.422837) ,
-  rgb (0.275513, 0.315965, 0.422979) ,
-  rgb (0.279411, 0.318677, 0.423031) ,
-  rgb (0.28324, 0.32139, 0.423211) ,
-  rgb (0.287065, 0.324103, 0.423373) ,
-  rgb (0.290884, 0.326816, 0.423517) ,
-  rgb (0.294669, 0.329531, 0.423716) ,
-  rgb (0.298421, 0.332247, 0.423973) ,
-  rgb (0.302169, 0.334963, 0.424213) ,
-  rgb (0.305886, 0.337681, 0.424512) ,
-  rgb (0.309601, 0.340399, 0.42479) ,
-  rgb (0.313287, 0.34312, 0.42512) ,
-  rgb (0.316941, 0.345842, 0.425512) ,
-  rgb (0.320595, 0.348565, 0.425889) ,
-  rgb (0.32425, 0.351289, 0.42625) ,
-  rgb (0.327875, 0.354016, 0.42667) ,
-  rgb (0.331474, 0.356744, 0.427144) ,
-  rgb (0.335073, 0.359474, 0.427605) ,
-  rgb (0.338673, 0.362206, 0.428053) ,
-  rgb (0.342246, 0.364939, 0.428559) ,
-  rgb (0.345793, 0.367676, 0.429127) ,
-  rgb (0.349341, 0.370414, 0.429685) ,
-  rgb (0.352892, 0.373153, 0.430226) ,
-  rgb (0.356418, 0.375896, 0.430823) ,
-  rgb (0.359916, 0.378641, 0.431501) ,
-  rgb (0.363446, 0.381388, 0.432075) ,
-  rgb (0.366923, 0.384139, 0.432796) ,
-  rgb (0.37043, 0.38689, 0.433428) ,
-  rgb (0.373884, 0.389646, 0.434209) ,
-  rgb (0.377371, 0.392404, 0.43489) ,
-  rgb (0.38083, 0.395164, 0.435653) ,
-  rgb (0.384268, 0.397928, 0.436475) ,
-  rgb (0.387705, 0.400694, 0.437305) ,
-  rgb (0.391151, 0.403464, 0.438096) ,
-  rgb (0.394568, 0.406236, 0.438986) ,
-  rgb (0.397991, 0.409011, 0.439848) ,
-  rgb (0.401418, 0.41179, 0.440708) ,
-  rgb (0.40482, 0.414572, 0.441642) ,
-  rgb (0.408226, 0.417357, 0.44257) ,
-  rgb (0.411607, 0.420145, 0.443577) ,
-  rgb (0.414992, 0.422937, 0.444578) ,
-  rgb (0.418383, 0.425733, 0.44556) ,
-  rgb (0.421748, 0.428531, 0.44664) ,
-  rgb (0.42512, 0.431334, 0.447692) ,
-  rgb (0.428462, 0.43414, 0.448864) ,
-  rgb (0.431817, 0.43695, 0.449982) ,
-  rgb (0.435168, 0.439763, 0.451134) ,
-  rgb (0.438504, 0.44258, 0.452341) ,
-  rgb (0.44181, 0.445402, 0.453659) ,
-  rgb (0.445148, 0.448226, 0.454885) ,
-  rgb (0.448447, 0.451053, 0.456264) ,
-  rgb (0.451759, 0.453887, 0.457582) ,
-  rgb (0.455072, 0.456718, 0.458976) ,
-  rgb (0.458366, 0.459552, 0.460457) ,
-  rgb (0.461616, 0.462405, 0.461969) ,
-  rgb (0.464947, 0.465241, 0.463395) ,
-  rgb (0.468254, 0.468083, 0.464908) ,
-  rgb (0.471501, 0.47096, 0.466357) ,
-  rgb (0.474812, 0.473832, 0.467681) ,
-  rgb (0.478186, 0.476699, 0.468845) ,
-  rgb (0.481622, 0.479573, 0.469767) ,
-  rgb (0.485141, 0.482451, 0.470384) ,
-  rgb (0.488697, 0.485318, 0.471008) ,
-  rgb (0.492278, 0.488198, 0.471453) ,
-  rgb (0.495913, 0.491076, 0.471751) ,
-  rgb (0.499552, 0.49396, 0.472032) ,
-  rgb (0.503185, 0.496851, 0.472305) ,
-  rgb (0.506866, 0.499743, 0.472432) ,
-  rgb (0.51054, 0.502643, 0.47255) ,
-  rgb (0.514226, 0.505546, 0.47264) ,
-  rgb (0.51792, 0.508454, 0.472707) ,
-  rgb (0.521643, 0.511367, 0.472639) ,
-  rgb (0.525348, 0.514285, 0.47266) ,
-  rgb (0.529086, 0.517207, 0.472543) ,
-  rgb (0.532829, 0.520135, 0.472401) ,
-  rgb (0.536553, 0.523067, 0.472352) ,
-  rgb (0.540307, 0.526005, 0.472163) ,
-  rgb (0.544069, 0.528948, 0.471947) ,
-  rgb (0.54784, 0.531895, 0.471704) ,
-  rgb (0.551612, 0.534849, 0.471439) ,
-  rgb (0.555393, 0.537807, 0.471147) ,
-  rgb (0.559181, 0.540771, 0.470829) ,
-  rgb (0.562972, 0.543741, 0.470488) ,
-  rgb (0.566802, 0.546715, 0.469988) ,
-  rgb (0.570607, 0.549695, 0.469593) ,
-  rgb (0.574417, 0.552682, 0.469172) ,
-  rgb (0.578236, 0.555673, 0.468724) ,
-  rgb (0.582087, 0.55867, 0.468118) ,
-  rgb (0.585916, 0.561674, 0.467618) ,
-  rgb (0.589753, 0.564682, 0.46709) ,
-  rgb (0.593622, 0.567697, 0.466401) ,
-  rgb (0.597469, 0.570718, 0.465821) ,
-  rgb (0.601354, 0.573743, 0.465074) ,
-  rgb (0.605211, 0.576777, 0.464441) ,
-  rgb (0.609105, 0.579816, 0.463638) ,
-  rgb (0.612977, 0.582861, 0.46295) ,
-  rgb (0.616852, 0.585913, 0.462237) ,
-  rgb (0.620765, 0.58897, 0.461351) ,
-  rgb (0.624654, 0.592034, 0.460583) ,
-  rgb (0.628576, 0.595104, 0.459641) ,
-  rgb (0.632506, 0.59818, 0.458668) ,
-  rgb (0.636412, 0.601264, 0.457818) ,
-  rgb (0.640352, 0.604354, 0.456791) ,
-  rgb (0.64427, 0.60745, 0.455886) ,
-  rgb (0.648222, 0.610553, 0.454801) ,
-  rgb (0.652178, 0.613664, 0.453689) ,
-  rgb (0.656114, 0.61678, 0.452702) ,
-  rgb (0.660082, 0.619904, 0.451534) ,
-  rgb (0.664055, 0.623034, 0.450338) ,
-  rgb (0.668008, 0.626171, 0.44927) ,
-  rgb (0.671991, 0.629316, 0.448018) ,
-  rgb (0.675981, 0.632468, 0.446736) ,
-  rgb (0.679979, 0.635626, 0.445424) ,
-  rgb (0.68395, 0.638793, 0.444251) ,
-  rgb (0.687957, 0.641966, 0.442886) ,
-  rgb (0.691971, 0.645145, 0.441491) ,
-  rgb (0.695985, 0.648334, 0.440072) ,
-  rgb (0.700008, 0.651529, 0.438624) ,
-  rgb (0.704037, 0.654731, 0.437147) ,
-  rgb (0.708067, 0.657942, 0.435647) ,
-  rgb (0.712105, 0.66116, 0.434117) ,
-  rgb (0.716177, 0.664384, 0.432386) ,
-  rgb (0.720222, 0.667618, 0.430805) ,
-  rgb (0.724274, 0.670859, 0.429194) ,
-  rgb (0.728334, 0.674107, 0.427554) ,
-  rgb (0.732422, 0.677364, 0.425717) ,
-  rgb (0.736488, 0.680629, 0.424028) ,
-  rgb (0.740589, 0.6839, 0.422131) ,
-  rgb (0.744664, 0.687181, 0.420393) ,
-  rgb (0.748772, 0.69047, 0.418448) ,
-  rgb (0.752886, 0.693766, 0.416472) ,
-  rgb (0.756975, 0.697071, 0.414659) ,
-  rgb (0.761096, 0.700384, 0.412638) ,
-  rgb (0.765223, 0.703705, 0.410587) ,
-  rgb (0.769353, 0.707035, 0.408516) ,
-  rgb (0.773486, 0.710373, 0.406422) ,
-  rgb (0.777651, 0.713719, 0.404112) ,
-  rgb (0.781795, 0.717074, 0.401966) ,
-  rgb (0.785965, 0.720438, 0.399613) ,
-  rgb (0.790116, 0.72381, 0.397423) ,
-  rgb (0.794298, 0.72719, 0.395016) ,
-  rgb (0.79848, 0.73058, 0.392597) ,
-  rgb (0.802667, 0.733978, 0.390153) ,
-  rgb (0.806859, 0.737385, 0.387684) ,
-  rgb (0.811054, 0.740801, 0.385198) ,
-  rgb (0.815274, 0.744226, 0.382504) ,
-  rgb (0.819499, 0.747659, 0.379785) ,
-  rgb (0.823729, 0.751101, 0.377043) ,
-  rgb (0.827959, 0.754553, 0.374292) ,
-  rgb (0.832192, 0.758014, 0.371529) ,
-  rgb (0.836429, 0.761483, 0.368747) ,
-  rgb (0.840693, 0.764962, 0.365746) ,
-  rgb (0.844957, 0.76845, 0.362741) ,
-  rgb (0.849223, 0.771947, 0.359729) ,
-  rgb (0.853515, 0.775454, 0.3565) ,
-  rgb (0.857809, 0.778969, 0.353259) ,
-  rgb (0.862105, 0.782494, 0.350011) ,
-  rgb (0.866421, 0.786028, 0.346571) ,
-  rgb (0.870717, 0.789572, 0.343333) ,
-  rgb (0.875057, 0.793125, 0.339685) ,
-  rgb (0.879378, 0.796687, 0.336241) ,
-  rgb (0.88372, 0.800258, 0.332599) ,
-  rgb (0.888081, 0.803839, 0.32877) ,
-  rgb (0.89244, 0.80743, 0.324968) ,
-  rgb (0.896818, 0.81103, 0.320982) ,
-  rgb (0.901195, 0.814639, 0.317021) ,
-  rgb (0.905589, 0.818257, 0.312889) ,
-  rgb (0.91, 0.821885, 0.308594) ,
-  rgb (0.914407, 0.825522, 0.304348) ,
-  rgb (0.918828, 0.829168, 0.29996) ,
-  rgb (0.923279, 0.832822, 0.295244) ,
-  rgb (0.927724, 0.836486, 0.290611) ,
-  rgb (0.93218, 0.840159, 0.28588) ,
-  rgb (0.93666, 0.843841, 0.280876) ,
-  rgb (0.941147, 0.84753, 0.275815) ,
-  rgb (0.945654, 0.851228, 0.270532) ,
-  rgb (0.950178, 0.854933, 0.265085) ,
-  rgb (0.954725, 0.858646, 0.259365) ,
-  rgb (0.959284, 0.862365, 0.253563) ,
-  rgb (0.963872, 0.866089, 0.247445) ,
-  rgb (0.968469, 0.869819, 0.24131) ,
-  rgb (0.973114, 0.87355, 0.234677) ,
-  rgb (0.97778, 0.877281, 0.227954) ,
-  rgb (0.982497, 0.881008, 0.220878) ,
-  rgb (0.987293, 0.884718, 0.213336) ,
-  rgb (0.992218, 0.888385, 0.205468) ,
-  rgb (0.994847, 0.892954, 0.203445) ,
-  rgb (0.995249, 0.898384, 0.207561) ,
-  rgb (0.995503, 0.903866, 0.21237) ,
-  rgb (0.995737, 0.909344, 0.217772)
-});
+    rgb (0.0, 0.135112, 0.304751) ,
+      rgb (0.0, 0.138068, 0.311105) ,
+      rgb (0.0, 0.141013, 0.317579) ,
+      rgb (0.0, 0.143951, 0.323982) ,
+      rgb (0.0, 0.146877, 0.330479) ,
+      rgb (0.0, 0.149791, 0.337065) ,
+      rgb (0.0, 0.152673, 0.343704) ,
+      rgb (0.0, 0.155377, 0.3505) ,
+      rgb (0.0, 0.157932, 0.357521) ,
+      rgb (0.0, 0.160495, 0.364534) ,
+      rgb (0.0, 0.163058, 0.371608) ,
+      rgb (0.0, 0.165621, 0.378769) ,
+      rgb (0.0, 0.168204, 0.385902) ,
+      rgb (0.0, 0.1708, 0.3931) ,
+      rgb (0.0, 0.17342, 0.400353) ,
+      rgb (0.0, 0.176082, 0.407577) ,
+      rgb (0.0, 0.178802, 0.414764) ,
+      rgb (0.0, 0.18161, 0.421859) ,
+      rgb (0.0, 0.18455, 0.428802) ,
+      rgb (0.0, 0.186915, 0.435532) ,
+      rgb (0.0, 0.188769, 0.439563) ,
+      rgb (0.0, 0.19095, 0.441085) ,
+      rgb (0.0, 0.193366, 0.441561) ,
+      rgb (0.003602, 0.195911, 0.441564) ,
+      rgb (0.017852, 0.198528, 0.441248) ,
+      rgb (0.03211, 0.201199, 0.440785) ,
+      rgb (0.046205, 0.203903, 0.440196) ,
+      rgb (0.058378, 0.206629, 0.439531) ,
+      rgb (0.068968, 0.209372, 0.438863) ,
+      rgb (0.078624, 0.212122, 0.438105) ,
+      rgb (0.087465, 0.214879, 0.437342) ,
+      rgb (0.095645, 0.217643, 0.436593) ,
+      rgb (0.103401, 0.220406, 0.43579) ,
+      rgb (0.110658, 0.22317, 0.435067) ,
+      rgb (0.117612, 0.225935, 0.434308) ,
+      rgb (0.124291, 0.228697, 0.433547) ,
+      rgb (0.130669, 0.231458, 0.43284) ,
+      rgb (0.13683, 0.234216, 0.432148) ,
+      rgb (0.142852, 0.236972, 0.431404) ,
+      rgb (0.148638, 0.239724, 0.430752) ,
+      rgb (0.154261, 0.242475, 0.43012) ,
+      rgb (0.159733, 0.245221, 0.429528) ,
+      rgb (0.165113, 0.247965, 0.428908) ,
+      rgb (0.170362, 0.250707, 0.428325) ,
+      rgb (0.17549, 0.253444, 0.42779) ,
+      rgb (0.180503, 0.25618, 0.427299) ,
+      rgb (0.185453, 0.258914, 0.426788) ,
+      rgb (0.190303, 0.261644, 0.426329) ,
+      rgb (0.195057, 0.264372, 0.425924) ,
+      rgb (0.199764, 0.267099, 0.425497) ,
+      rgb (0.204385, 0.269823, 0.425126) ,
+      rgb (0.208926, 0.272546, 0.424809) ,
+      rgb (0.213431, 0.275266, 0.42448) ,
+      rgb (0.217863, 0.277985, 0.424206) ,
+      rgb (0.222264, 0.280702, 0.423914) ,
+      rgb (0.226598, 0.283419, 0.423678) ,
+      rgb (0.230871, 0.286134, 0.423498) ,
+      rgb (0.23512, 0.288848, 0.423304) ,
+      rgb (0.239312, 0.291562, 0.423167) ,
+      rgb (0.243485, 0.294274, 0.423014) ,
+      rgb (0.247605, 0.296986, 0.422917) ,
+      rgb (0.251675, 0.299698, 0.422873) ,
+      rgb (0.255731, 0.302409, 0.422814) ,
+      rgb (0.25974, 0.30512, 0.42281) ,
+      rgb (0.263738, 0.307831, 0.422789) ,
+      rgb (0.267693, 0.310542, 0.422821) ,
+      rgb (0.271639, 0.313253, 0.422837) ,
+      rgb (0.275513, 0.315965, 0.422979) ,
+      rgb (0.279411, 0.318677, 0.423031) ,
+      rgb (0.28324, 0.32139, 0.423211) ,
+      rgb (0.287065, 0.324103, 0.423373) ,
+      rgb (0.290884, 0.326816, 0.423517) ,
+      rgb (0.294669, 0.329531, 0.423716) ,
+      rgb (0.298421, 0.332247, 0.423973) ,
+      rgb (0.302169, 0.334963, 0.424213) ,
+      rgb (0.305886, 0.337681, 0.424512) ,
+      rgb (0.309601, 0.340399, 0.42479) ,
+      rgb (0.313287, 0.34312, 0.42512) ,
+      rgb (0.316941, 0.345842, 0.425512) ,
+      rgb (0.320595, 0.348565, 0.425889) ,
+      rgb (0.32425, 0.351289, 0.42625) ,
+      rgb (0.327875, 0.354016, 0.42667) ,
+      rgb (0.331474, 0.356744, 0.427144) ,
+      rgb (0.335073, 0.359474, 0.427605) ,
+      rgb (0.338673, 0.362206, 0.428053) ,
+      rgb (0.342246, 0.364939, 0.428559) ,
+      rgb (0.345793, 0.367676, 0.429127) ,
+      rgb (0.349341, 0.370414, 0.429685) ,
+      rgb (0.352892, 0.373153, 0.430226) ,
+      rgb (0.356418, 0.375896, 0.430823) ,
+      rgb (0.359916, 0.378641, 0.431501) ,
+      rgb (0.363446, 0.381388, 0.432075) ,
+      rgb (0.366923, 0.384139, 0.432796) ,
+      rgb (0.37043, 0.38689, 0.433428) ,
+      rgb (0.373884, 0.389646, 0.434209) ,
+      rgb (0.377371, 0.392404, 0.43489) ,
+      rgb (0.38083, 0.395164, 0.435653) ,
+      rgb (0.384268, 0.397928, 0.436475) ,
+      rgb (0.387705, 0.400694, 0.437305) ,
+      rgb (0.391151, 0.403464, 0.438096) ,
+      rgb (0.394568, 0.406236, 0.438986) ,
+      rgb (0.397991, 0.409011, 0.439848) ,
+      rgb (0.401418, 0.41179, 0.440708) ,
+      rgb (0.40482, 0.414572, 0.441642) ,
+      rgb (0.408226, 0.417357, 0.44257) ,
+      rgb (0.411607, 0.420145, 0.443577) ,
+      rgb (0.414992, 0.422937, 0.444578) ,
+      rgb (0.418383, 0.425733, 0.44556) ,
+      rgb (0.421748, 0.428531, 0.44664) ,
+      rgb (0.42512, 0.431334, 0.447692) ,
+      rgb (0.428462, 0.43414, 0.448864) ,
+      rgb (0.431817, 0.43695, 0.449982) ,
+      rgb (0.435168, 0.439763, 0.451134) ,
+      rgb (0.438504, 0.44258, 0.452341) ,
+      rgb (0.44181, 0.445402, 0.453659) ,
+      rgb (0.445148, 0.448226, 0.454885) ,
+      rgb (0.448447, 0.451053, 0.456264) ,
+      rgb (0.451759, 0.453887, 0.457582) ,
+      rgb (0.455072, 0.456718, 0.458976) ,
+      rgb (0.458366, 0.459552, 0.460457) ,
+      rgb (0.461616, 0.462405, 0.461969) ,
+      rgb (0.464947, 0.465241, 0.463395) ,
+      rgb (0.468254, 0.468083, 0.464908) ,
+      rgb (0.471501, 0.47096, 0.466357) ,
+      rgb (0.474812, 0.473832, 0.467681) ,
+      rgb (0.478186, 0.476699, 0.468845) ,
+      rgb (0.481622, 0.479573, 0.469767) ,
+      rgb (0.485141, 0.482451, 0.470384) ,
+      rgb (0.488697, 0.485318, 0.471008) ,
+      rgb (0.492278, 0.488198, 0.471453) ,
+      rgb (0.495913, 0.491076, 0.471751) ,
+      rgb (0.499552, 0.49396, 0.472032) ,
+      rgb (0.503185, 0.496851, 0.472305) ,
+      rgb (0.506866, 0.499743, 0.472432) ,
+      rgb (0.51054, 0.502643, 0.47255) ,
+      rgb (0.514226, 0.505546, 0.47264) ,
+      rgb (0.51792, 0.508454, 0.472707) ,
+      rgb (0.521643, 0.511367, 0.472639) ,
+      rgb (0.525348, 0.514285, 0.47266) ,
+      rgb (0.529086, 0.517207, 0.472543) ,
+      rgb (0.532829, 0.520135, 0.472401) ,
+      rgb (0.536553, 0.523067, 0.472352) ,
+      rgb (0.540307, 0.526005, 0.472163) ,
+      rgb (0.544069, 0.528948, 0.471947) ,
+      rgb (0.54784, 0.531895, 0.471704) ,
+      rgb (0.551612, 0.534849, 0.471439) ,
+      rgb (0.555393, 0.537807, 0.471147) ,
+      rgb (0.559181, 0.540771, 0.470829) ,
+      rgb (0.562972, 0.543741, 0.470488) ,
+      rgb (0.566802, 0.546715, 0.469988) ,
+      rgb (0.570607, 0.549695, 0.469593) ,
+      rgb (0.574417, 0.552682, 0.469172) ,
+      rgb (0.578236, 0.555673, 0.468724) ,
+      rgb (0.582087, 0.55867, 0.468118) ,
+      rgb (0.585916, 0.561674, 0.467618) ,
+      rgb (0.589753, 0.564682, 0.46709) ,
+      rgb (0.593622, 0.567697, 0.466401) ,
+      rgb (0.597469, 0.570718, 0.465821) ,
+      rgb (0.601354, 0.573743, 0.465074) ,
+      rgb (0.605211, 0.576777, 0.464441) ,
+      rgb (0.609105, 0.579816, 0.463638) ,
+      rgb (0.612977, 0.582861, 0.46295) ,
+      rgb (0.616852, 0.585913, 0.462237) ,
+      rgb (0.620765, 0.58897, 0.461351) ,
+      rgb (0.624654, 0.592034, 0.460583) ,
+      rgb (0.628576, 0.595104, 0.459641) ,
+      rgb (0.632506, 0.59818, 0.458668) ,
+      rgb (0.636412, 0.601264, 0.457818) ,
+      rgb (0.640352, 0.604354, 0.456791) ,
+      rgb (0.64427, 0.60745, 0.455886) ,
+      rgb (0.648222, 0.610553, 0.454801) ,
+      rgb (0.652178, 0.613664, 0.453689) ,
+      rgb (0.656114, 0.61678, 0.452702) ,
+      rgb (0.660082, 0.619904, 0.451534) ,
+      rgb (0.664055, 0.623034, 0.450338) ,
+      rgb (0.668008, 0.626171, 0.44927) ,
+      rgb (0.671991, 0.629316, 0.448018) ,
+      rgb (0.675981, 0.632468, 0.446736) ,
+      rgb (0.679979, 0.635626, 0.445424) ,
+      rgb (0.68395, 0.638793, 0.444251) ,
+      rgb (0.687957, 0.641966, 0.442886) ,
+      rgb (0.691971, 0.645145, 0.441491) ,
+      rgb (0.695985, 0.648334, 0.440072) ,
+      rgb (0.700008, 0.651529, 0.438624) ,
+      rgb (0.704037, 0.654731, 0.437147) ,
+      rgb (0.708067, 0.657942, 0.435647) ,
+      rgb (0.712105, 0.66116, 0.434117) ,
+      rgb (0.716177, 0.664384, 0.432386) ,
+      rgb (0.720222, 0.667618, 0.430805) ,
+      rgb (0.724274, 0.670859, 0.429194) ,
+      rgb (0.728334, 0.674107, 0.427554) ,
+      rgb (0.732422, 0.677364, 0.425717) ,
+      rgb (0.736488, 0.680629, 0.424028) ,
+      rgb (0.740589, 0.6839, 0.422131) ,
+      rgb (0.744664, 0.687181, 0.420393) ,
+      rgb (0.748772, 0.69047, 0.418448) ,
+      rgb (0.752886, 0.693766, 0.416472) ,
+      rgb (0.756975, 0.697071, 0.414659) ,
+      rgb (0.761096, 0.700384, 0.412638) ,
+      rgb (0.765223, 0.703705, 0.410587) ,
+      rgb (0.769353, 0.707035, 0.408516) ,
+      rgb (0.773486, 0.710373, 0.406422) ,
+      rgb (0.777651, 0.713719, 0.404112) ,
+      rgb (0.781795, 0.717074, 0.401966) ,
+      rgb (0.785965, 0.720438, 0.399613) ,
+      rgb (0.790116, 0.72381, 0.397423) ,
+      rgb (0.794298, 0.72719, 0.395016) ,
+      rgb (0.79848, 0.73058, 0.392597) ,
+      rgb (0.802667, 0.733978, 0.390153) ,
+      rgb (0.806859, 0.737385, 0.387684) ,
+      rgb (0.811054, 0.740801, 0.385198) ,
+      rgb (0.815274, 0.744226, 0.382504) ,
+      rgb (0.819499, 0.747659, 0.379785) ,
+      rgb (0.823729, 0.751101, 0.377043) ,
+      rgb (0.827959, 0.754553, 0.374292) ,
+      rgb (0.832192, 0.758014, 0.371529) ,
+      rgb (0.836429, 0.761483, 0.368747) ,
+      rgb (0.840693, 0.764962, 0.365746) ,
+      rgb (0.844957, 0.76845, 0.362741) ,
+      rgb (0.849223, 0.771947, 0.359729) ,
+      rgb (0.853515, 0.775454, 0.3565) ,
+      rgb (0.857809, 0.778969, 0.353259) ,
+      rgb (0.862105, 0.782494, 0.350011) ,
+      rgb (0.866421, 0.786028, 0.346571) ,
+      rgb (0.870717, 0.789572, 0.343333) ,
+      rgb (0.875057, 0.793125, 0.339685) ,
+      rgb (0.879378, 0.796687, 0.336241) ,
+      rgb (0.88372, 0.800258, 0.332599) ,
+      rgb (0.888081, 0.803839, 0.32877) ,
+      rgb (0.89244, 0.80743, 0.324968) ,
+      rgb (0.896818, 0.81103, 0.320982) ,
+      rgb (0.901195, 0.814639, 0.317021) ,
+      rgb (0.905589, 0.818257, 0.312889) ,
+      rgb (0.91, 0.821885, 0.308594) ,
+      rgb (0.914407, 0.825522, 0.304348) ,
+      rgb (0.918828, 0.829168, 0.29996) ,
+      rgb (0.923279, 0.832822, 0.295244) ,
+      rgb (0.927724, 0.836486, 0.290611) ,
+      rgb (0.93218, 0.840159, 0.28588) ,
+      rgb (0.93666, 0.843841, 0.280876) ,
+      rgb (0.941147, 0.84753, 0.275815) ,
+      rgb (0.945654, 0.851228, 0.270532) ,
+      rgb (0.950178, 0.854933, 0.265085) ,
+      rgb (0.954725, 0.858646, 0.259365) ,
+      rgb (0.959284, 0.862365, 0.253563) ,
+      rgb (0.963872, 0.866089, 0.247445) ,
+      rgb (0.968469, 0.869819, 0.24131) ,
+      rgb (0.973114, 0.87355, 0.234677) ,
+      rgb (0.97778, 0.877281, 0.227954) ,
+      rgb (0.982497, 0.881008, 0.220878) ,
+      rgb (0.987293, 0.884718, 0.213336) ,
+      rgb (0.992218, 0.888385, 0.205468) ,
+      rgb (0.994847, 0.892954, 0.203445) ,
+      rgb (0.995249, 0.898384, 0.207561) ,
+      rgb (0.995503, 0.903866, 0.21237) ,
+      rgb (0.995737, 0.909344, 0.217772)
+      });
 
 
 list_data inferno = list_data(new pen[] {
-  rgb (0.001462, 0.000466, 0.013866) ,
-  rgb (0.002267, 0.00127, 0.01857) ,
-  rgb (0.003299, 0.002249, 0.024239) ,
-  rgb (0.004547, 0.003392, 0.030909) ,
-  rgb (0.006006, 0.004692, 0.038558) ,
-  rgb (0.007676, 0.006136, 0.046836) ,
-  rgb (0.009561, 0.007713, 0.055143) ,
-  rgb (0.011663, 0.009417, 0.06346) ,
-  rgb (0.013995, 0.011225, 0.071862) ,
-  rgb (0.016561, 0.013136, 0.080282) ,
-  rgb (0.019373, 0.015133, 0.088767) ,
-  rgb (0.022447, 0.017199, 0.097327) ,
-  rgb (0.025793, 0.019331, 0.10593) ,
-  rgb (0.029432, 0.021503, 0.114621) ,
-  rgb (0.033385, 0.023702, 0.123397) ,
-  rgb (0.037668, 0.025921, 0.132232) ,
-  rgb (0.042253, 0.028139, 0.141141) ,
-  rgb (0.046915, 0.030324, 0.150164) ,
-  rgb (0.051644, 0.032474, 0.159254) ,
-  rgb (0.056449, 0.034569, 0.168414) ,
-  rgb (0.06134, 0.03659, 0.177642) ,
-  rgb (0.066331, 0.038504, 0.186962) ,
-  rgb (0.071429, 0.040294, 0.196354) ,
-  rgb (0.076637, 0.041905, 0.205799) ,
-  rgb (0.081962, 0.043328, 0.215289) ,
-  rgb (0.087411, 0.044556, 0.224813) ,
-  rgb (0.09299, 0.045583, 0.234358) ,
-  rgb (0.098702, 0.046402, 0.243904) ,
-  rgb (0.104551, 0.047008, 0.25343) ,
-  rgb (0.110536, 0.047399, 0.262912) ,
-  rgb (0.116656, 0.047574, 0.272321) ,
-  rgb (0.122908, 0.047536, 0.281624) ,
-  rgb (0.129285, 0.047293, 0.290788) ,
-  rgb (0.135778, 0.046856, 0.299776) ,
-  rgb (0.142378, 0.046242, 0.308553) ,
-  rgb (0.149073, 0.045468, 0.317085) ,
-  rgb (0.15585, 0.044559, 0.325338) ,
-  rgb (0.162689, 0.043554, 0.333277) ,
-  rgb (0.169575, 0.042489, 0.340874) ,
-  rgb (0.176493, 0.041402, 0.348111) ,
-  rgb (0.183429, 0.040329, 0.354971) ,
-  rgb (0.190367, 0.039309, 0.361447) ,
-  rgb (0.197297, 0.0384, 0.367535) ,
-  rgb (0.204209, 0.037632, 0.373238) ,
-  rgb (0.211095, 0.03703, 0.378563) ,
-  rgb (0.217949, 0.036615, 0.383522) ,
-  rgb (0.224763, 0.036405, 0.388129) ,
-  rgb (0.231538, 0.036405, 0.3924) ,
-  rgb (0.238273, 0.036621, 0.396353) ,
-  rgb (0.244967, 0.037055, 0.400007) ,
-  rgb (0.25162, 0.037705, 0.403378) ,
-  rgb (0.258234, 0.038571, 0.406485) ,
-  rgb (0.26481, 0.039647, 0.409345) ,
-  rgb (0.271347, 0.040922, 0.411976) ,
-  rgb (0.27785, 0.042353, 0.414392) ,
-  rgb (0.284321, 0.043933, 0.416608) ,
-  rgb (0.290763, 0.045644, 0.418637) ,
-  rgb (0.297178, 0.04747, 0.420491) ,
-  rgb (0.303568, 0.049396, 0.422182) ,
-  rgb (0.309935, 0.051407, 0.423721) ,
-  rgb (0.316282, 0.05349, 0.425116) ,
-  rgb (0.32261, 0.055634, 0.426377) ,
-  rgb (0.328921, 0.057827, 0.427511) ,
-  rgb (0.335217, 0.06006, 0.428524) ,
-  rgb (0.3415, 0.062325, 0.429425) ,
-  rgb (0.347771, 0.064616, 0.430217) ,
-  rgb (0.354032, 0.066925, 0.430906) ,
-  rgb (0.360284, 0.069247, 0.431497) ,
-  rgb (0.366529, 0.071579, 0.431994) ,
-  rgb (0.372768, 0.073915, 0.4324) ,
-  rgb (0.379001, 0.076253, 0.432719) ,
-  rgb (0.385228, 0.078591, 0.432955) ,
-  rgb (0.391453, 0.080927, 0.433109) ,
-  rgb (0.397674, 0.083257, 0.433183) ,
-  rgb (0.403894, 0.08558, 0.433179) ,
-  rgb (0.410113, 0.087896, 0.433098) ,
-  rgb (0.416331, 0.090203, 0.432943) ,
-  rgb (0.422549, 0.092501, 0.432714) ,
-  rgb (0.428768, 0.09479, 0.432412) ,
-  rgb (0.434987, 0.097069, 0.432039) ,
-  rgb (0.441207, 0.099338, 0.431594) ,
-  rgb (0.447428, 0.101597, 0.43108) ,
-  rgb (0.453651, 0.103848, 0.430498) ,
-  rgb (0.459875, 0.106089, 0.429846) ,
-  rgb (0.4661, 0.108322, 0.429125) ,
-  rgb (0.472328, 0.110547, 0.428334) ,
-  rgb (0.478558, 0.112764, 0.427475) ,
-  rgb (0.484789, 0.114974, 0.426548) ,
-  rgb (0.491022, 0.117179, 0.425552) ,
-  rgb (0.497257, 0.119379, 0.424488) ,
-  rgb (0.503493, 0.121575, 0.423356) ,
-  rgb (0.50973, 0.123769, 0.422156) ,
-  rgb (0.515967, 0.12596, 0.420887) ,
-  rgb (0.522206, 0.12815, 0.419549) ,
-  rgb (0.528444, 0.130341, 0.418142) ,
-  rgb (0.534683, 0.132534, 0.416667) ,
-  rgb (0.54092, 0.134729, 0.415123) ,
-  rgb (0.547157, 0.136929, 0.413511) ,
-  rgb (0.553392, 0.139134, 0.411829) ,
-  rgb (0.559624, 0.141346, 0.410078) ,
-  rgb (0.565854, 0.143567, 0.408258) ,
-  rgb (0.572081, 0.145797, 0.406369) ,
-  rgb (0.578304, 0.148039, 0.404411) ,
-  rgb (0.584521, 0.150294, 0.402385) ,
-  rgb (0.590734, 0.152563, 0.40029) ,
-  rgb (0.59694, 0.154848, 0.398125) ,
-  rgb (0.603139, 0.157151, 0.395891) ,
-  rgb (0.60933, 0.159474, 0.393589) ,
-  rgb (0.615513, 0.161817, 0.391219) ,
-  rgb (0.621685, 0.164184, 0.388781) ,
-  rgb (0.627847, 0.166575, 0.386276) ,
-  rgb (0.633998, 0.168992, 0.383704) ,
-  rgb (0.640135, 0.171438, 0.381065) ,
-  rgb (0.64626, 0.173914, 0.378359) ,
-  rgb (0.652369, 0.176421, 0.375586) ,
-  rgb (0.658463, 0.178962, 0.372748) ,
-  rgb (0.66454, 0.181539, 0.369846) ,
-  rgb (0.670599, 0.184153, 0.366879) ,
-  rgb (0.676638, 0.186807, 0.363849) ,
-  rgb (0.682656, 0.189501, 0.360757) ,
-  rgb (0.688653, 0.192239, 0.357603) ,
-  rgb (0.694627, 0.195021, 0.354388) ,
-  rgb (0.700576, 0.197851, 0.351113) ,
-  rgb (0.7065, 0.200728, 0.347777) ,
-  rgb (0.712396, 0.203656, 0.344383) ,
-  rgb (0.718264, 0.206636, 0.340931) ,
-  rgb (0.724103, 0.20967, 0.337424) ,
-  rgb (0.729909, 0.212759, 0.333861) ,
-  rgb (0.735683, 0.215906, 0.330245) ,
-  rgb (0.741423, 0.219112, 0.326576) ,
-  rgb (0.747127, 0.222378, 0.322856) ,
-  rgb (0.752794, 0.225706, 0.319085) ,
-  rgb (0.758422, 0.229097, 0.315266) ,
-  rgb (0.76401, 0.232554, 0.311399) ,
-  rgb (0.769556, 0.236077, 0.307485) ,
-  rgb (0.775059, 0.239667, 0.303526) ,
-  rgb (0.780517, 0.243327, 0.299523) ,
-  rgb (0.785929, 0.247056, 0.295477) ,
-  rgb (0.791293, 0.250856, 0.29139) ,
-  rgb (0.796607, 0.254728, 0.287264) ,
-  rgb (0.801871, 0.258674, 0.283099) ,
-  rgb (0.807082, 0.262692, 0.278898) ,
-  rgb (0.812239, 0.266786, 0.274661) ,
-  rgb (0.817341, 0.270954, 0.27039) ,
-  rgb (0.822386, 0.275197, 0.266085) ,
-  rgb (0.827372, 0.279517, 0.26175) ,
-  rgb (0.832299, 0.283913, 0.257383) ,
-  rgb (0.837165, 0.288385, 0.252988) ,
-  rgb (0.841969, 0.292933, 0.248564) ,
-  rgb (0.846709, 0.297559, 0.244113) ,
-  rgb (0.851384, 0.30226, 0.239636) ,
-  rgb (0.855992, 0.307038, 0.235133) ,
-  rgb (0.860533, 0.311892, 0.230606) ,
-  rgb (0.865006, 0.316822, 0.226055) ,
-  rgb (0.869409, 0.321827, 0.221482) ,
-  rgb (0.873741, 0.326906, 0.216886) ,
-  rgb (0.878001, 0.33206, 0.212268) ,
-  rgb (0.882188, 0.337287, 0.207628) ,
-  rgb (0.886302, 0.342586, 0.202968) ,
-  rgb (0.890341, 0.347957, 0.198286) ,
-  rgb (0.894305, 0.353399, 0.193584) ,
-  rgb (0.898192, 0.358911, 0.18886) ,
-  rgb (0.902003, 0.364492, 0.184116) ,
-  rgb (0.905735, 0.37014, 0.17935) ,
-  rgb (0.90939, 0.375856, 0.174563) ,
-  rgb (0.912966, 0.381636, 0.169755) ,
-  rgb (0.916462, 0.387481, 0.164924) ,
-  rgb (0.919879, 0.393389, 0.16007) ,
-  rgb (0.923215, 0.399359, 0.155193) ,
-  rgb (0.92647, 0.405389, 0.150292) ,
-  rgb (0.929644, 0.411479, 0.145367) ,
-  rgb (0.932737, 0.417627, 0.140417) ,
-  rgb (0.935747, 0.423831, 0.13544) ,
-  rgb (0.938675, 0.430091, 0.130438) ,
-  rgb (0.941521, 0.436405, 0.125409) ,
-  rgb (0.944285, 0.442772, 0.120354) ,
-  rgb (0.946965, 0.449191, 0.115272) ,
-  rgb (0.949562, 0.45566, 0.110164) ,
-  rgb (0.952075, 0.462178, 0.105031) ,
-  rgb (0.954506, 0.468744, 0.099874) ,
-  rgb (0.956852, 0.475356, 0.094695) ,
-  rgb (0.959114, 0.482014, 0.089499) ,
-  rgb (0.961293, 0.488716, 0.084289) ,
-  rgb (0.963387, 0.495462, 0.079073) ,
-  rgb (0.965397, 0.502249, 0.073859) ,
-  rgb (0.967322, 0.509078, 0.068659) ,
-  rgb (0.969163, 0.515946, 0.063488) ,
-  rgb (0.970919, 0.522853, 0.058367) ,
-  rgb (0.97259, 0.529798, 0.053324) ,
-  rgb (0.974176, 0.53678, 0.048392) ,
-  rgb (0.975677, 0.543798, 0.043618) ,
-  rgb (0.977092, 0.55085, 0.03905) ,
-  rgb (0.978422, 0.557937, 0.034931) ,
-  rgb (0.979666, 0.565057, 0.031409) ,
-  rgb (0.980824, 0.572209, 0.028508) ,
-  rgb (0.981895, 0.579392, 0.02625) ,
-  rgb (0.982881, 0.586606, 0.024661) ,
-  rgb (0.983779, 0.593849, 0.02377) ,
-  rgb (0.984591, 0.601122, 0.023606) ,
-  rgb (0.985315, 0.608422, 0.024202) ,
-  rgb (0.985952, 0.61575, 0.025592) ,
-  rgb (0.986502, 0.623105, 0.027814) ,
-  rgb (0.986964, 0.630485, 0.030908) ,
-  rgb (0.987337, 0.63789, 0.034916) ,
-  rgb (0.987622, 0.64532, 0.039886) ,
-  rgb (0.987819, 0.652773, 0.045581) ,
-  rgb (0.987926, 0.66025, 0.05175) ,
-  rgb (0.987945, 0.667748, 0.058329) ,
-  rgb (0.987874, 0.675267, 0.065257) ,
-  rgb (0.987714, 0.682807, 0.072489) ,
-  rgb (0.987464, 0.690366, 0.07999) ,
-  rgb (0.987124, 0.697944, 0.087731) ,
-  rgb (0.986694, 0.70554, 0.095694) ,
-  rgb (0.986175, 0.713153, 0.103863) ,
-  rgb (0.985566, 0.720782, 0.112229) ,
-  rgb (0.984865, 0.728427, 0.120785) ,
-  rgb (0.984075, 0.736087, 0.129527) ,
-  rgb (0.983196, 0.743758, 0.138453) ,
-  rgb (0.982228, 0.751442, 0.147565) ,
-  rgb (0.981173, 0.759135, 0.156863) ,
-  rgb (0.980032, 0.766837, 0.166353) ,
-  rgb (0.978806, 0.774545, 0.176037) ,
-  rgb (0.977497, 0.782258, 0.185923) ,
-  rgb (0.976108, 0.789974, 0.196018) ,
-  rgb (0.974638, 0.797692, 0.206332) ,
-  rgb (0.973088, 0.805409, 0.216877) ,
-  rgb (0.971468, 0.813122, 0.227658) ,
-  rgb (0.969783, 0.820825, 0.238686) ,
-  rgb (0.968041, 0.828515, 0.249972) ,
-  rgb (0.966243, 0.836191, 0.261534) ,
-  rgb (0.964394, 0.843848, 0.273391) ,
-  rgb (0.962517, 0.851476, 0.285546) ,
-  rgb (0.960626, 0.859069, 0.29801) ,
-  rgb (0.95872, 0.866624, 0.31082) ,
-  rgb (0.956834, 0.874129, 0.323974) ,
-  rgb (0.954997, 0.881569, 0.337475) ,
-  rgb (0.953215, 0.888942, 0.351369) ,
-  rgb (0.951546, 0.896226, 0.365627) ,
-  rgb (0.950018, 0.903409, 0.380271) ,
-  rgb (0.948683, 0.910473, 0.395289) ,
-  rgb (0.947594, 0.917399, 0.410665) ,
-  rgb (0.946809, 0.924168, 0.426373) ,
-  rgb (0.946392, 0.930761, 0.442367) ,
-  rgb (0.946403, 0.937159, 0.458592) ,
-  rgb (0.946903, 0.943348, 0.47497) ,
-  rgb (0.947937, 0.949318, 0.491426) ,
-  rgb (0.949545, 0.955063, 0.50786) ,
-  rgb (0.95174, 0.960587, 0.524203) ,
-  rgb (0.954529, 0.965896, 0.540361) ,
-  rgb (0.957896, 0.971003, 0.556275) ,
-  rgb (0.961812, 0.975924, 0.571925) ,
-  rgb (0.966249, 0.980678, 0.587206) ,
-  rgb (0.971162, 0.985282, 0.602154) ,
-  rgb (0.976511, 0.989753, 0.61676) ,
-  rgb (0.982257, 0.994109, 0.631017) ,
-  rgb (0.988362, 0.998364, 0.644924)
-});
+    rgb (0.001462, 0.000466, 0.013866) ,
+      rgb (0.002267, 0.00127, 0.01857) ,
+      rgb (0.003299, 0.002249, 0.024239) ,
+      rgb (0.004547, 0.003392, 0.030909) ,
+      rgb (0.006006, 0.004692, 0.038558) ,
+      rgb (0.007676, 0.006136, 0.046836) ,
+      rgb (0.009561, 0.007713, 0.055143) ,
+      rgb (0.011663, 0.009417, 0.06346) ,
+      rgb (0.013995, 0.011225, 0.071862) ,
+      rgb (0.016561, 0.013136, 0.080282) ,
+      rgb (0.019373, 0.015133, 0.088767) ,
+      rgb (0.022447, 0.017199, 0.097327) ,
+      rgb (0.025793, 0.019331, 0.10593) ,
+      rgb (0.029432, 0.021503, 0.114621) ,
+      rgb (0.033385, 0.023702, 0.123397) ,
+      rgb (0.037668, 0.025921, 0.132232) ,
+      rgb (0.042253, 0.028139, 0.141141) ,
+      rgb (0.046915, 0.030324, 0.150164) ,
+      rgb (0.051644, 0.032474, 0.159254) ,
+      rgb (0.056449, 0.034569, 0.168414) ,
+      rgb (0.06134, 0.03659, 0.177642) ,
+      rgb (0.066331, 0.038504, 0.186962) ,
+      rgb (0.071429, 0.040294, 0.196354) ,
+      rgb (0.076637, 0.041905, 0.205799) ,
+      rgb (0.081962, 0.043328, 0.215289) ,
+      rgb (0.087411, 0.044556, 0.224813) ,
+      rgb (0.09299, 0.045583, 0.234358) ,
+      rgb (0.098702, 0.046402, 0.243904) ,
+      rgb (0.104551, 0.047008, 0.25343) ,
+      rgb (0.110536, 0.047399, 0.262912) ,
+      rgb (0.116656, 0.047574, 0.272321) ,
+      rgb (0.122908, 0.047536, 0.281624) ,
+      rgb (0.129285, 0.047293, 0.290788) ,
+      rgb (0.135778, 0.046856, 0.299776) ,
+      rgb (0.142378, 0.046242, 0.308553) ,
+      rgb (0.149073, 0.045468, 0.317085) ,
+      rgb (0.15585, 0.044559, 0.325338) ,
+      rgb (0.162689, 0.043554, 0.333277) ,
+      rgb (0.169575, 0.042489, 0.340874) ,
+      rgb (0.176493, 0.041402, 0.348111) ,
+      rgb (0.183429, 0.040329, 0.354971) ,
+      rgb (0.190367, 0.039309, 0.361447) ,
+      rgb (0.197297, 0.0384, 0.367535) ,
+      rgb (0.204209, 0.037632, 0.373238) ,
+      rgb (0.211095, 0.03703, 0.378563) ,
+      rgb (0.217949, 0.036615, 0.383522) ,
+      rgb (0.224763, 0.036405, 0.388129) ,
+      rgb (0.231538, 0.036405, 0.3924) ,
+      rgb (0.238273, 0.036621, 0.396353) ,
+      rgb (0.244967, 0.037055, 0.400007) ,
+      rgb (0.25162, 0.037705, 0.403378) ,
+      rgb (0.258234, 0.038571, 0.406485) ,
+      rgb (0.26481, 0.039647, 0.409345) ,
+      rgb (0.271347, 0.040922, 0.411976) ,
+      rgb (0.27785, 0.042353, 0.414392) ,
+      rgb (0.284321, 0.043933, 0.416608) ,
+      rgb (0.290763, 0.045644, 0.418637) ,
+      rgb (0.297178, 0.04747, 0.420491) ,
+      rgb (0.303568, 0.049396, 0.422182) ,
+      rgb (0.309935, 0.051407, 0.423721) ,
+      rgb (0.316282, 0.05349, 0.425116) ,
+      rgb (0.32261, 0.055634, 0.426377) ,
+      rgb (0.328921, 0.057827, 0.427511) ,
+      rgb (0.335217, 0.06006, 0.428524) ,
+      rgb (0.3415, 0.062325, 0.429425) ,
+      rgb (0.347771, 0.064616, 0.430217) ,
+      rgb (0.354032, 0.066925, 0.430906) ,
+      rgb (0.360284, 0.069247, 0.431497) ,
+      rgb (0.366529, 0.071579, 0.431994) ,
+      rgb (0.372768, 0.073915, 0.4324) ,
+      rgb (0.379001, 0.076253, 0.432719) ,
+      rgb (0.385228, 0.078591, 0.432955) ,
+      rgb (0.391453, 0.080927, 0.433109) ,
+      rgb (0.397674, 0.083257, 0.433183) ,
+      rgb (0.403894, 0.08558, 0.433179) ,
+      rgb (0.410113, 0.087896, 0.433098) ,
+      rgb (0.416331, 0.090203, 0.432943) ,
+      rgb (0.422549, 0.092501, 0.432714) ,
+      rgb (0.428768, 0.09479, 0.432412) ,
+      rgb (0.434987, 0.097069, 0.432039) ,
+      rgb (0.441207, 0.099338, 0.431594) ,
+      rgb (0.447428, 0.101597, 0.43108) ,
+      rgb (0.453651, 0.103848, 0.430498) ,
+      rgb (0.459875, 0.106089, 0.429846) ,
+      rgb (0.4661, 0.108322, 0.429125) ,
+      rgb (0.472328, 0.110547, 0.428334) ,
+      rgb (0.478558, 0.112764, 0.427475) ,
+      rgb (0.484789, 0.114974, 0.426548) ,
+      rgb (0.491022, 0.117179, 0.425552) ,
+      rgb (0.497257, 0.119379, 0.424488) ,
+      rgb (0.503493, 0.121575, 0.423356) ,
+      rgb (0.50973, 0.123769, 0.422156) ,
+      rgb (0.515967, 0.12596, 0.420887) ,
+      rgb (0.522206, 0.12815, 0.419549) ,
+      rgb (0.528444, 0.130341, 0.418142) ,
+      rgb (0.534683, 0.132534, 0.416667) ,
+      rgb (0.54092, 0.134729, 0.415123) ,
+      rgb (0.547157, 0.136929, 0.413511) ,
+      rgb (0.553392, 0.139134, 0.411829) ,
+      rgb (0.559624, 0.141346, 0.410078) ,
+      rgb (0.565854, 0.143567, 0.408258) ,
+      rgb (0.572081, 0.145797, 0.406369) ,
+      rgb (0.578304, 0.148039, 0.404411) ,
+      rgb (0.584521, 0.150294, 0.402385) ,
+      rgb (0.590734, 0.152563, 0.40029) ,
+      rgb (0.59694, 0.154848, 0.398125) ,
+      rgb (0.603139, 0.157151, 0.395891) ,
+      rgb (0.60933, 0.159474, 0.393589) ,
+      rgb (0.615513, 0.161817, 0.391219) ,
+      rgb (0.621685, 0.164184, 0.388781) ,
+      rgb (0.627847, 0.166575, 0.386276) ,
+      rgb (0.633998, 0.168992, 0.383704) ,
+      rgb (0.640135, 0.171438, 0.381065) ,
+      rgb (0.64626, 0.173914, 0.378359) ,
+      rgb (0.652369, 0.176421, 0.375586) ,
+      rgb (0.658463, 0.178962, 0.372748) ,
+      rgb (0.66454, 0.181539, 0.369846) ,
+      rgb (0.670599, 0.184153, 0.366879) ,
+      rgb (0.676638, 0.186807, 0.363849) ,
+      rgb (0.682656, 0.189501, 0.360757) ,
+      rgb (0.688653, 0.192239, 0.357603) ,
+      rgb (0.694627, 0.195021, 0.354388) ,
+      rgb (0.700576, 0.197851, 0.351113) ,
+      rgb (0.7065, 0.200728, 0.347777) ,
+      rgb (0.712396, 0.203656, 0.344383) ,
+      rgb (0.718264, 0.206636, 0.340931) ,
+      rgb (0.724103, 0.20967, 0.337424) ,
+      rgb (0.729909, 0.212759, 0.333861) ,
+      rgb (0.735683, 0.215906, 0.330245) ,
+      rgb (0.741423, 0.219112, 0.326576) ,
+      rgb (0.747127, 0.222378, 0.322856) ,
+      rgb (0.752794, 0.225706, 0.319085) ,
+      rgb (0.758422, 0.229097, 0.315266) ,
+      rgb (0.76401, 0.232554, 0.311399) ,
+      rgb (0.769556, 0.236077, 0.307485) ,
+      rgb (0.775059, 0.239667, 0.303526) ,
+      rgb (0.780517, 0.243327, 0.299523) ,
+      rgb (0.785929, 0.247056, 0.295477) ,
+      rgb (0.791293, 0.250856, 0.29139) ,
+      rgb (0.796607, 0.254728, 0.287264) ,
+      rgb (0.801871, 0.258674, 0.283099) ,
+      rgb (0.807082, 0.262692, 0.278898) ,
+      rgb (0.812239, 0.266786, 0.274661) ,
+      rgb (0.817341, 0.270954, 0.27039) ,
+      rgb (0.822386, 0.275197, 0.266085) ,
+      rgb (0.827372, 0.279517, 0.26175) ,
+      rgb (0.832299, 0.283913, 0.257383) ,
+      rgb (0.837165, 0.288385, 0.252988) ,
+      rgb (0.841969, 0.292933, 0.248564) ,
+      rgb (0.846709, 0.297559, 0.244113) ,
+      rgb (0.851384, 0.30226, 0.239636) ,
+      rgb (0.855992, 0.307038, 0.235133) ,
+      rgb (0.860533, 0.311892, 0.230606) ,
+      rgb (0.865006, 0.316822, 0.226055) ,
+      rgb (0.869409, 0.321827, 0.221482) ,
+      rgb (0.873741, 0.326906, 0.216886) ,
+      rgb (0.878001, 0.33206, 0.212268) ,
+      rgb (0.882188, 0.337287, 0.207628) ,
+      rgb (0.886302, 0.342586, 0.202968) ,
+      rgb (0.890341, 0.347957, 0.198286) ,
+      rgb (0.894305, 0.353399, 0.193584) ,
+      rgb (0.898192, 0.358911, 0.18886) ,
+      rgb (0.902003, 0.364492, 0.184116) ,
+      rgb (0.905735, 0.37014, 0.17935) ,
+      rgb (0.90939, 0.375856, 0.174563) ,
+      rgb (0.912966, 0.381636, 0.169755) ,
+      rgb (0.916462, 0.387481, 0.164924) ,
+      rgb (0.919879, 0.393389, 0.16007) ,
+      rgb (0.923215, 0.399359, 0.155193) ,
+      rgb (0.92647, 0.405389, 0.150292) ,
+      rgb (0.929644, 0.411479, 0.145367) ,
+      rgb (0.932737, 0.417627, 0.140417) ,
+      rgb (0.935747, 0.423831, 0.13544) ,
+      rgb (0.938675, 0.430091, 0.130438) ,
+      rgb (0.941521, 0.436405, 0.125409) ,
+      rgb (0.944285, 0.442772, 0.120354) ,
+      rgb (0.946965, 0.449191, 0.115272) ,
+      rgb (0.949562, 0.45566, 0.110164) ,
+      rgb (0.952075, 0.462178, 0.105031) ,
+      rgb (0.954506, 0.468744, 0.099874) ,
+      rgb (0.956852, 0.475356, 0.094695) ,
+      rgb (0.959114, 0.482014, 0.089499) ,
+      rgb (0.961293, 0.488716, 0.084289) ,
+      rgb (0.963387, 0.495462, 0.079073) ,
+      rgb (0.965397, 0.502249, 0.073859) ,
+      rgb (0.967322, 0.509078, 0.068659) ,
+      rgb (0.969163, 0.515946, 0.063488) ,
+      rgb (0.970919, 0.522853, 0.058367) ,
+      rgb (0.97259, 0.529798, 0.053324) ,
+      rgb (0.974176, 0.53678, 0.048392) ,
+      rgb (0.975677, 0.543798, 0.043618) ,
+      rgb (0.977092, 0.55085, 0.03905) ,
+      rgb (0.978422, 0.557937, 0.034931) ,
+      rgb (0.979666, 0.565057, 0.031409) ,
+      rgb (0.980824, 0.572209, 0.028508) ,
+      rgb (0.981895, 0.579392, 0.02625) ,
+      rgb (0.982881, 0.586606, 0.024661) ,
+      rgb (0.983779, 0.593849, 0.02377) ,
+      rgb (0.984591, 0.601122, 0.023606) ,
+      rgb (0.985315, 0.608422, 0.024202) ,
+      rgb (0.985952, 0.61575, 0.025592) ,
+      rgb (0.986502, 0.623105, 0.027814) ,
+      rgb (0.986964, 0.630485, 0.030908) ,
+      rgb (0.987337, 0.63789, 0.034916) ,
+      rgb (0.987622, 0.64532, 0.039886) ,
+      rgb (0.987819, 0.652773, 0.045581) ,
+      rgb (0.987926, 0.66025, 0.05175) ,
+      rgb (0.987945, 0.667748, 0.058329) ,
+      rgb (0.987874, 0.675267, 0.065257) ,
+      rgb (0.987714, 0.682807, 0.072489) ,
+      rgb (0.987464, 0.690366, 0.07999) ,
+      rgb (0.987124, 0.697944, 0.087731) ,
+      rgb (0.986694, 0.70554, 0.095694) ,
+      rgb (0.986175, 0.713153, 0.103863) ,
+      rgb (0.985566, 0.720782, 0.112229) ,
+      rgb (0.984865, 0.728427, 0.120785) ,
+      rgb (0.984075, 0.736087, 0.129527) ,
+      rgb (0.983196, 0.743758, 0.138453) ,
+      rgb (0.982228, 0.751442, 0.147565) ,
+      rgb (0.981173, 0.759135, 0.156863) ,
+      rgb (0.980032, 0.766837, 0.166353) ,
+      rgb (0.978806, 0.774545, 0.176037) ,
+      rgb (0.977497, 0.782258, 0.185923) ,
+      rgb (0.976108, 0.789974, 0.196018) ,
+      rgb (0.974638, 0.797692, 0.206332) ,
+      rgb (0.973088, 0.805409, 0.216877) ,
+      rgb (0.971468, 0.813122, 0.227658) ,
+      rgb (0.969783, 0.820825, 0.238686) ,
+      rgb (0.968041, 0.828515, 0.249972) ,
+      rgb (0.966243, 0.836191, 0.261534) ,
+      rgb (0.964394, 0.843848, 0.273391) ,
+      rgb (0.962517, 0.851476, 0.285546) ,
+      rgb (0.960626, 0.859069, 0.29801) ,
+      rgb (0.95872, 0.866624, 0.31082) ,
+      rgb (0.956834, 0.874129, 0.323974) ,
+      rgb (0.954997, 0.881569, 0.337475) ,
+      rgb (0.953215, 0.888942, 0.351369) ,
+      rgb (0.951546, 0.896226, 0.365627) ,
+      rgb (0.950018, 0.903409, 0.380271) ,
+      rgb (0.948683, 0.910473, 0.395289) ,
+      rgb (0.947594, 0.917399, 0.410665) ,
+      rgb (0.946809, 0.924168, 0.426373) ,
+      rgb (0.946392, 0.930761, 0.442367) ,
+      rgb (0.946403, 0.937159, 0.458592) ,
+      rgb (0.946903, 0.943348, 0.47497) ,
+      rgb (0.947937, 0.949318, 0.491426) ,
+      rgb (0.949545, 0.955063, 0.50786) ,
+      rgb (0.95174, 0.960587, 0.524203) ,
+      rgb (0.954529, 0.965896, 0.540361) ,
+      rgb (0.957896, 0.971003, 0.556275) ,
+      rgb (0.961812, 0.975924, 0.571925) ,
+      rgb (0.966249, 0.980678, 0.587206) ,
+      rgb (0.971162, 0.985282, 0.602154) ,
+      rgb (0.976511, 0.989753, 0.61676) ,
+      rgb (0.982257, 0.994109, 0.631017) ,
+      rgb (0.988362, 0.998364, 0.644924)
+      });
 
 
 list_data magma = list_data(new pen[] {
-  rgb (0.001462, 0.000466, 0.013866) ,
-  rgb (0.002258, 0.001295, 0.018331) ,
-  rgb (0.003279, 0.002305, 0.023708) ,
-  rgb (0.004512, 0.00349, 0.029965) ,
-  rgb (0.00595, 0.004843, 0.03713) ,
-  rgb (0.007588, 0.006356, 0.044973) ,
-  rgb (0.009426, 0.008022, 0.052844) ,
-  rgb (0.011465, 0.009828, 0.06075) ,
-  rgb (0.013708, 0.011771, 0.068667) ,
-  rgb (0.016156, 0.01384, 0.076603) ,
-  rgb (0.018815, 0.016026, 0.084584) ,
-  rgb (0.021692, 0.01832, 0.09261) ,
-  rgb (0.024792, 0.020715, 0.100676) ,
-  rgb (0.028123, 0.023201, 0.108787) ,
-  rgb (0.031696, 0.025765, 0.116965) ,
-  rgb (0.03552, 0.028397, 0.125209) ,
-  rgb (0.039608, 0.03109, 0.133515) ,
-  rgb (0.04383, 0.03383, 0.141886) ,
-  rgb (0.048062, 0.036607, 0.150327) ,
-  rgb (0.05232, 0.039407, 0.158841) ,
-  rgb (0.056615, 0.04216, 0.167446) ,
-  rgb (0.060949, 0.044794, 0.176129) ,
-  rgb (0.06533, 0.047318, 0.184892) ,
-  rgb (0.069764, 0.049726, 0.193735) ,
-  rgb (0.074257, 0.052017, 0.20266) ,
-  rgb (0.078815, 0.054184, 0.211667) ,
-  rgb (0.083446, 0.056225, 0.220755) ,
-  rgb (0.088155, 0.058133, 0.229922) ,
-  rgb (0.092949, 0.059904, 0.239164) ,
-  rgb (0.097833, 0.061531, 0.248477) ,
-  rgb (0.102815, 0.06301, 0.257854) ,
-  rgb (0.107899, 0.064335, 0.267289) ,
-  rgb (0.113094, 0.065492, 0.276784) ,
-  rgb (0.118405, 0.066479, 0.286321) ,
-  rgb (0.123833, 0.067295, 0.295879) ,
-  rgb (0.12938, 0.067935, 0.305443) ,
-  rgb (0.135053, 0.068391, 0.315) ,
-  rgb (0.140858, 0.068654, 0.324538) ,
-  rgb (0.146785, 0.068738, 0.334011) ,
-  rgb (0.152839, 0.068637, 0.343404) ,
-  rgb (0.159018, 0.068354, 0.352688) ,
-  rgb (0.165308, 0.067911, 0.361816) ,
-  rgb (0.171713, 0.067305, 0.370771) ,
-  rgb (0.178212, 0.066576, 0.379497) ,
-  rgb (0.184801, 0.065732, 0.387973) ,
-  rgb (0.19146, 0.064818, 0.396152) ,
-  rgb (0.198177, 0.063862, 0.404009) ,
-  rgb (0.204935, 0.062907, 0.411514) ,
-  rgb (0.211718, 0.061992, 0.418647) ,
-  rgb (0.218512, 0.061158, 0.425392) ,
-  rgb (0.225302, 0.060445, 0.431742) ,
-  rgb (0.232077, 0.059889, 0.437695) ,
-  rgb (0.238826, 0.059517, 0.443256) ,
-  rgb (0.245543, 0.059352, 0.448436) ,
-  rgb (0.25222, 0.059415, 0.453248) ,
-  rgb (0.258857, 0.059706, 0.45771) ,
-  rgb (0.265447, 0.060237, 0.46184) ,
-  rgb (0.271994, 0.060994, 0.46566) ,
-  rgb (0.278493, 0.061978, 0.46919) ,
-  rgb (0.284951, 0.063168, 0.472451) ,
-  rgb (0.291366, 0.064553, 0.475462) ,
-  rgb (0.29774, 0.066117, 0.478243) ,
-  rgb (0.304081, 0.067835, 0.480812) ,
-  rgb (0.310382, 0.069702, 0.483186) ,
-  rgb (0.316654, 0.07169, 0.48538) ,
-  rgb (0.322899, 0.073782, 0.487408) ,
-  rgb (0.329114, 0.075972, 0.489287) ,
-  rgb (0.335308, 0.078236, 0.491024) ,
-  rgb (0.341482, 0.080564, 0.492631) ,
-  rgb (0.347636, 0.082946, 0.494121) ,
-  rgb (0.353773, 0.085373, 0.495501) ,
-  rgb (0.359898, 0.087831, 0.496778) ,
-  rgb (0.366012, 0.090314, 0.49796) ,
-  rgb (0.372116, 0.092816, 0.499053) ,
-  rgb (0.378211, 0.095332, 0.500067) ,
-  rgb (0.384299, 0.097855, 0.501002) ,
-  rgb (0.390384, 0.100379, 0.501864) ,
-  rgb (0.396467, 0.102902, 0.502658) ,
-  rgb (0.402548, 0.10542, 0.503386) ,
-  rgb (0.408629, 0.10793, 0.504052) ,
-  rgb (0.414709, 0.110431, 0.504662) ,
-  rgb (0.420791, 0.11292, 0.505215) ,
-  rgb (0.426877, 0.115395, 0.505714) ,
-  rgb (0.432967, 0.117855, 0.50616) ,
-  rgb (0.439062, 0.120298, 0.506555) ,
-  rgb (0.445163, 0.122724, 0.506901) ,
-  rgb (0.451271, 0.125132, 0.507198) ,
-  rgb (0.457386, 0.127522, 0.507448) ,
-  rgb (0.463508, 0.129893, 0.507652) ,
-  rgb (0.46964, 0.132245, 0.507809) ,
-  rgb (0.47578, 0.134577, 0.507921) ,
-  rgb (0.481929, 0.136891, 0.507989) ,
-  rgb (0.488088, 0.139186, 0.508011) ,
-  rgb (0.494258, 0.141462, 0.507988) ,
-  rgb (0.500438, 0.143719, 0.50792) ,
-  rgb (0.506629, 0.145958, 0.507806) ,
-  rgb (0.512831, 0.148179, 0.507648) ,
-  rgb (0.519045, 0.150383, 0.507443) ,
-  rgb (0.52527, 0.152569, 0.507192) ,
-  rgb (0.531507, 0.154739, 0.506895) ,
-  rgb (0.537755, 0.156894, 0.506551) ,
-  rgb (0.544015, 0.159033, 0.506159) ,
-  rgb (0.550287, 0.161158, 0.505719) ,
-  rgb (0.556571, 0.163269, 0.50523) ,
-  rgb (0.562866, 0.165368, 0.504692) ,
-  rgb (0.569172, 0.167454, 0.504105) ,
-  rgb (0.57549, 0.16953, 0.503466) ,
-  rgb (0.581819, 0.171596, 0.502777) ,
-  rgb (0.588158, 0.173652, 0.502035) ,
-  rgb (0.594508, 0.175701, 0.501241) ,
-  rgb (0.600868, 0.177743, 0.500394) ,
-  rgb (0.607238, 0.179779, 0.499492) ,
-  rgb (0.613617, 0.181811, 0.498536) ,
-  rgb (0.620005, 0.18384, 0.497524) ,
-  rgb (0.626401, 0.185867, 0.496456) ,
-  rgb (0.632805, 0.187893, 0.495332) ,
-  rgb (0.639216, 0.189921, 0.49415) ,
-  rgb (0.645633, 0.191952, 0.49291) ,
-  rgb (0.652056, 0.193986, 0.491611) ,
-  rgb (0.658483, 0.196027, 0.490253) ,
-  rgb (0.664915, 0.198075, 0.488836) ,
-  rgb (0.671349, 0.200133, 0.487358) ,
-  rgb (0.677786, 0.202203, 0.485819) ,
-  rgb (0.684224, 0.204286, 0.484219) ,
-  rgb (0.690661, 0.206384, 0.482558) ,
-  rgb (0.697098, 0.208501, 0.480835) ,
-  rgb (0.703532, 0.210638, 0.479049) ,
-  rgb (0.709962, 0.212797, 0.477201) ,
-  rgb (0.716387, 0.214982, 0.47529) ,
-  rgb (0.722805, 0.217194, 0.473316) ,
-  rgb (0.729216, 0.219437, 0.471279) ,
-  rgb (0.735616, 0.221713, 0.46918) ,
-  rgb (0.742004, 0.224025, 0.467018) ,
-  rgb (0.748378, 0.226377, 0.464794) ,
-  rgb (0.754737, 0.228772, 0.462509) ,
-  rgb (0.761077, 0.231214, 0.460162) ,
-  rgb (0.767398, 0.233705, 0.457755) ,
-  rgb (0.773695, 0.236249, 0.455289) ,
-  rgb (0.779968, 0.238851, 0.452765) ,
-  rgb (0.786212, 0.241514, 0.450184) ,
-  rgb (0.792427, 0.244242, 0.447543) ,
-  rgb (0.798608, 0.24704, 0.444848) ,
-  rgb (0.804752, 0.249911, 0.442102) ,
-  rgb (0.810855, 0.252861, 0.439305) ,
-  rgb (0.816914, 0.255895, 0.436461) ,
-  rgb (0.822926, 0.259016, 0.433573) ,
-  rgb (0.828886, 0.262229, 0.430644) ,
-  rgb (0.834791, 0.26554, 0.427671) ,
-  rgb (0.840636, 0.268953, 0.424666) ,
-  rgb (0.846416, 0.272473, 0.421631) ,
-  rgb (0.852126, 0.276106, 0.418573) ,
-  rgb (0.857763, 0.279857, 0.415496) ,
-  rgb (0.86332, 0.283729, 0.412403) ,
-  rgb (0.868793, 0.287728, 0.409303) ,
-  rgb (0.874176, 0.291859, 0.406205) ,
-  rgb (0.879464, 0.296125, 0.403118) ,
-  rgb (0.884651, 0.30053, 0.400047) ,
-  rgb (0.889731, 0.305079, 0.397002) ,
-  rgb (0.8947, 0.309773, 0.393995) ,
-  rgb (0.899552, 0.314616, 0.391037) ,
-  rgb (0.904281, 0.31961, 0.388137) ,
-  rgb (0.908884, 0.324755, 0.385308) ,
-  rgb (0.913354, 0.330052, 0.382563) ,
-  rgb (0.917689, 0.3355, 0.379915) ,
-  rgb (0.921884, 0.341098, 0.377376) ,
-  rgb (0.925937, 0.346844, 0.374959) ,
-  rgb (0.929845, 0.352734, 0.372677) ,
-  rgb (0.933606, 0.358764, 0.370541) ,
-  rgb (0.937221, 0.364929, 0.368567) ,
-  rgb (0.940687, 0.371224, 0.366762) ,
-  rgb (0.944006, 0.377643, 0.365136) ,
-  rgb (0.94718, 0.384178, 0.363701) ,
-  rgb (0.95021, 0.39082, 0.362468) ,
-  rgb (0.953099, 0.397563, 0.361438) ,
-  rgb (0.955849, 0.4044, 0.360619) ,
-  rgb (0.958464, 0.411324, 0.360014) ,
-  rgb (0.960949, 0.418323, 0.35963) ,
-  rgb (0.96331, 0.42539, 0.359469) ,
-  rgb (0.965549, 0.432519, 0.359529) ,
-  rgb (0.967671, 0.439703, 0.35981) ,
-  rgb (0.96968, 0.446936, 0.360311) ,
-  rgb (0.971582, 0.45421, 0.36103) ,
-  rgb (0.973381, 0.46152, 0.361965) ,
-  rgb (0.975082, 0.468861, 0.363111) ,
-  rgb (0.97669, 0.476226, 0.364466) ,
-  rgb (0.97821, 0.483612, 0.366025) ,
-  rgb (0.979645, 0.491014, 0.367783) ,
-  rgb (0.981, 0.498428, 0.369734) ,
-  rgb (0.982279, 0.505851, 0.371874) ,
-  rgb (0.983485, 0.51328, 0.374198) ,
-  rgb (0.984622, 0.520713, 0.376698) ,
-  rgb (0.985693, 0.528148, 0.379371) ,
-  rgb (0.9867, 0.535582, 0.38221) ,
-  rgb (0.987646, 0.543015, 0.38521) ,
-  rgb (0.988533, 0.550446, 0.388365) ,
-  rgb (0.989363, 0.557873, 0.391671) ,
-  rgb (0.990138, 0.565296, 0.395122) ,
-  rgb (0.990871, 0.572706, 0.398714) ,
-  rgb (0.991558, 0.580107, 0.402441) ,
-  rgb (0.992196, 0.587502, 0.406299) ,
-  rgb (0.992785, 0.594891, 0.410283) ,
-  rgb (0.993326, 0.602275, 0.41439) ,
-  rgb (0.993834, 0.609644, 0.418613) ,
-  rgb (0.994309, 0.616999, 0.42295) ,
-  rgb (0.994738, 0.62435, 0.427397) ,
-  rgb (0.995122, 0.631696, 0.431951) ,
-  rgb (0.99548, 0.639027, 0.436607) ,
-  rgb (0.99581, 0.646344, 0.441361) ,
-  rgb (0.996096, 0.653659, 0.446213) ,
-  rgb (0.996341, 0.660969, 0.45116) ,
-  rgb (0.99658, 0.668256, 0.456192) ,
-  rgb (0.996775, 0.675541, 0.461314) ,
-  rgb (0.996925, 0.682828, 0.466526) ,
-  rgb (0.997077, 0.690088, 0.471811) ,
-  rgb (0.997186, 0.697349, 0.477182) ,
-  rgb (0.997254, 0.704611, 0.482635) ,
-  rgb (0.997325, 0.711848, 0.488154) ,
-  rgb (0.997351, 0.719089, 0.493755) ,
-  rgb (0.997351, 0.726324, 0.499428) ,
-  rgb (0.997341, 0.733545, 0.505167) ,
-  rgb (0.997285, 0.740772, 0.510983) ,
-  rgb (0.997228, 0.747981, 0.516859) ,
-  rgb (0.997138, 0.75519, 0.522806) ,
-  rgb (0.997019, 0.762398, 0.528821) ,
-  rgb (0.996898, 0.769591, 0.534892) ,
-  rgb (0.996727, 0.776795, 0.541039) ,
-  rgb (0.996571, 0.783977, 0.547233) ,
-  rgb (0.996369, 0.791167, 0.553499) ,
-  rgb (0.996162, 0.798348, 0.55982) ,
-  rgb (0.995932, 0.805527, 0.566202) ,
-  rgb (0.99568, 0.812706, 0.572645) ,
-  rgb (0.995424, 0.819875, 0.57914) ,
-  rgb (0.995131, 0.827052, 0.585701) ,
-  rgb (0.994851, 0.834213, 0.592307) ,
-  rgb (0.994524, 0.841387, 0.598983) ,
-  rgb (0.994222, 0.84854, 0.605696) ,
-  rgb (0.993866, 0.855711, 0.612482) ,
-  rgb (0.993545, 0.862859, 0.619299) ,
-  rgb (0.99317, 0.870024, 0.626189) ,
-  rgb (0.992831, 0.877168, 0.633109) ,
-  rgb (0.99244, 0.88433, 0.640099) ,
-  rgb (0.992089, 0.89147, 0.647116) ,
-  rgb (0.991688, 0.898627, 0.654202) ,
-  rgb (0.991332, 0.905763, 0.661309) ,
-  rgb (0.99093, 0.912915, 0.668481) ,
-  rgb (0.99057, 0.920049, 0.675675) ,
-  rgb (0.990175, 0.927196, 0.682926) ,
-  rgb (0.989815, 0.934329, 0.690198) ,
-  rgb (0.989434, 0.94147, 0.697519) ,
-  rgb (0.989077, 0.948604, 0.704863) ,
-  rgb (0.988717, 0.955742, 0.712242) ,
-  rgb (0.988367, 0.962878, 0.719649) ,
-  rgb (0.988033, 0.970012, 0.727077) ,
-  rgb (0.987691, 0.977154, 0.734536) ,
-  rgb (0.987387, 0.984288, 0.742002) ,
-  rgb (0.987053, 0.991438, 0.749504)
-});
+    rgb (0.001462, 0.000466, 0.013866) ,
+      rgb (0.002258, 0.001295, 0.018331) ,
+      rgb (0.003279, 0.002305, 0.023708) ,
+      rgb (0.004512, 0.00349, 0.029965) ,
+      rgb (0.00595, 0.004843, 0.03713) ,
+      rgb (0.007588, 0.006356, 0.044973) ,
+      rgb (0.009426, 0.008022, 0.052844) ,
+      rgb (0.011465, 0.009828, 0.06075) ,
+      rgb (0.013708, 0.011771, 0.068667) ,
+      rgb (0.016156, 0.01384, 0.076603) ,
+      rgb (0.018815, 0.016026, 0.084584) ,
+      rgb (0.021692, 0.01832, 0.09261) ,
+      rgb (0.024792, 0.020715, 0.100676) ,
+      rgb (0.028123, 0.023201, 0.108787) ,
+      rgb (0.031696, 0.025765, 0.116965) ,
+      rgb (0.03552, 0.028397, 0.125209) ,
+      rgb (0.039608, 0.03109, 0.133515) ,
+      rgb (0.04383, 0.03383, 0.141886) ,
+      rgb (0.048062, 0.036607, 0.150327) ,
+      rgb (0.05232, 0.039407, 0.158841) ,
+      rgb (0.056615, 0.04216, 0.167446) ,
+      rgb (0.060949, 0.044794, 0.176129) ,
+      rgb (0.06533, 0.047318, 0.184892) ,
+      rgb (0.069764, 0.049726, 0.193735) ,
+      rgb (0.074257, 0.052017, 0.20266) ,
+      rgb (0.078815, 0.054184, 0.211667) ,
+      rgb (0.083446, 0.056225, 0.220755) ,
+      rgb (0.088155, 0.058133, 0.229922) ,
+      rgb (0.092949, 0.059904, 0.239164) ,
+      rgb (0.097833, 0.061531, 0.248477) ,
+      rgb (0.102815, 0.06301, 0.257854) ,
+      rgb (0.107899, 0.064335, 0.267289) ,
+      rgb (0.113094, 0.065492, 0.276784) ,
+      rgb (0.118405, 0.066479, 0.286321) ,
+      rgb (0.123833, 0.067295, 0.295879) ,
+      rgb (0.12938, 0.067935, 0.305443) ,
+      rgb (0.135053, 0.068391, 0.315) ,
+      rgb (0.140858, 0.068654, 0.324538) ,
+      rgb (0.146785, 0.068738, 0.334011) ,
+      rgb (0.152839, 0.068637, 0.343404) ,
+      rgb (0.159018, 0.068354, 0.352688) ,
+      rgb (0.165308, 0.067911, 0.361816) ,
+      rgb (0.171713, 0.067305, 0.370771) ,
+      rgb (0.178212, 0.066576, 0.379497) ,
+      rgb (0.184801, 0.065732, 0.387973) ,
+      rgb (0.19146, 0.064818, 0.396152) ,
+      rgb (0.198177, 0.063862, 0.404009) ,
+      rgb (0.204935, 0.062907, 0.411514) ,
+      rgb (0.211718, 0.061992, 0.418647) ,
+      rgb (0.218512, 0.061158, 0.425392) ,
+      rgb (0.225302, 0.060445, 0.431742) ,
+      rgb (0.232077, 0.059889, 0.437695) ,
+      rgb (0.238826, 0.059517, 0.443256) ,
+      rgb (0.245543, 0.059352, 0.448436) ,
+      rgb (0.25222, 0.059415, 0.453248) ,
+      rgb (0.258857, 0.059706, 0.45771) ,
+      rgb (0.265447, 0.060237, 0.46184) ,
+      rgb (0.271994, 0.060994, 0.46566) ,
+      rgb (0.278493, 0.061978, 0.46919) ,
+      rgb (0.284951, 0.063168, 0.472451) ,
+      rgb (0.291366, 0.064553, 0.475462) ,
+      rgb (0.29774, 0.066117, 0.478243) ,
+      rgb (0.304081, 0.067835, 0.480812) ,
+      rgb (0.310382, 0.069702, 0.483186) ,
+      rgb (0.316654, 0.07169, 0.48538) ,
+      rgb (0.322899, 0.073782, 0.487408) ,
+      rgb (0.329114, 0.075972, 0.489287) ,
+      rgb (0.335308, 0.078236, 0.491024) ,
+      rgb (0.341482, 0.080564, 0.492631) ,
+      rgb (0.347636, 0.082946, 0.494121) ,
+      rgb (0.353773, 0.085373, 0.495501) ,
+      rgb (0.359898, 0.087831, 0.496778) ,
+      rgb (0.366012, 0.090314, 0.49796) ,
+      rgb (0.372116, 0.092816, 0.499053) ,
+      rgb (0.378211, 0.095332, 0.500067) ,
+      rgb (0.384299, 0.097855, 0.501002) ,
+      rgb (0.390384, 0.100379, 0.501864) ,
+      rgb (0.396467, 0.102902, 0.502658) ,
+      rgb (0.402548, 0.10542, 0.503386) ,
+      rgb (0.408629, 0.10793, 0.504052) ,
+      rgb (0.414709, 0.110431, 0.504662) ,
+      rgb (0.420791, 0.11292, 0.505215) ,
+      rgb (0.426877, 0.115395, 0.505714) ,
+      rgb (0.432967, 0.117855, 0.50616) ,
+      rgb (0.439062, 0.120298, 0.506555) ,
+      rgb (0.445163, 0.122724, 0.506901) ,
+      rgb (0.451271, 0.125132, 0.507198) ,
+      rgb (0.457386, 0.127522, 0.507448) ,
+      rgb (0.463508, 0.129893, 0.507652) ,
+      rgb (0.46964, 0.132245, 0.507809) ,
+      rgb (0.47578, 0.134577, 0.507921) ,
+      rgb (0.481929, 0.136891, 0.507989) ,
+      rgb (0.488088, 0.139186, 0.508011) ,
+      rgb (0.494258, 0.141462, 0.507988) ,
+      rgb (0.500438, 0.143719, 0.50792) ,
+      rgb (0.506629, 0.145958, 0.507806) ,
+      rgb (0.512831, 0.148179, 0.507648) ,
+      rgb (0.519045, 0.150383, 0.507443) ,
+      rgb (0.52527, 0.152569, 0.507192) ,
+      rgb (0.531507, 0.154739, 0.506895) ,
+      rgb (0.537755, 0.156894, 0.506551) ,
+      rgb (0.544015, 0.159033, 0.506159) ,
+      rgb (0.550287, 0.161158, 0.505719) ,
+      rgb (0.556571, 0.163269, 0.50523) ,
+      rgb (0.562866, 0.165368, 0.504692) ,
+      rgb (0.569172, 0.167454, 0.504105) ,
+      rgb (0.57549, 0.16953, 0.503466) ,
+      rgb (0.581819, 0.171596, 0.502777) ,
+      rgb (0.588158, 0.173652, 0.502035) ,
+      rgb (0.594508, 0.175701, 0.501241) ,
+      rgb (0.600868, 0.177743, 0.500394) ,
+      rgb (0.607238, 0.179779, 0.499492) ,
+      rgb (0.613617, 0.181811, 0.498536) ,
+      rgb (0.620005, 0.18384, 0.497524) ,
+      rgb (0.626401, 0.185867, 0.496456) ,
+      rgb (0.632805, 0.187893, 0.495332) ,
+      rgb (0.639216, 0.189921, 0.49415) ,
+      rgb (0.645633, 0.191952, 0.49291) ,
+      rgb (0.652056, 0.193986, 0.491611) ,
+      rgb (0.658483, 0.196027, 0.490253) ,
+      rgb (0.664915, 0.198075, 0.488836) ,
+      rgb (0.671349, 0.200133, 0.487358) ,
+      rgb (0.677786, 0.202203, 0.485819) ,
+      rgb (0.684224, 0.204286, 0.484219) ,
+      rgb (0.690661, 0.206384, 0.482558) ,
+      rgb (0.697098, 0.208501, 0.480835) ,
+      rgb (0.703532, 0.210638, 0.479049) ,
+      rgb (0.709962, 0.212797, 0.477201) ,
+      rgb (0.716387, 0.214982, 0.47529) ,
+      rgb (0.722805, 0.217194, 0.473316) ,
+      rgb (0.729216, 0.219437, 0.471279) ,
+      rgb (0.735616, 0.221713, 0.46918) ,
+      rgb (0.742004, 0.224025, 0.467018) ,
+      rgb (0.748378, 0.226377, 0.464794) ,
+      rgb (0.754737, 0.228772, 0.462509) ,
+      rgb (0.761077, 0.231214, 0.460162) ,
+      rgb (0.767398, 0.233705, 0.457755) ,
+      rgb (0.773695, 0.236249, 0.455289) ,
+      rgb (0.779968, 0.238851, 0.452765) ,
+      rgb (0.786212, 0.241514, 0.450184) ,
+      rgb (0.792427, 0.244242, 0.447543) ,
+      rgb (0.798608, 0.24704, 0.444848) ,
+      rgb (0.804752, 0.249911, 0.442102) ,
+      rgb (0.810855, 0.252861, 0.439305) ,
+      rgb (0.816914, 0.255895, 0.436461) ,
+      rgb (0.822926, 0.259016, 0.433573) ,
+      rgb (0.828886, 0.262229, 0.430644) ,
+      rgb (0.834791, 0.26554, 0.427671) ,
+      rgb (0.840636, 0.268953, 0.424666) ,
+      rgb (0.846416, 0.272473, 0.421631) ,
+      rgb (0.852126, 0.276106, 0.418573) ,
+      rgb (0.857763, 0.279857, 0.415496) ,
+      rgb (0.86332, 0.283729, 0.412403) ,
+      rgb (0.868793, 0.287728, 0.409303) ,
+      rgb (0.874176, 0.291859, 0.406205) ,
+      rgb (0.879464, 0.296125, 0.403118) ,
+      rgb (0.884651, 0.30053, 0.400047) ,
+      rgb (0.889731, 0.305079, 0.397002) ,
+      rgb (0.8947, 0.309773, 0.393995) ,
+      rgb (0.899552, 0.314616, 0.391037) ,
+      rgb (0.904281, 0.31961, 0.388137) ,
+      rgb (0.908884, 0.324755, 0.385308) ,
+      rgb (0.913354, 0.330052, 0.382563) ,
+      rgb (0.917689, 0.3355, 0.379915) ,
+      rgb (0.921884, 0.341098, 0.377376) ,
+      rgb (0.925937, 0.346844, 0.374959) ,
+      rgb (0.929845, 0.352734, 0.372677) ,
+      rgb (0.933606, 0.358764, 0.370541) ,
+      rgb (0.937221, 0.364929, 0.368567) ,
+      rgb (0.940687, 0.371224, 0.366762) ,
+      rgb (0.944006, 0.377643, 0.365136) ,
+      rgb (0.94718, 0.384178, 0.363701) ,
+      rgb (0.95021, 0.39082, 0.362468) ,
+      rgb (0.953099, 0.397563, 0.361438) ,
+      rgb (0.955849, 0.4044, 0.360619) ,
+      rgb (0.958464, 0.411324, 0.360014) ,
+      rgb (0.960949, 0.418323, 0.35963) ,
+      rgb (0.96331, 0.42539, 0.359469) ,
+      rgb (0.965549, 0.432519, 0.359529) ,
+      rgb (0.967671, 0.439703, 0.35981) ,
+      rgb (0.96968, 0.446936, 0.360311) ,
+      rgb (0.971582, 0.45421, 0.36103) ,
+      rgb (0.973381, 0.46152, 0.361965) ,
+      rgb (0.975082, 0.468861, 0.363111) ,
+      rgb (0.97669, 0.476226, 0.364466) ,
+      rgb (0.97821, 0.483612, 0.366025) ,
+      rgb (0.979645, 0.491014, 0.367783) ,
+      rgb (0.981, 0.498428, 0.369734) ,
+      rgb (0.982279, 0.505851, 0.371874) ,
+      rgb (0.983485, 0.51328, 0.374198) ,
+      rgb (0.984622, 0.520713, 0.376698) ,
+      rgb (0.985693, 0.528148, 0.379371) ,
+      rgb (0.9867, 0.535582, 0.38221) ,
+      rgb (0.987646, 0.543015, 0.38521) ,
+      rgb (0.988533, 0.550446, 0.388365) ,
+      rgb (0.989363, 0.557873, 0.391671) ,
+      rgb (0.990138, 0.565296, 0.395122) ,
+      rgb (0.990871, 0.572706, 0.398714) ,
+      rgb (0.991558, 0.580107, 0.402441) ,
+      rgb (0.992196, 0.587502, 0.406299) ,
+      rgb (0.992785, 0.594891, 0.410283) ,
+      rgb (0.993326, 0.602275, 0.41439) ,
+      rgb (0.993834, 0.609644, 0.418613) ,
+      rgb (0.994309, 0.616999, 0.42295) ,
+      rgb (0.994738, 0.62435, 0.427397) ,
+      rgb (0.995122, 0.631696, 0.431951) ,
+      rgb (0.99548, 0.639027, 0.436607) ,
+      rgb (0.99581, 0.646344, 0.441361) ,
+      rgb (0.996096, 0.653659, 0.446213) ,
+      rgb (0.996341, 0.660969, 0.45116) ,
+      rgb (0.99658, 0.668256, 0.456192) ,
+      rgb (0.996775, 0.675541, 0.461314) ,
+      rgb (0.996925, 0.682828, 0.466526) ,
+      rgb (0.997077, 0.690088, 0.471811) ,
+      rgb (0.997186, 0.697349, 0.477182) ,
+      rgb (0.997254, 0.704611, 0.482635) ,
+      rgb (0.997325, 0.711848, 0.488154) ,
+      rgb (0.997351, 0.719089, 0.493755) ,
+      rgb (0.997351, 0.726324, 0.499428) ,
+      rgb (0.997341, 0.733545, 0.505167) ,
+      rgb (0.997285, 0.740772, 0.510983) ,
+      rgb (0.997228, 0.747981, 0.516859) ,
+      rgb (0.997138, 0.75519, 0.522806) ,
+      rgb (0.997019, 0.762398, 0.528821) ,
+      rgb (0.996898, 0.769591, 0.534892) ,
+      rgb (0.996727, 0.776795, 0.541039) ,
+      rgb (0.996571, 0.783977, 0.547233) ,
+      rgb (0.996369, 0.791167, 0.553499) ,
+      rgb (0.996162, 0.798348, 0.55982) ,
+      rgb (0.995932, 0.805527, 0.566202) ,
+      rgb (0.99568, 0.812706, 0.572645) ,
+      rgb (0.995424, 0.819875, 0.57914) ,
+      rgb (0.995131, 0.827052, 0.585701) ,
+      rgb (0.994851, 0.834213, 0.592307) ,
+      rgb (0.994524, 0.841387, 0.598983) ,
+      rgb (0.994222, 0.84854, 0.605696) ,
+      rgb (0.993866, 0.855711, 0.612482) ,
+      rgb (0.993545, 0.862859, 0.619299) ,
+      rgb (0.99317, 0.870024, 0.626189) ,
+      rgb (0.992831, 0.877168, 0.633109) ,
+      rgb (0.99244, 0.88433, 0.640099) ,
+      rgb (0.992089, 0.89147, 0.647116) ,
+      rgb (0.991688, 0.898627, 0.654202) ,
+      rgb (0.991332, 0.905763, 0.661309) ,
+      rgb (0.99093, 0.912915, 0.668481) ,
+      rgb (0.99057, 0.920049, 0.675675) ,
+      rgb (0.990175, 0.927196, 0.682926) ,
+      rgb (0.989815, 0.934329, 0.690198) ,
+      rgb (0.989434, 0.94147, 0.697519) ,
+      rgb (0.989077, 0.948604, 0.704863) ,
+      rgb (0.988717, 0.955742, 0.712242) ,
+      rgb (0.988367, 0.962878, 0.719649) ,
+      rgb (0.988033, 0.970012, 0.727077) ,
+      rgb (0.987691, 0.977154, 0.734536) ,
+      rgb (0.987387, 0.984288, 0.742002) ,
+      rgb (0.987053, 0.991438, 0.749504)
+      });
 
 
 list_data plasma = list_data(new pen[] {
-  rgb (0.050383, 0.029803, 0.527975) ,
-  rgb (0.063536, 0.028426, 0.533124) ,
-  rgb (0.075353, 0.027206, 0.538007) ,
-  rgb (0.086222, 0.026125, 0.542658) ,
-  rgb (0.096379, 0.025165, 0.547103) ,
-  rgb (0.10598, 0.024309, 0.551368) ,
-  rgb (0.115124, 0.023556, 0.555468) ,
-  rgb (0.123903, 0.022878, 0.559423) ,
-  rgb (0.132381, 0.022258, 0.56325) ,
-  rgb (0.140603, 0.021687, 0.566959) ,
-  rgb (0.148607, 0.021154, 0.570562) ,
-  rgb (0.156421, 0.020651, 0.574065) ,
-  rgb (0.16407, 0.020171, 0.577478) ,
-  rgb (0.171574, 0.019706, 0.580806) ,
-  rgb (0.17895, 0.019252, 0.584054) ,
-  rgb (0.186213, 0.018803, 0.587228) ,
-  rgb (0.193374, 0.018354, 0.59033) ,
-  rgb (0.200445, 0.017902, 0.593364) ,
-  rgb (0.207435, 0.017442, 0.596333) ,
-  rgb (0.21435, 0.016973, 0.599239) ,
-  rgb (0.221197, 0.016497, 0.602083) ,
-  rgb (0.227983, 0.016007, 0.604867) ,
-  rgb (0.234715, 0.015502, 0.607592) ,
-  rgb (0.241396, 0.014979, 0.610259) ,
-  rgb (0.248032, 0.014439, 0.612868) ,
-  rgb (0.254627, 0.013882, 0.615419) ,
-  rgb (0.261183, 0.013308, 0.617911) ,
-  rgb (0.267703, 0.012716, 0.620346) ,
-  rgb (0.274191, 0.012109, 0.622722) ,
-  rgb (0.280648, 0.011488, 0.625038) ,
-  rgb (0.287076, 0.010855, 0.627295) ,
-  rgb (0.293478, 0.010213, 0.62949) ,
-  rgb (0.299855, 0.009561, 0.631624) ,
-  rgb (0.30621, 0.008902, 0.633694) ,
-  rgb (0.312543, 0.008239, 0.6357) ,
-  rgb (0.318856, 0.007576, 0.63764) ,
-  rgb (0.32515, 0.006915, 0.639512) ,
-  rgb (0.331426, 0.006261, 0.641316) ,
-  rgb (0.337683, 0.005618, 0.643049) ,
-  rgb (0.343925, 0.004991, 0.64471) ,
-  rgb (0.35015, 0.004382, 0.646298) ,
-  rgb (0.356359, 0.003798, 0.64781) ,
-  rgb (0.362553, 0.003243, 0.649245) ,
-  rgb (0.368733, 0.002724, 0.650601) ,
-  rgb (0.374897, 0.002245, 0.651876) ,
-  rgb (0.381047, 0.001814, 0.653068) ,
-  rgb (0.387183, 0.001434, 0.654177) ,
-  rgb (0.393304, 0.001114, 0.655199) ,
-  rgb (0.399411, 0.000859, 0.656133) ,
-  rgb (0.405503, 0.000678, 0.656977) ,
-  rgb (0.41158, 0.000577, 0.65773) ,
-  rgb (0.417642, 0.000564, 0.65839) ,
-  rgb (0.423689, 0.000646, 0.658956) ,
-  rgb (0.429719, 0.000831, 0.659425) ,
-  rgb (0.435734, 0.001127, 0.659797) ,
-  rgb (0.441732, 0.00154, 0.660069) ,
-  rgb (0.447714, 0.00208, 0.66024) ,
-  rgb (0.453677, 0.002755, 0.66031) ,
-  rgb (0.459623, 0.003574, 0.660277) ,
-  rgb (0.46555, 0.004545, 0.660139) ,
-  rgb (0.471457, 0.005678, 0.659897) ,
-  rgb (0.477344, 0.00698, 0.659549) ,
-  rgb (0.48321, 0.00846, 0.659095) ,
-  rgb (0.489055, 0.010127, 0.658534) ,
-  rgb (0.494877, 0.01199, 0.657865) ,
-  rgb (0.500678, 0.014055, 0.657088) ,
-  rgb (0.506454, 0.016333, 0.656202) ,
-  rgb (0.512206, 0.018833, 0.655209) ,
-  rgb (0.517933, 0.021563, 0.654109) ,
-  rgb (0.523633, 0.024532, 0.652901) ,
-  rgb (0.529306, 0.027747, 0.651586) ,
-  rgb (0.534952, 0.031217, 0.650165) ,
-  rgb (0.54057, 0.03495, 0.64864) ,
-  rgb (0.546157, 0.038954, 0.64701) ,
-  rgb (0.551715, 0.043136, 0.645277) ,
-  rgb (0.557243, 0.047331, 0.643443) ,
-  rgb (0.562738, 0.051545, 0.641509) ,
-  rgb (0.568201, 0.055778, 0.639477) ,
-  rgb (0.573632, 0.060028, 0.637349) ,
-  rgb (0.579029, 0.064296, 0.635126) ,
-  rgb (0.584391, 0.068579, 0.632812) ,
-  rgb (0.589719, 0.072878, 0.630408) ,
-  rgb (0.595011, 0.07719, 0.627917) ,
-  rgb (0.600266, 0.081516, 0.625342) ,
-  rgb (0.605485, 0.085854, 0.622686) ,
-  rgb (0.610667, 0.090204, 0.619951) ,
-  rgb (0.615812, 0.094564, 0.61714) ,
-  rgb (0.620919, 0.098934, 0.614257) ,
-  rgb (0.625987, 0.103312, 0.611305) ,
-  rgb (0.631017, 0.107699, 0.608287) ,
-  rgb (0.636008, 0.112092, 0.605205) ,
-  rgb (0.640959, 0.116492, 0.602065) ,
-  rgb (0.645872, 0.120898, 0.598867) ,
-  rgb (0.650746, 0.125309, 0.595617) ,
-  rgb (0.65558, 0.129725, 0.592317) ,
-  rgb (0.660374, 0.134144, 0.588971) ,
-  rgb (0.665129, 0.138566, 0.585582) ,
-  rgb (0.669845, 0.142992, 0.582154) ,
-  rgb (0.674522, 0.147419, 0.578688) ,
-  rgb (0.67916, 0.151848, 0.575189) ,
-  rgb (0.683758, 0.156278, 0.57166) ,
-  rgb (0.688318, 0.160709, 0.568103) ,
-  rgb (0.69284, 0.165141, 0.564522) ,
-  rgb (0.697324, 0.169573, 0.560919) ,
-  rgb (0.701769, 0.174005, 0.557296) ,
-  rgb (0.706178, 0.178437, 0.553657) ,
-  rgb (0.710549, 0.182868, 0.550004) ,
-  rgb (0.714883, 0.187299, 0.546338) ,
-  rgb (0.719181, 0.191729, 0.542663) ,
-  rgb (0.723444, 0.196158, 0.538981) ,
-  rgb (0.72767, 0.200586, 0.535293) ,
-  rgb (0.731862, 0.205013, 0.531601) ,
-  rgb (0.736019, 0.209439, 0.527908) ,
-  rgb (0.740143, 0.213864, 0.524216) ,
-  rgb (0.744232, 0.218288, 0.520524) ,
-  rgb (0.748289, 0.222711, 0.516834) ,
-  rgb (0.752312, 0.227133, 0.513149) ,
-  rgb (0.756304, 0.231555, 0.509468) ,
-  rgb (0.760264, 0.235976, 0.505794) ,
-  rgb (0.764193, 0.240396, 0.502126) ,
-  rgb (0.76809, 0.244817, 0.498465) ,
-  rgb (0.771958, 0.249237, 0.494813) ,
-  rgb (0.775796, 0.253658, 0.491171) ,
-  rgb (0.779604, 0.258078, 0.487539) ,
-  rgb (0.783383, 0.2625, 0.483918) ,
-  rgb (0.787133, 0.266922, 0.480307) ,
-  rgb (0.790855, 0.271345, 0.476706) ,
-  rgb (0.794549, 0.27577, 0.473117) ,
-  rgb (0.798216, 0.280197, 0.469538) ,
-  rgb (0.801855, 0.284626, 0.465971) ,
-  rgb (0.805467, 0.289057, 0.462415) ,
-  rgb (0.809052, 0.293491, 0.45887) ,
-  rgb (0.812612, 0.297928, 0.455338) ,
-  rgb (0.816144, 0.302368, 0.451816) ,
-  rgb (0.819651, 0.306812, 0.448306) ,
-  rgb (0.823132, 0.311261, 0.444806) ,
-  rgb (0.826588, 0.315714, 0.441316) ,
-  rgb (0.830018, 0.320172, 0.437836) ,
-  rgb (0.833422, 0.324635, 0.434366) ,
-  rgb (0.836801, 0.329105, 0.430905) ,
-  rgb (0.840155, 0.33358, 0.427455) ,
-  rgb (0.843484, 0.338062, 0.424013) ,
-  rgb (0.846788, 0.342551, 0.420579) ,
-  rgb (0.850066, 0.347048, 0.417153) ,
-  rgb (0.853319, 0.351553, 0.413734) ,
-  rgb (0.856547, 0.356066, 0.410322) ,
-  rgb (0.85975, 0.360588, 0.406917) ,
-  rgb (0.862927, 0.365119, 0.403519) ,
-  rgb (0.866078, 0.36966, 0.400126) ,
-  rgb (0.869203, 0.374212, 0.396738) ,
-  rgb (0.872303, 0.378774, 0.393355) ,
-  rgb (0.875376, 0.383347, 0.389976) ,
-  rgb (0.878423, 0.387932, 0.3866) ,
-  rgb (0.881443, 0.392529, 0.383229) ,
-  rgb (0.884436, 0.397139, 0.37986) ,
-  rgb (0.887402, 0.401762, 0.376494) ,
-  rgb (0.89034, 0.406398, 0.37313) ,
-  rgb (0.89325, 0.411048, 0.369768) ,
-  rgb (0.896131, 0.415712, 0.366407) ,
-  rgb (0.898984, 0.420392, 0.363047) ,
-  rgb (0.901807, 0.425087, 0.359688) ,
-  rgb (0.904601, 0.429797, 0.356329) ,
-  rgb (0.907365, 0.434524, 0.35297) ,
-  rgb (0.910098, 0.439268, 0.34961) ,
-  rgb (0.9128, 0.444029, 0.346251) ,
-  rgb (0.915471, 0.448807, 0.34289) ,
-  rgb (0.918109, 0.453603, 0.339529) ,
-  rgb (0.920714, 0.458417, 0.336166) ,
-  rgb (0.923287, 0.463251, 0.332801) ,
-  rgb (0.925825, 0.468103, 0.329435) ,
-  rgb (0.928329, 0.472975, 0.326067) ,
-  rgb (0.930798, 0.477867, 0.322697) ,
-  rgb (0.933232, 0.48278, 0.319325) ,
-  rgb (0.93563, 0.487712, 0.315952) ,
-  rgb (0.93799, 0.492667, 0.312575) ,
-  rgb (0.940313, 0.497642, 0.309197) ,
-  rgb (0.942598, 0.502639, 0.305816) ,
-  rgb (0.944844, 0.507658, 0.302433) ,
-  rgb (0.947051, 0.512699, 0.299049) ,
-  rgb (0.949217, 0.517763, 0.295662) ,
-  rgb (0.951344, 0.52285, 0.292275) ,
-  rgb (0.953428, 0.52796, 0.288883) ,
-  rgb (0.95547, 0.533093, 0.28549) ,
-  rgb (0.957469, 0.53825, 0.282096) ,
-  rgb (0.959424, 0.543431, 0.278701) ,
-  rgb (0.961336, 0.548636, 0.275305) ,
-  rgb (0.963203, 0.553865, 0.271909) ,
-  rgb (0.965024, 0.559118, 0.268513) ,
-  rgb (0.966798, 0.564396, 0.265118) ,
-  rgb (0.968526, 0.5697, 0.261721) ,
-  rgb (0.970205, 0.575028, 0.258325) ,
-  rgb (0.971835, 0.580382, 0.254931) ,
-  rgb (0.973416, 0.585761, 0.25154) ,
-  rgb (0.974947, 0.591165, 0.248151) ,
-  rgb (0.976428, 0.596595, 0.244767) ,
-  rgb (0.977856, 0.602051, 0.241387) ,
-  rgb (0.979233, 0.607532, 0.238013) ,
-  rgb (0.980556, 0.613039, 0.234646) ,
-  rgb (0.981826, 0.618572, 0.231287) ,
-  rgb (0.983041, 0.624131, 0.227937) ,
-  rgb (0.984199, 0.629718, 0.224595) ,
-  rgb (0.985301, 0.63533, 0.221265) ,
-  rgb (0.986345, 0.640969, 0.217948) ,
-  rgb (0.987332, 0.646633, 0.214648) ,
-  rgb (0.98826, 0.652325, 0.211364) ,
-  rgb (0.989128, 0.658043, 0.2081) ,
-  rgb (0.989935, 0.663787, 0.204859) ,
-  rgb (0.990681, 0.669558, 0.201642) ,
-  rgb (0.991365, 0.675355, 0.198453) ,
-  rgb (0.991985, 0.681179, 0.195295) ,
-  rgb (0.992541, 0.68703, 0.19217) ,
-  rgb (0.993032, 0.692907, 0.189084) ,
-  rgb (0.993456, 0.69881, 0.186041) ,
-  rgb (0.993814, 0.704741, 0.183043) ,
-  rgb (0.994103, 0.710698, 0.180097) ,
-  rgb (0.994324, 0.716681, 0.177208) ,
-  rgb (0.994474, 0.722691, 0.174381) ,
-  rgb (0.994553, 0.728728, 0.171622) ,
-  rgb (0.994561, 0.734791, 0.168938) ,
-  rgb (0.994495, 0.74088, 0.166335) ,
-  rgb (0.994355, 0.746995, 0.163821) ,
-  rgb (0.994141, 0.753137, 0.161404) ,
-  rgb (0.993851, 0.759304, 0.159092) ,
-  rgb (0.993482, 0.765499, 0.156891) ,
-  rgb (0.993033, 0.77172, 0.154808) ,
-  rgb (0.992505, 0.777967, 0.152855) ,
-  rgb (0.991897, 0.784239, 0.151042) ,
-  rgb (0.991209, 0.790537, 0.149377) ,
-  rgb (0.990439, 0.796859, 0.14787) ,
-  rgb (0.989587, 0.803205, 0.146529) ,
-  rgb (0.988648, 0.809579, 0.145357) ,
-  rgb (0.987621, 0.815978, 0.144363) ,
-  rgb (0.986509, 0.822401, 0.143557) ,
-  rgb (0.985314, 0.828846, 0.142945) ,
-  rgb (0.984031, 0.835315, 0.142528) ,
-  rgb (0.982653, 0.841812, 0.142303) ,
-  rgb (0.98119, 0.848329, 0.142279) ,
-  rgb (0.979644, 0.854866, 0.142453) ,
-  rgb (0.977995, 0.861432, 0.142808) ,
-  rgb (0.976265, 0.868016, 0.143351) ,
-  rgb (0.974443, 0.874622, 0.144061) ,
-  rgb (0.97253, 0.88125, 0.144923) ,
-  rgb (0.970533, 0.887896, 0.145919) ,
-  rgb (0.968443, 0.894564, 0.147014) ,
-  rgb (0.966271, 0.901249, 0.14818) ,
-  rgb (0.964021, 0.90795, 0.14937) ,
-  rgb (0.961681, 0.914672, 0.15052) ,
-  rgb (0.959276, 0.921407, 0.151566) ,
-  rgb (0.956808, 0.928152, 0.152409) ,
-  rgb (0.954287, 0.934908, 0.152921) ,
-  rgb (0.951726, 0.941671, 0.152925) ,
-  rgb (0.949151, 0.948435, 0.152178) ,
-  rgb (0.946602, 0.95519, 0.150328) ,
-  rgb (0.944152, 0.961916, 0.146861) ,
-  rgb (0.941896, 0.96859, 0.140956) ,
-  rgb (0.940015, 0.975158, 0.131326)
-});
+    rgb (0.050383, 0.029803, 0.527975) ,
+      rgb (0.063536, 0.028426, 0.533124) ,
+      rgb (0.075353, 0.027206, 0.538007) ,
+      rgb (0.086222, 0.026125, 0.542658) ,
+      rgb (0.096379, 0.025165, 0.547103) ,
+      rgb (0.10598, 0.024309, 0.551368) ,
+      rgb (0.115124, 0.023556, 0.555468) ,
+      rgb (0.123903, 0.022878, 0.559423) ,
+      rgb (0.132381, 0.022258, 0.56325) ,
+      rgb (0.140603, 0.021687, 0.566959) ,
+      rgb (0.148607, 0.021154, 0.570562) ,
+      rgb (0.156421, 0.020651, 0.574065) ,
+      rgb (0.16407, 0.020171, 0.577478) ,
+      rgb (0.171574, 0.019706, 0.580806) ,
+      rgb (0.17895, 0.019252, 0.584054) ,
+      rgb (0.186213, 0.018803, 0.587228) ,
+      rgb (0.193374, 0.018354, 0.59033) ,
+      rgb (0.200445, 0.017902, 0.593364) ,
+      rgb (0.207435, 0.017442, 0.596333) ,
+      rgb (0.21435, 0.016973, 0.599239) ,
+      rgb (0.221197, 0.016497, 0.602083) ,
+      rgb (0.227983, 0.016007, 0.604867) ,
+      rgb (0.234715, 0.015502, 0.607592) ,
+      rgb (0.241396, 0.014979, 0.610259) ,
+      rgb (0.248032, 0.014439, 0.612868) ,
+      rgb (0.254627, 0.013882, 0.615419) ,
+      rgb (0.261183, 0.013308, 0.617911) ,
+      rgb (0.267703, 0.012716, 0.620346) ,
+      rgb (0.274191, 0.012109, 0.622722) ,
+      rgb (0.280648, 0.011488, 0.625038) ,
+      rgb (0.287076, 0.010855, 0.627295) ,
+      rgb (0.293478, 0.010213, 0.62949) ,
+      rgb (0.299855, 0.009561, 0.631624) ,
+      rgb (0.30621, 0.008902, 0.633694) ,
+      rgb (0.312543, 0.008239, 0.6357) ,
+      rgb (0.318856, 0.007576, 0.63764) ,
+      rgb (0.32515, 0.006915, 0.639512) ,
+      rgb (0.331426, 0.006261, 0.641316) ,
+      rgb (0.337683, 0.005618, 0.643049) ,
+      rgb (0.343925, 0.004991, 0.64471) ,
+      rgb (0.35015, 0.004382, 0.646298) ,
+      rgb (0.356359, 0.003798, 0.64781) ,
+      rgb (0.362553, 0.003243, 0.649245) ,
+      rgb (0.368733, 0.002724, 0.650601) ,
+      rgb (0.374897, 0.002245, 0.651876) ,
+      rgb (0.381047, 0.001814, 0.653068) ,
+      rgb (0.387183, 0.001434, 0.654177) ,
+      rgb (0.393304, 0.001114, 0.655199) ,
+      rgb (0.399411, 0.000859, 0.656133) ,
+      rgb (0.405503, 0.000678, 0.656977) ,
+      rgb (0.41158, 0.000577, 0.65773) ,
+      rgb (0.417642, 0.000564, 0.65839) ,
+      rgb (0.423689, 0.000646, 0.658956) ,
+      rgb (0.429719, 0.000831, 0.659425) ,
+      rgb (0.435734, 0.001127, 0.659797) ,
+      rgb (0.441732, 0.00154, 0.660069) ,
+      rgb (0.447714, 0.00208, 0.66024) ,
+      rgb (0.453677, 0.002755, 0.66031) ,
+      rgb (0.459623, 0.003574, 0.660277) ,
+      rgb (0.46555, 0.004545, 0.660139) ,
+      rgb (0.471457, 0.005678, 0.659897) ,
+      rgb (0.477344, 0.00698, 0.659549) ,
+      rgb (0.48321, 0.00846, 0.659095) ,
+      rgb (0.489055, 0.010127, 0.658534) ,
+      rgb (0.494877, 0.01199, 0.657865) ,
+      rgb (0.500678, 0.014055, 0.657088) ,
+      rgb (0.506454, 0.016333, 0.656202) ,
+      rgb (0.512206, 0.018833, 0.655209) ,
+      rgb (0.517933, 0.021563, 0.654109) ,
+      rgb (0.523633, 0.024532, 0.652901) ,
+      rgb (0.529306, 0.027747, 0.651586) ,
+      rgb (0.534952, 0.031217, 0.650165) ,
+      rgb (0.54057, 0.03495, 0.64864) ,
+      rgb (0.546157, 0.038954, 0.64701) ,
+      rgb (0.551715, 0.043136, 0.645277) ,
+      rgb (0.557243, 0.047331, 0.643443) ,
+      rgb (0.562738, 0.051545, 0.641509) ,
+      rgb (0.568201, 0.055778, 0.639477) ,
+      rgb (0.573632, 0.060028, 0.637349) ,
+      rgb (0.579029, 0.064296, 0.635126) ,
+      rgb (0.584391, 0.068579, 0.632812) ,
+      rgb (0.589719, 0.072878, 0.630408) ,
+      rgb (0.595011, 0.07719, 0.627917) ,
+      rgb (0.600266, 0.081516, 0.625342) ,
+      rgb (0.605485, 0.085854, 0.622686) ,
+      rgb (0.610667, 0.090204, 0.619951) ,
+      rgb (0.615812, 0.094564, 0.61714) ,
+      rgb (0.620919, 0.098934, 0.614257) ,
+      rgb (0.625987, 0.103312, 0.611305) ,
+      rgb (0.631017, 0.107699, 0.608287) ,
+      rgb (0.636008, 0.112092, 0.605205) ,
+      rgb (0.640959, 0.116492, 0.602065) ,
+      rgb (0.645872, 0.120898, 0.598867) ,
+      rgb (0.650746, 0.125309, 0.595617) ,
+      rgb (0.65558, 0.129725, 0.592317) ,
+      rgb (0.660374, 0.134144, 0.588971) ,
+      rgb (0.665129, 0.138566, 0.585582) ,
+      rgb (0.669845, 0.142992, 0.582154) ,
+      rgb (0.674522, 0.147419, 0.578688) ,
+      rgb (0.67916, 0.151848, 0.575189) ,
+      rgb (0.683758, 0.156278, 0.57166) ,
+      rgb (0.688318, 0.160709, 0.568103) ,
+      rgb (0.69284, 0.165141, 0.564522) ,
+      rgb (0.697324, 0.169573, 0.560919) ,
+      rgb (0.701769, 0.174005, 0.557296) ,
+      rgb (0.706178, 0.178437, 0.553657) ,
+      rgb (0.710549, 0.182868, 0.550004) ,
+      rgb (0.714883, 0.187299, 0.546338) ,
+      rgb (0.719181, 0.191729, 0.542663) ,
+      rgb (0.723444, 0.196158, 0.538981) ,
+      rgb (0.72767, 0.200586, 0.535293) ,
+      rgb (0.731862, 0.205013, 0.531601) ,
+      rgb (0.736019, 0.209439, 0.527908) ,
+      rgb (0.740143, 0.213864, 0.524216) ,
+      rgb (0.744232, 0.218288, 0.520524) ,
+      rgb (0.748289, 0.222711, 0.516834) ,
+      rgb (0.752312, 0.227133, 0.513149) ,
+      rgb (0.756304, 0.231555, 0.509468) ,
+      rgb (0.760264, 0.235976, 0.505794) ,
+      rgb (0.764193, 0.240396, 0.502126) ,
+      rgb (0.76809, 0.244817, 0.498465) ,
+      rgb (0.771958, 0.249237, 0.494813) ,
+      rgb (0.775796, 0.253658, 0.491171) ,
+      rgb (0.779604, 0.258078, 0.487539) ,
+      rgb (0.783383, 0.2625, 0.483918) ,
+      rgb (0.787133, 0.266922, 0.480307) ,
+      rgb (0.790855, 0.271345, 0.476706) ,
+      rgb (0.794549, 0.27577, 0.473117) ,
+      rgb (0.798216, 0.280197, 0.469538) ,
+      rgb (0.801855, 0.284626, 0.465971) ,
+      rgb (0.805467, 0.289057, 0.462415) ,
+      rgb (0.809052, 0.293491, 0.45887) ,
+      rgb (0.812612, 0.297928, 0.455338) ,
+      rgb (0.816144, 0.302368, 0.451816) ,
+      rgb (0.819651, 0.306812, 0.448306) ,
+      rgb (0.823132, 0.311261, 0.444806) ,
+      rgb (0.826588, 0.315714, 0.441316) ,
+      rgb (0.830018, 0.320172, 0.437836) ,
+      rgb (0.833422, 0.324635, 0.434366) ,
+      rgb (0.836801, 0.329105, 0.430905) ,
+      rgb (0.840155, 0.33358, 0.427455) ,
+      rgb (0.843484, 0.338062, 0.424013) ,
+      rgb (0.846788, 0.342551, 0.420579) ,
+      rgb (0.850066, 0.347048, 0.417153) ,
+      rgb (0.853319, 0.351553, 0.413734) ,
+      rgb (0.856547, 0.356066, 0.410322) ,
+      rgb (0.85975, 0.360588, 0.406917) ,
+      rgb (0.862927, 0.365119, 0.403519) ,
+      rgb (0.866078, 0.36966, 0.400126) ,
+      rgb (0.869203, 0.374212, 0.396738) ,
+      rgb (0.872303, 0.378774, 0.393355) ,
+      rgb (0.875376, 0.383347, 0.389976) ,
+      rgb (0.878423, 0.387932, 0.3866) ,
+      rgb (0.881443, 0.392529, 0.383229) ,
+      rgb (0.884436, 0.397139, 0.37986) ,
+      rgb (0.887402, 0.401762, 0.376494) ,
+      rgb (0.89034, 0.406398, 0.37313) ,
+      rgb (0.89325, 0.411048, 0.369768) ,
+      rgb (0.896131, 0.415712, 0.366407) ,
+      rgb (0.898984, 0.420392, 0.363047) ,
+      rgb (0.901807, 0.425087, 0.359688) ,
+      rgb (0.904601, 0.429797, 0.356329) ,
+      rgb (0.907365, 0.434524, 0.35297) ,
+      rgb (0.910098, 0.439268, 0.34961) ,
+      rgb (0.9128, 0.444029, 0.346251) ,
+      rgb (0.915471, 0.448807, 0.34289) ,
+      rgb (0.918109, 0.453603, 0.339529) ,
+      rgb (0.920714, 0.458417, 0.336166) ,
+      rgb (0.923287, 0.463251, 0.332801) ,
+      rgb (0.925825, 0.468103, 0.329435) ,
+      rgb (0.928329, 0.472975, 0.326067) ,
+      rgb (0.930798, 0.477867, 0.322697) ,
+      rgb (0.933232, 0.48278, 0.319325) ,
+      rgb (0.93563, 0.487712, 0.315952) ,
+      rgb (0.93799, 0.492667, 0.312575) ,
+      rgb (0.940313, 0.497642, 0.309197) ,
+      rgb (0.942598, 0.502639, 0.305816) ,
+      rgb (0.944844, 0.507658, 0.302433) ,
+      rgb (0.947051, 0.512699, 0.299049) ,
+      rgb (0.949217, 0.517763, 0.295662) ,
+      rgb (0.951344, 0.52285, 0.292275) ,
+      rgb (0.953428, 0.52796, 0.288883) ,
+      rgb (0.95547, 0.533093, 0.28549) ,
+      rgb (0.957469, 0.53825, 0.282096) ,
+      rgb (0.959424, 0.543431, 0.278701) ,
+      rgb (0.961336, 0.548636, 0.275305) ,
+      rgb (0.963203, 0.553865, 0.271909) ,
+      rgb (0.965024, 0.559118, 0.268513) ,
+      rgb (0.966798, 0.564396, 0.265118) ,
+      rgb (0.968526, 0.5697, 0.261721) ,
+      rgb (0.970205, 0.575028, 0.258325) ,
+      rgb (0.971835, 0.580382, 0.254931) ,
+      rgb (0.973416, 0.585761, 0.25154) ,
+      rgb (0.974947, 0.591165, 0.248151) ,
+      rgb (0.976428, 0.596595, 0.244767) ,
+      rgb (0.977856, 0.602051, 0.241387) ,
+      rgb (0.979233, 0.607532, 0.238013) ,
+      rgb (0.980556, 0.613039, 0.234646) ,
+      rgb (0.981826, 0.618572, 0.231287) ,
+      rgb (0.983041, 0.624131, 0.227937) ,
+      rgb (0.984199, 0.629718, 0.224595) ,
+      rgb (0.985301, 0.63533, 0.221265) ,
+      rgb (0.986345, 0.640969, 0.217948) ,
+      rgb (0.987332, 0.646633, 0.214648) ,
+      rgb (0.98826, 0.652325, 0.211364) ,
+      rgb (0.989128, 0.658043, 0.2081) ,
+      rgb (0.989935, 0.663787, 0.204859) ,
+      rgb (0.990681, 0.669558, 0.201642) ,
+      rgb (0.991365, 0.675355, 0.198453) ,
+      rgb (0.991985, 0.681179, 0.195295) ,
+      rgb (0.992541, 0.68703, 0.19217) ,
+      rgb (0.993032, 0.692907, 0.189084) ,
+      rgb (0.993456, 0.69881, 0.186041) ,
+      rgb (0.993814, 0.704741, 0.183043) ,
+      rgb (0.994103, 0.710698, 0.180097) ,
+      rgb (0.994324, 0.716681, 0.177208) ,
+      rgb (0.994474, 0.722691, 0.174381) ,
+      rgb (0.994553, 0.728728, 0.171622) ,
+      rgb (0.994561, 0.734791, 0.168938) ,
+      rgb (0.994495, 0.74088, 0.166335) ,
+      rgb (0.994355, 0.746995, 0.163821) ,
+      rgb (0.994141, 0.753137, 0.161404) ,
+      rgb (0.993851, 0.759304, 0.159092) ,
+      rgb (0.993482, 0.765499, 0.156891) ,
+      rgb (0.993033, 0.77172, 0.154808) ,
+      rgb (0.992505, 0.777967, 0.152855) ,
+      rgb (0.991897, 0.784239, 0.151042) ,
+      rgb (0.991209, 0.790537, 0.149377) ,
+      rgb (0.990439, 0.796859, 0.14787) ,
+      rgb (0.989587, 0.803205, 0.146529) ,
+      rgb (0.988648, 0.809579, 0.145357) ,
+      rgb (0.987621, 0.815978, 0.144363) ,
+      rgb (0.986509, 0.822401, 0.143557) ,
+      rgb (0.985314, 0.828846, 0.142945) ,
+      rgb (0.984031, 0.835315, 0.142528) ,
+      rgb (0.982653, 0.841812, 0.142303) ,
+      rgb (0.98119, 0.848329, 0.142279) ,
+      rgb (0.979644, 0.854866, 0.142453) ,
+      rgb (0.977995, 0.861432, 0.142808) ,
+      rgb (0.976265, 0.868016, 0.143351) ,
+      rgb (0.974443, 0.874622, 0.144061) ,
+      rgb (0.97253, 0.88125, 0.144923) ,
+      rgb (0.970533, 0.887896, 0.145919) ,
+      rgb (0.968443, 0.894564, 0.147014) ,
+      rgb (0.966271, 0.901249, 0.14818) ,
+      rgb (0.964021, 0.90795, 0.14937) ,
+      rgb (0.961681, 0.914672, 0.15052) ,
+      rgb (0.959276, 0.921407, 0.151566) ,
+      rgb (0.956808, 0.928152, 0.152409) ,
+      rgb (0.954287, 0.934908, 0.152921) ,
+      rgb (0.951726, 0.941671, 0.152925) ,
+      rgb (0.949151, 0.948435, 0.152178) ,
+      rgb (0.946602, 0.95519, 0.150328) ,
+      rgb (0.944152, 0.961916, 0.146861) ,
+      rgb (0.941896, 0.96859, 0.140956) ,
+      rgb (0.940015, 0.975158, 0.131326)
+      });
 
 
 list_data twilight = list_data(new pen[] {
-  rgb (0.8857501584075443, 0.8500092494306783, 0.8879736506427196) ,
-  rgb (0.8837852019553906, 0.8507294054031063, 0.8872322209694989) ,
-  rgb (0.8817223105928579, 0.8512759407765347, 0.8863805692551482) ,
-  rgb (0.8795410528270573, 0.8516567540749572, 0.8854143767924102) ,
-  rgb (0.8772488085896548, 0.8518702833887027, 0.8843412038131143) ,
-  rgb (0.8748534750857597, 0.8519152612302319, 0.8831692696761383) ,
-  rgb (0.8723313408512408, 0.8518016547808089, 0.8818970435500162) ,
-  rgb (0.8697047485350982, 0.8515240300479789, 0.8805388339000336) ,
-  rgb (0.8669601550533358, 0.8510896085314068, 0.8790976697717334) ,
-  rgb (0.86408985081464, 0.8505039116750779, 0.8775792578489263) ,
-  rgb (0.8611024543689985, 0.8497675485700126, 0.8759924292343957) ,
-  rgb (0.8579825924567037, 0.8488893481028184, 0.8743403855344628) ,
-  rgb (0.8547259318925698, 0.8478748812467282, 0.8726282980930582) ,
-  rgb (0.8513371457085719, 0.8467273579611647, 0.8708608165735044) ,
-  rgb (0.8478071070257792, 0.8454546229209523, 0.8690403678369444) ,
-  rgb (0.8441261828674842, 0.8440648271103739, 0.8671697332269007) ,
-  rgb (0.8403042080595778, 0.8425605950855084, 0.865250882410458) ,
-  rgb (0.8363403180919118, 0.8409479651895194, 0.8632852800107016) ,
-  rgb (0.8322270571293441, 0.8392349062775448, 0.8612756350042788) ,
-  rgb (0.8279689431601354, 0.837426007513952, 0.8592239945130679) ,
-  rgb (0.8235742968025285, 0.8355248776479544, 0.8571319132851495) ,
-  rgb (0.8190465467793753, 0.8335364929949034, 0.855002062870101) ,
-  rgb (0.8143898212114309, 0.8314655869419785, 0.8528375906214702) ,
-  rgb (0.8095999819094809, 0.8293189667350546, 0.8506444160105037) ,
-  rgb (0.8046916442981458, 0.8270983878056066, 0.8484244929697402) ,
-  rgb (0.79967075421268, 0.8248078181208093, 0.8461821002957853) ,
-  rgb (0.7945430508923111, 0.8224511622630462, 0.8439218478682798) ,
-  rgb (0.7893144556460892, 0.8200321318870201, 0.8416486380471222) ,
-  rgb (0.7839910104276492, 0.8175542640053343, 0.8393674746403673) ,
-  rgb (0.7785789200822759, 0.8150208937874255, 0.8370834463093898) ,
-  rgb (0.7730841659017094, 0.8124352473546601, 0.8348017295057968) ,
-  rgb (0.7675110850441786, 0.8098007598713145, 0.8325281663805967) ,
-  rgb (0.7618690793798029, 0.8071194938764749, 0.830266486168872) ,
-  rgb (0.7561644358438198, 0.8043940873347794, 0.8280213899472) ,
-  rgb (0.750403467654067, 0.8016269900896532, 0.8257973785108242) ,
-  rgb (0.7445924777189017, 0.7988204771958325, 0.8235986758615652) ,
-  rgb (0.7387377170049494, 0.7959766573503101, 0.8214292278043301) ,
-  rgb (0.7328454364552346, 0.7930974646884407, 0.8192926338423038) ,
-  rgb (0.726921775128297, 0.7901846863592763, 0.8171921746672638) ,
-  rgb (0.7209728066553678, 0.7872399592345264, 0.8151307392087926) ,
-  rgb (0.7150040307625213, 0.7842648709158119, 0.8131111655994991) ,
-  rgb (0.709020781345393, 0.7812608871607091, 0.8111359185511793) ,
-  rgb (0.7030297722540817, 0.7782290497335813, 0.8092061884805697) ,
-  rgb (0.6970365443886174, 0.7751705000806606, 0.8073233538006345) ,
-  rgb (0.691046410093091, 0.7720862946067809, 0.8054884169067907) ,
-  rgb (0.6850644615439593, 0.7689774029354699, 0.8037020626717691) ,
-  rgb (0.6790955449988215, 0.765844721313959, 0.8019646617300199) ,
-  rgb (0.6731442255942621, 0.7626890873389048, 0.8002762854580953) ,
-  rgb (0.6672147980375281, 0.7595112803730375, 0.7986367465453776) ,
-  rgb (0.6613112930078745, 0.7563120270871903, 0.7970456043491897) ,
-  rgb (0.6554369232645472, 0.7530920875676843, 0.7955027112903105) ,
-  rgb (0.6495957300425348, 0.7498520122194177, 0.7940067402149911) ,
-  rgb (0.6437910831099849, 0.7465923800833657, 0.7925565320130605) ,
-  rgb (0.6380258682854598, 0.7433137671403319, 0.7911510045957317) ,
-  rgb (0.6323027138710603, 0.740016721601314, 0.7897889276264043) ,
-  rgb (0.6266240202260459, 0.7367017540369944, 0.7884690131633456) ,
-  rgb (0.6209919306481755, 0.733369347989232, 0.7871899462469658) ,
-  rgb (0.6154084641177048, 0.7300199523273969, 0.7859502270675048) ,
-  rgb (0.6098754317609306, 0.7266539875975829, 0.7847483573269471) ,
-  rgb (0.6043943420027486, 0.7232718614323369, 0.7835829559353559) ,
-  rgb (0.5989665814482068, 0.7198739489224673, 0.7824525989934664) ,
-  rgb (0.5935933569683722, 0.7164606049658685, 0.781355882376401) ,
-  rgb (0.588275797805555, 0.7130321464645814, 0.7802914140563652) ,
-  rgb (0.5830148703693241, 0.7095888767699747, 0.7792578182047659) ,
-  rgb (0.5778116438998202, 0.7061310615715398, 0.7782534512102552) ,
-  rgb (0.5726668948158774, 0.7026589535425779, 0.7772770268091199) ,
-  rgb (0.5675811785386197, 0.6991727930264627, 0.776327485342753) ,
-  rgb (0.5625551535721934, 0.6956727838162965, 0.7754035914230984) ,
-  rgb (0.5575894041960517, 0.6921591145825405, 0.7745041337932782) ,
-  rgb (0.5526845058934713, 0.6886319451516638, 0.7736279426902245) ,
-  rgb (0.5478409815301863, 0.6850914221850988, 0.7727738647344087) ,
-  rgb (0.5430593242401823, 0.6815376725306588, 0.7719407969783508) ,
-  rgb (0.5383401557517628, 0.677970811290954, 0.7711273443905772) ,
-  rgb (0.533683891477284, 0.6743909370521273, 0.7703325054879735) ,
-  rgb (0.529090861832473, 0.6707981230280622, 0.7695555229231313) ,
-  rgb (0.5245615147059358, 0.6671924299614223, 0.7687954171423095) ,
-  rgb (0.5200962739223556, 0.6635739143403039, 0.768051194033441) ,
-  rgb (0.5156955988596057, 0.65994260812898, 0.7673219148959617) ,
-  rgb (0.5113599254160193, 0.6562985398183186, 0.7666066378064533) ,
-  rgb (0.5070896957645166, 0.6526417240314645, 0.7659044566083585) ,
-  rgb (0.5028853540415561, 0.6489721673409526, 0.7652144671817491) ,
-  rgb (0.4987473366135607, 0.6452898684900934, 0.7645357873418008) ,
-  rgb (0.4946761847863938, 0.6415948411950443, 0.7638671900213091) ,
-  rgb (0.4906722493856122, 0.6378870485884708, 0.7632081276316384) ,
-  rgb (0.4867359599430568, 0.6341664625110051, 0.7625578008592404) ,
-  rgb (0.4828677867260272, 0.6304330455306234, 0.761915371498953) ,
-  rgb (0.47906816236197386, 0.6266867625186013, 0.7612800037566242) ,
-  rgb (0.47533752394906287, 0.6229275728383581, 0.7606508557181775) ,
-  rgb (0.4716762951887709, 0.6191554324288464, 0.7600270922788305) ,
-  rgb (0.46808490970531597, 0.6153702869579029, 0.7594078989109274) ,
-  rgb (0.4645637671630393, 0.6115720882286415, 0.7587924262302581) ,
-  rgb (0.4611132664702388, 0.607760777169989, 0.7581798643680714) ,
-  rgb (0.45773377230160567, 0.6039363004658646, 0.7575693690185916) ,
-  rgb (0.45442563977552913, 0.6000985950385866, 0.7569601366060649) ,
-  rgb (0.45118918687617743, 0.5962476205135354, 0.7563512064324664) ,
-  rgb (0.4480247093358917, 0.5923833145214658, 0.7557417647410792) ,
-  rgb (0.4449324685421538, 0.5885055998308617, 0.7551311041857901) ,
-  rgb (0.441912717666964, 0.5846144110017557, 0.7545183888441067) ,
-  rgb (0.43896563958048396, 0.5807096924109849, 0.7539027620828594) ,
-  rgb (0.4360913895835637, 0.5767913799818608, 0.7532834105961016) ,
-  rgb (0.43329008867358393, 0.5728594162560667, 0.7526594653256667) ,
-  rgb (0.4305617907305757, 0.5689137457245718, 0.752030080993127) ,
-  rgb (0.42790652284925834, 0.5649543060909209, 0.7513944352191484) ,
-  rgb (0.42532423665011354, 0.560981049599503, 0.7507516498900512) ,
-  rgb (0.4228148567577266, 0.5569939212699658, 0.7501008698822764) ,
-  rgb (0.42037822361396326, 0.5529928715810817, 0.7494412559451894) ,
-  rgb (0.4180141407923363, 0.5489778542188889, 0.7487719316700112) ,
-  rgb (0.4157223260454232, 0.544948827153504, 0.7480920445900052) ,
-  rgb (0.4135024574331473, 0.5409057477109848, 0.7474007329754309) ,
-  rgb (0.4113541469730457, 0.5368485776500593, 0.7466971285506578) ,
-  rgb (0.4092768899914751, 0.5327773017713032, 0.7459803063570782) ,
-  rgb (0.4072701869421907, 0.5286918801105741, 0.7452494263758127) ,
-  rgb (0.4053334378930318, 0.5245922817498312, 0.7445036583670813) ,
-  rgb (0.40346600333905397, 0.5204784765384003, 0.7437421522356709) ,
-  rgb (0.40166714010896104, 0.5163504496968876, 0.7429640345324835) ,
-  rgb (0.39993606933454834, 0.5122081814321852, 0.7421684457131799) ,
-  rgb (0.3982719152586337, 0.5080516653927614, 0.7413545091809972) ,
-  rgb (0.3966737490566561, 0.5038808905384797, 0.7405213858051674) ,
-  rgb (0.3951405880820763, 0.4996958532637776, 0.7396682021171571) ,
-  rgb (0.39367135736822567, 0.4954965577745118, 0.738794102296364) ,
-  rgb (0.39226494876209317, 0.4912830033289926, 0.7378982478447508) ,
-  rgb (0.390920175719949, 0.4870552025122304, 0.7369797713388125) ,
-  rgb (0.38963580160340855, 0.48281316715123496, 0.7360378254693274) ,
-  rgb (0.3884105330084243, 0.47855691131792805, 0.7350715764115726) ,
-  rgb (0.3872430145933025, 0.4742864593363539, 0.7340801678785439) ,
-  rgb (0.386131841788921, 0.4700018340988123, 0.7330627749243106) ,
-  rgb (0.3850755679365139, 0.46570306719930193, 0.732018540336905) ,
-  rgb (0.38407269378943537, 0.46139018782416635, 0.7309466543290268) ,
-  rgb (0.3831216808440275, 0.457063235814072, 0.7298462679135326) ,
-  rgb (0.38222094988570376, 0.45272225034283325, 0.7287165614400378) ,
-  rgb (0.3813688793045416, 0.4483672766927786, 0.7275567131714135) ,
-  rgb (0.3805638069656562, 0.4439983720863372, 0.7263658704513531) ,
-  rgb (0.3798040374484875, 0.4396155882122263, 0.7251432377876109) ,
-  rgb (0.3790878928311076, 0.43521897612544935, 0.7238879869132313) ,
-  rgb (0.378413635091359, 0.43080859411413064, 0.7225993199306104) ,
-  rgb (0.3777794975351373, 0.4263845142616835, 0.7212763999353023) ,
-  rgb (0.3771837184425123, 0.4219468022345483, 0.7199184152447577) ,
-  rgb (0.37662448930806297, 0.41749553747893614, 0.7185245473617611) ,
-  rgb (0.37610001286385814, 0.4130307995247706, 0.7170939691992023) ,
-  rgb (0.375608469194424, 0.40855267638072096, 0.7156258509158755) ,
-  rgb (0.37514802505380473, 0.4040612609993941, 0.7141193695725726) ,
-  rgb (0.3747168601930223, 0.3995566498711684, 0.7125736851650046) ,
-  rgb (0.3743131319931234, 0.3950389482828331, 0.7109879652237746) ,
-  rgb (0.3739349933047578, 0.3905082752937583, 0.7093613429347845) ,
-  rgb (0.3735806215098284, 0.3859647438605754, 0.7076929760731058) ,
-  rgb (0.37324816143326384, 0.38140848555753937, 0.7059820097480604) ,
-  rgb (0.3729357864666503, 0.3768396383521984, 0.7042275578058994) ,
-  rgb (0.37264166757849604, 0.3722583500483685, 0.7024287314570723) ,
-  rgb (0.37236397858465387, 0.36766477862108266, 0.7005846349652077) ,
-  rgb (0.3721008970244382, 0.3630590973698238, 0.6986943461507372) ,
-  rgb (0.3718506155898596, 0.3584414828587522, 0.6967569581025654) ,
-  rgb (0.3716113323440048, 0.3538121372967869, 0.6947714991938089) ,
-  rgb (0.37138124223736607, 0.34917126878479027, 0.6927370347192883) ,
-  rgb (0.37115856636209105, 0.3445191141023017, 0.6906525358646499) ,
-  rgb (0.3709415155133733, 0.33985591488818123, 0.6885170337950512) ,
-  rgb (0.3707283327942267, 0.33518193808489577, 0.6863294816960677) ,
-  rgb (0.37051738634484427, 0.3304974124430785, 0.6840888878885721) ,
-  rgb (0.37030682071842685, 0.32580269697872455, 0.6817941168448668) ,
-  rgb (0.37009487130772695, 0.3210981375964933, 0.6794440539905685) ,
-  rgb (0.3698798032902536, 0.31638410101153364, 0.6770375543809057) ,
-  rgb (0.36965987626565955, 0.3116609876295197, 0.6745734474341955) ,
-  rgb (0.3694333459127623, 0.3069292355186234, 0.6720505284912062) ,
-  rgb (0.36919847837592484, 0.3021893217650707, 0.6694675433161452) ,
-  rgb (0.3689535530659678, 0.29744175492366276, 0.6668232208982426) ,
-  rgb (0.3686968223189527, 0.292687098561501, 0.6641162529823691) ,
-  rgb (0.36842655638020444, 0.2879259643777846, 0.661345269109446) ,
-  rgb (0.3681410147989972, 0.2831590122118299, 0.6585088880697231) ,
-  rgb (0.3678384369653108, 0.2783869718129776, 0.655605668384537) ,
-  rgb (0.36751707094367697, 0.2736106331709098, 0.6526341171161864) ,
-  rgb (0.36717513650699446, 0.26883085667326956, 0.6495927229789225) ,
-  rgb (0.3668108554010799, 0.26404857724525643, 0.6464799165290824) ,
-  rgb (0.3664224325155063, 0.25926481158628106, 0.6432940914076554) ,
-  rgb (0.36600853966739794, 0.25448043878086224, 0.6400336180336859) ,
-  rgb (0.3655669837353898, 0.24969683475296395, 0.6366967518748858) ,
-  rgb (0.3650957984588681, 0.24491536803550484, 0.6332817352005559) ,
-  rgb (0.3645930889012501, 0.24013747024823828, 0.629786801550261) ,
-  rgb (0.3640569302208851, 0.23536470386204195, 0.6262101345195302) ,
-  rgb (0.36348537610385145, 0.2305987621839642, 0.6225498862239288) ,
-  rgb (0.3628764356004103, 0.2258414929328703, 0.6188041741082302) ,
-  rgb (0.36222809558295926, 0.22109488427338303, 0.6149711234609613) ,
-  rgb (0.36153829010998356, 0.21636111429594002, 0.6110488067964093) ,
-  rgb (0.36080493826624654, 0.21164251793458128, 0.6070353217206471) ,
-  rgb (0.36002681809096376, 0.20694122817889948, 0.6029284543191687) ,
-  rgb (0.35920088560930186, 0.20226037920758122, 0.5987265295935138) ,
-  rgb (0.3583248996661781, 0.197602942459778, 0.5944276851750107) ,
-  rgb (0.35739663292915563, 0.1929720819784246, 0.5900301125106313) ,
-  rgb (0.35641381143126327, 0.18837119869242164, 0.5855320765920552) ,
-  rgb (0.3553741530690672, 0.18380392577704466, 0.580931914318328) ,
-  rgb (0.3542753496066376, 0.17927413271618647, 0.5762280966066872) ,
-  rgb (0.35311574421123737, 0.17478570377561287, 0.5714187152355529) ,
-  rgb (0.3518924860887379, 0.17034320478524959, 0.5665028491121665) ,
-  rgb (0.3506030444193101, 0.1659512998472086, 0.5614796470399323) ,
-  rgb (0.34924513554955644, 0.16161477763045118, 0.5563483747416378) ,
-  rgb (0.3478165323877778, 0.1573386351115298, 0.5511085345270326) ,
-  rgb (0.3463150717579309, 0.15312802296627787, 0.5457599924248665) ,
-  rgb (0.34473901574536375, 0.1489882058982641, 0.5403024592040654) ,
-  rgb (0.34308600291572294, 0.14492465359918028, 0.534737042820671) ,
-  rgb (0.34135411074506483, 0.1409427920655632, 0.5290650094033675) ,
-  rgb (0.33954168752669694, 0.1370480189671817, 0.5232879753508524) ,
-  rgb (0.3376473209067111, 0.13324562282438077, 0.5174080757397947) ,
-  rgb (0.33566978565015315, 0.12954074251271822, 0.5114280721516895) ,
-  rgb (0.33360804901486, 0.1259381830100592, 0.505351647966549) ,
-  rgb (0.33146154891145124, 0.12244245263391232, 0.4991827458843107) ,
-  rgb (0.3292300520323141, 0.11905764321981127, 0.49292595612342666) ,
-  rgb (0.3269137124539796, 0.1157873496841953, 0.4865864649569746) ,
-  rgb (0.32451307931207785, 0.11263459791730848, 0.48017007211645196) ,
-  rgb (0.3220288227606932, 0.10960114111258401, 0.4736849472572688) ,
-  rgb (0.31946262395497965, 0.1066887988239266, 0.46713728801395243) ,
-  rgb (0.316816480890235, 0.10389861387653518, 0.46053414662739794) ,
-  rgb (0.3140927841475553, 0.10123077676403242, 0.45388335612058467) ,
-  rgb (0.31129434479712365, 0.0986847719340522, 0.4471931371516162) ,
-  rgb (0.30842444457210105, 0.09625938534057774, 0.44047194882050544) ,
-  rgb (0.30548675819945936, 0.09395276484082374, 0.4337284999936111) ,
-  rgb (0.3024853636457425, 0.0917611873973036, 0.42697404043749887) ,
-  rgb (0.2994248396021477, 0.08968225371675004, 0.42021619665853854) ,
-  rgb (0.2963100038890529, 0.08771325096046395, 0.41346259134143476) ,
-  rgb (0.2931459309698525, 0.08585065688962071, 0.40672178082365834) ,
-  rgb (0.2899379244517661, 0.08409078829085731, 0.40000214725256295) ,
-  rgb (0.28669151388283165, 0.08242987384848069, 0.39331182532243375) ,
-  rgb (0.28341239797185225, 0.08086415336549937, 0.38665868550105914) ,
-  rgb (0.2801063857697547, 0.07938999480226153, 0.38005028528138707) ,
-  rgb (0.2767793961581559, 0.07800394103378822, 0.37349382846504675) ,
-  rgb (0.2734373934245081, 0.07670280023749607, 0.36699616136347685) ,
-  rgb (0.2700863774911405, 0.07548367558427554, 0.36056376228111864) ,
-  rgb (0.26673233211995284, 0.0743440180285462, 0.3542027606624096) ,
-  rgb (0.26338121807151404, 0.07328165793989708, 0.34791888996380105) ,
-  rgb (0.26003895187439957, 0.0722947810433622, 0.3417175669546984) ,
-  rgb (0.256711916510839, 0.07138010624208224, 0.3356064898460009) ,
-  rgb (0.25340685873736807, 0.07053358292685183, 0.3295945757321303) ,
-  rgb (0.2501284530619938, 0.06975820642910699, 0.32368100685760637) ,
-  rgb (0.24688226237959, 0.06905363944920445, 0.31786993834254956) ,
-  rgb (0.24367372557466271, 0.06841985515092269, 0.3121652405088837) ,
-  rgb (0.2405081333229594, 0.0678571038148556, 0.3065705449367832) ,
-  rgb (0.23739062429054825, 0.06736588805055552, 0.3010892218406587) ,
-  rgb (0.23433055727563878, 0.0669355996616394, 0.295740099298676) ,
-  rgb (0.23132955273021344, 0.06657618693909059, 0.29051361067988485) ,
-  rgb (0.2283917709422868, 0.06628997924139618, 0.28541074411068496) ,
-  rgb (0.22552164337737857, 0.0660781731193956, 0.28043398847505197) ,
-  rgb (0.22272706739121817, 0.06593379067565194, 0.275597146520537) ,
-  rgb (0.22001251100779617, 0.0658579189189076, 0.2709027999432586) ,
-  rgb (0.21737845072382705, 0.06585966123356204, 0.2663420934966951) ,
-  rgb (0.21482843531473683, 0.06594038561377849, 0.26191675992376573) ,
-  rgb (0.21237411048541005, 0.06608502466175845, 0.2576516509356954) ,
-  rgb (0.21001214221188125, 0.06630857391894718, 0.2535289048041211) ,
-  rgb (0.2077442377448806, 0.06661453200418091, 0.24954644291943817) ,
-  rgb (0.20558051999470117, 0.06699046239786874, 0.24572497420147632) ,
-  rgb (0.20352007949514977, 0.06744417961242422, 0.24205576625191821) ,
-  rgb (0.2015613376412984, 0.06798327102620025, 0.23852974228695395) ,
-  rgb (0.19971571438603364, 0.06859271055370472, 0.23517094067076993) ,
-  rgb (0.19794834061899208, 0.06931406607166066, 0.23194647381302336) ,
-  rgb (0.1960826032659409, 0.07032122724242362, 0.22874673279569585) ,
-  rgb (0.19410351363791453, 0.07160830485689157, 0.22558727307410353) ,
-  rgb (0.19199449184606268, 0.0731828306492733, 0.22243385243433622) ,
-  rgb (0.18975853639094634, 0.07501986186214377, 0.2193005075652994) ,
-  rgb (0.18739228342697645, 0.07710209689958833, 0.21618875376309582) ,
-  rgb (0.18488035509396164, 0.07942573027972388, 0.21307651648984993) ,
-  rgb (0.18774482037046955, 0.07725158846803931, 0.21387448578597812) ,
-  rgb (0.19049578401722037, 0.07531127841678764, 0.2146562337112265) ,
-  rgb (0.1931548636579131, 0.07360681904011795, 0.21542362939081539) ,
-  rgb (0.19571853588267552, 0.07215778103960274, 0.21617499187076789) ,
-  rgb (0.19819343656336558, 0.07097462525273879, 0.21690975060032436) ,
-  rgb (0.20058760685133747, 0.07006457614998421, 0.21762721310371608) ,
-  rgb (0.20290365333558247, 0.06943524858045896, 0.21833167885096033) ,
-  rgb (0.20531725273301316, 0.06891959226639757, 0.21911516689288835) ,
-  rgb (0.20785704662965598, 0.06848439879702528, 0.22000133917653536) ,
-  rgb (0.21052882914958676, 0.06812195249816172, 0.22098759107715404) ,
-  rgb (0.2133313859647627, 0.06783014842602667, 0.2220704321302429) ,
-  rgb (0.21625279838647882, 0.06761633027051639, 0.22324568672294431) ,
-  rgb (0.21930503925136402, 0.06746578636294004, 0.22451023616807558) ,
-  rgb (0.22247308588973624, 0.06738821405309284, 0.22585960379408354) ,
-  rgb (0.2257539681670791, 0.06738213230014747, 0.22728984778098055) ,
-  rgb (0.2291562027859284, 0.06743473087115257, 0.22879681433956656) ,
-  rgb (0.23266299920501882, 0.06755710438847978, 0.23037617493752832) ,
-  rgb (0.23627495835774248, 0.06774359820987802, 0.23202360805926608) ,
-  rgb (0.23999586188690308, 0.06798502996477995, 0.23373434258507808) ,
-  rgb (0.2438114972024792, 0.06828985152901187, 0.23550427698321885) ,
-  rgb (0.247720929905011, 0.06865333790948652, 0.2373288009471749) ,
-  rgb (0.25172899728289466, 0.0690646308260355, 0.23920260612763083) ,
-  rgb (0.2558213554748177, 0.06953231029187984, 0.24112190491594204) ,
-  rgb (0.25999463887892144, 0.07005385560386188, 0.24308218808684579) ,
-  rgb (0.2642551220706094, 0.07061659562299544, 0.24507758869355967) ,
-  rgb (0.2685909594817286, 0.07122671627792246, 0.24710443563450618) ,
-  rgb (0.272997015188973, 0.07188355544616351, 0.2491584709323293) ,
-  rgb (0.277471508091428, 0.07258296989925478, 0.2512349399594277) ,
-  rgb (0.2820174629736694, 0.07331569321404097, 0.25332800295084507) ,
-  rgb (0.28662309235899847, 0.07408846082680887, 0.2554347867371703) ,
-  rgb (0.29128515387578635, 0.0748990498474667, 0.25755101595750435) ,
-  rgb (0.2960004726065818, 0.07574533600095842, 0.25967245030364566) ,
-  rgb (0.3007727681291869, 0.07661782433616476, 0.2617929409781967) ,
-  rgb (0.30559226007249934, 0.07752196310753731, 0.2639100669211966) ,
-  rgb (0.31045520848595526, 0.07845687167618218, 0.2660200572779356) ,
-  rgb (0.3153587000920581, 0.07942099731524319, 0.2681190407694196) ,
-  rgb (0.3202998655799406, 0.08041299473755484, 0.2702032289303951) ,
-  rgb (0.3252788886040126, 0.08142839007654609, 0.27226772884656186) ,
-  rgb (0.3302917447118144, 0.08246763389003825, 0.27430929404579435) ,
-  rgb (0.3353335322445545, 0.08353243411900396, 0.2763253435679004) ,
-  rgb (0.34040164359597463, 0.08462223619170267, 0.27831254595259397) ,
-  rgb (0.345493557138718, 0.08573665496512634, 0.28026769921081435) ,
-  rgb (0.3506067824603248, 0.08687555176033529, 0.28218770540182386) ,
-  rgb (0.35573889947341125, 0.08803897435024335, 0.2840695897279818) ,
-  rgb (0.36088752387578377, 0.0892271943627452, 0.28591050458531014) ,
-  rgb (0.36605031412464006, 0.0904406854276979, 0.2877077458811747) ,
-  rgb (0.3712250843130934, 0.09167999748026273, 0.2894586539763317) ,
-  rgb (0.3764103053221462, 0.09294519809377791, 0.2911602415731392) ,
-  rgb (0.38160247377467543, 0.09423873126371218, 0.2928110750626949) ,
-  rgb (0.3867993907954417, 0.09556181960083443, 0.29440901248173756) ,
-  rgb (0.39199887556812907, 0.09691583650296684, 0.2959521200550908) ,
-  rgb (0.39719876876325577, 0.09830232096827862, 0.2974385647628578) ,
-  rgb (0.40239692379737496, 0.09972293031495055, 0.2988667436973397) ,
-  rgb (0.4075912039268871, 0.10117945586419633, 0.300235195077286) ,
-  rgb (0.41277985630360303, 0.1026734006932461, 0.3015422643746897) ,
-  rgb (0.41796105205173684, 0.10420644885760968, 0.3027865203963184) ,
-  rgb (0.42313214269556043, 0.10578120994917611, 0.3039675809469457) ,
-  rgb (0.4282910131578975, 0.1073997763055258, 0.30508479060294547) ,
-  rgb (0.4334355841041439, 0.1090642347484701, 0.3061376792828915) ,
-  rgb (0.4385637818793154, 0.11077667828375456, 0.30712600062348083) ,
-  rgb (0.44367358645071275, 0.11253912421257944, 0.3080497309546545) ,
-  rgb (0.4487629917317482, 0.1143535557462255, 0.30890905921943196) ,
-  rgb (0.4538300508699989, 0.11622183788331528, 0.3097044124984492) ,
-  rgb (0.45887288947308297, 0.11814571137706886, 0.3104363697903881) ,
-  rgb (0.46389102840284874, 0.12012561256850712, 0.31110343446582983) ,
-  rgb (0.46888111384598413, 0.12216445576414045, 0.31170911458932665) ,
-  rgb (0.473841437035254, 0.12426354237989065, 0.31225470169927194) ,
-  rgb (0.47877034239726296, 0.12642401401409453, 0.3127417273582196) ,
-  rgb (0.48366628618847957, 0.1286467902201389, 0.31317188565991266) ,
-  rgb (0.48852847371852987, 0.13093210934893723, 0.31354553695453014) ,
-  rgb (0.49335504375145617, 0.13328091630401023, 0.31386561956734976) ,
-  rgb (0.4981443546207415, 0.13569380302451714, 0.314135190862664) ,
-  rgb (0.5028952497497061, 0.13817086581280427, 0.3143566215383367) ,
-  rgb (0.5076068118105369, 0.14071192654913128, 0.3145320012008257) ,
-  rgb (0.5122783510532176, 0.14331656120063752, 0.3146630922831542) ,
-  rgb (0.5169084880054446, 0.14598463068714407, 0.3147540759228004) ,
-  rgb (0.5214965286322996, 0.14871544765633712, 0.3148076795453443) ,
-  rgb (0.5260418962547748, 0.15150818660835483, 0.31482653406646727) ,
-  rgb (0.5305442048985645, 0.15436183633886777, 0.3148129978918713) ,
-  rgb (0.5350027976174474, 0.15727540775107324, 0.3147708520739653) ,
-  rgb (0.5394173664919906, 0.16024769309971934, 0.31470295028655965) ,
-  rgb (0.5437877131360856, 0.16327738551419116, 0.31461204226295625) ,
-  rgb (0.5481137003346762, 0.1663630904279047, 0.3145010299091471) ,
-  rgb (0.5523952157271191, 0.16950338809328983, 0.3143729155461537) ,
-  rgb (0.5566322903496934, 0.17269677158182117, 0.31423043195101424) ,
-  rgb (0.5608249903911717, 0.17594170887918095, 0.31407639883970623) ,
-  rgb (0.564973435290177, 0.17923664950367169, 0.3139136046337036) ,
-  rgb (0.5690778478401143, 0.18258004462335425, 0.3137444095679653) ,
-  rgb (0.5731384575410787, 0.18597036007065024, 0.3135712686852) ,
-  rgb (0.5771555081299204, 0.18940601489760422, 0.3133970433357208) ,
-  rgb (0.5811293276158656, 0.19288548904692518, 0.3132239939418394) ,
-  rgb (0.5850602439646688, 0.19640737049066315, 0.3130540116373273) ,
-  rgb (0.5889486193554471, 0.19997020971775276, 0.31288922211590126) ,
-  rgb (0.5927948053652026, 0.20357251410079796, 0.3127323483930494) ,
-  rgb (0.5965991810912237, 0.207212956082026, 0.3125852303112123) ,
-  rgb (0.6003621301041158, 0.21089030138947745, 0.3124493441041469) ,
-  rgb (0.6040840169673274, 0.21460331490206347, 0.31232652641170694) ,
-  rgb (0.6077652399481865, 0.21835070166659282, 0.312219032918702) ,
-  rgb (0.6114062072731884, 0.22213124697023234, 0.3121288139643524) ,
-  rgb (0.6150072323639137, 0.22594402043981826, 0.3120568068576574) ,
-  rgb (0.6185686525887719, 0.2297879924917992, 0.3120046383872893) ,
-  rgb (0.6220907982108261, 0.2336621873300741, 0.3119738327362739) ,
-  rgb (0.6255741650043496, 0.23756535071152696, 0.3119669831491227) ,
-  rgb (0.6290189201698587, 0.24149689191922535, 0.3119844719564572) ,
-  rgb (0.6324253485421027, 0.24545598775548677, 0.3120276597462445) ,
-  rgb (0.6357937104834237, 0.24944185818822678, 0.3120979395330059) ,
-  rgb (0.6391243387840212, 0.2534536546198314, 0.3121968961206398) ,
-  rgb (0.642417577481186, 0.257490519876798, 0.31232631707560987) ,
-  rgb (0.6456734938264543, 0.2615520316161528, 0.31248673753935263) ,
-  rgb (0.6488923016945825, 0.2656375533620908, 0.3126794181957019) ,
-  rgb (0.652074172902773, 0.269746505252367, 0.3129056060581917) ,
-  rgb (0.6552193260932713, 0.2738782665241015, 0.3131666792687211) ,
-  rgb (0.6583280801134499, 0.2780321095766563, 0.3134643447952643) ,
-  rgb (0.6614003753260178, 0.28220778870555907, 0.3137991292649849) ,
-  rgb (0.6644363246987884, 0.2864048361425618, 0.31417223403606975) ,
-  rgb (0.6674360376636913, 0.29062280081258873, 0.31458483752056837) ,
-  rgb (0.670399595476762, 0.29486126309253047, 0.3150381395687221) ,
-  rgb (0.6733272556481733, 0.29911962764489264, 0.3155337232398221) ,
-  rgb (0.6762189792440975, 0.30339762792450425, 0.3160724937230589) ,
-  rgb (0.6790747402815734, 0.30769497879760166, 0.31665545668946665) ,
-  rgb (0.6818945715094452, 0.31201133280550686, 0.3172838048924495) ,
-  rgb (0.6846785094249453, 0.3163463482122221, 0.31795870784057567) ,
-  rgb (0.6874265643516962, 0.32069970535138104, 0.3186813762227769) ,
-  rgb (0.6901389321505248, 0.32507091815606004, 0.319453323328983) ,
-  rgb (0.6928154484676493, 0.32945984647042675, 0.3202754315314667) ,
-  rgb (0.6954560834689112, 0.33386622163232865, 0.3211488430698579) ,
-  rgb (0.6980608153581771, 0.3382897632604862, 0.3220747885521809) ,
-  rgb (0.700629624772421, 0.34273019305341756, 0.32305449047765694) ,
-  rgb (0.7031624945881415, 0.34718723719598, 0.32408913679491225) ,
-  rgb (0.7056595112261009, 0.3516605297812094, 0.32518014084085567) ,
-  rgb (0.7081205956842048, 0.356149855233803, 0.32632861885644465) ,
-  rgb (0.7105456546582587, 0.36065500290840113, 0.3275357416278876) ,
-  rgb (0.7129346683977347, 0.36517570519856757, 0.3288027427038317) ,
-  rgb (0.7152876061484729, 0.3697117022522345, 0.3301308728723546) ,
-  rgb (0.7176044490813385, 0.3742627271068619, 0.3315213862095893) ,
-  rgb (0.7198852149054985, 0.37882848839337313, 0.332975552002454) ,
-  rgb (0.7221299918421461, 0.3834086450896306, 0.33449469983585844) ,
-  rgb (0.7243386564778159, 0.38800301593162145, 0.3360799596569183) ,
-  rgb (0.7265112290022755, 0.3926113126792577, 0.3377325942005665) ,
-  rgb (0.7286477385671655, 0.39723324476747235, 0.33945384341064017) ,
-  rgb (0.7307482075484517, 0.401868526884681, 0.3412449533046818) ,
-  rgb (0.7328127050626875, 0.4065168468778026, 0.3431071517341082) ,
-  rgb (0.7348413359856494, 0.4111778700451951, 0.3450416947080907) ,
-  rgb (0.7368342217358587, 0.4158512585029011, 0.347049785207584) ,
-  rgb (0.7387914002459927, 0.4205367299231533, 0.34913260148542435) ,
-  rgb (0.7407130161950609, 0.4252339389526239, 0.35129130890802607) ,
-  rgb (0.7425992159973317, 0.42994254036133867, 0.3535270924537459) ,
-  rgb (0.7444501867657067, 0.4346621718461711, 0.35584108091122535) ,
-  rgb (0.7462661578916344, 0.439392450449735, 0.3582343914230064) ,
-  rgb (0.7480473927555956, 0.44413297780351974, 0.36070813602540136) ,
-  rgb (0.7497942054717047, 0.4488833348154881, 0.3632633755836028) ,
-  rgb (0.7515068504589166, 0.45364314496866825, 0.36590112443835765) ,
-  rgb (0.7531856636904657, 0.45841199172949604, 0.3686223664223477) ,
-  rgb (0.7548310506695954, 0.46318942799460555, 0.3714280448394211) ,
-  rgb (0.7564434157714071, 0.4679750143794846, 0.37431909037543515) ,
-  rgb (0.7580232553845584, 0.4727682731566229, 0.3772963553109668) ,
-  rgb (0.7595711110534006, 0.4775687122205708, 0.380360657784311) ,
-  rgb (0.7610876378057071, 0.48237579130289127, 0.3835127572385229) ,
-  rgb (0.7625733355405261, 0.48718906673415824, 0.38675335037837993) ,
-  rgb (0.7640288560928866, 0.49200802533379656, 0.39008308392311997) ,
-  rgb (0.7654549259333051, 0.4968321290972723, 0.3935025400011538) ,
-  rgb (0.7668522895064389, 0.5016608471009063, 0.39701221751773474) ,
-  rgb (0.768221765997353, 0.5064936237128791, 0.40061257089416885) ,
-  rgb (0.7695642334401418, 0.5113298901696085, 0.4043039806968248) ,
-  rgb (0.7708809196230247, 0.516168926434691, 0.40808667584648967) ,
-  rgb (0.7721725722960555, 0.5210102658711383, 0.4119608998712287) ,
-  rgb (0.7734402182988989, 0.5258533209345156, 0.41592679539764366) ,
-  rgb (0.774684947460632, 0.5306974938477673, 0.4199844035696376) ,
-  rgb (0.775907907306857, 0.5355421788246119, 0.42413367909988375) ,
-  rgb (0.7771103295521099, 0.5403867491056124, 0.4283745037125848) ,
-  rgb (0.7782934580763312, 0.545230594884266, 0.432706647838971) ,
-  rgb (0.7794586273150664, 0.5500730841397727, 0.4371297985644476) ,
-  rgb (0.7806077474948377, 0.5549133574489061, 0.4416433242636464) ,
-  rgb (0.7817418047898184, 0.5597509805259486, 0.44624687186865436) ,
-  rgb (0.7828622526444091, 0.5645853311116688, 0.45093985823706345) ,
-  rgb (0.7839706083641448, 0.5694157832671042, 0.4557215474289206) ,
-  rgb (0.7850684501960684, 0.5742417003617839, 0.46059116206904965) ,
-  rgb (0.7861573713233296, 0.5790624629815756, 0.465547782819184) ,
-  rgb (0.7872390410818835, 0.5838774374455721, 0.47059039582133383) ,
-  rgb (0.7883151404562396, 0.5886860017356244, 0.4757179187907608) ,
-  rgb (0.7893873776625194, 0.5934875421745599, 0.48092913815357724) ,
-  rgb (0.7904577684772788, 0.5982813427706246, 0.48622257801969754) ,
-  rgb (0.7915283284347561, 0.603066705931472, 0.49159667021646397) ,
-  rgb (0.7926003430423745, 0.6078432208703702, 0.4970502062153201) ,
-  rgb (0.7936755969866496, 0.6126102933407219, 0.5025816129126943) ,
-  rgb (0.7947558597265404, 0.617367344002207, 0.5081892121310299) ,
-  rgb (0.7958429237958377, 0.6221137880845115, 0.5138712409190979) ,
-  rgb (0.7969385471995161, 0.626849056792967, 0.5196258425240281) ,
-  rgb (0.7980444781513664, 0.6315725822508955, 0.5254510814483478) ,
-  rgb (0.7991624518501963, 0.6362837937202919, 0.5313449594256143) ,
-  rgb (0.8002941538975398, 0.6409821330674986, 0.5373053518514104) ,
-  rgb (0.8014412429256005, 0.6456670345921877, 0.5433300863249918) ,
-  rgb (0.8026053114611295, 0.6503379374810385, 0.5494169158460365) ,
-  rgb (0.8037879253107763, 0.6549942654947263, 0.5555635086708381) ,
-  rgb (0.804990547908103, 0.6596354502756416, 0.5617674511054698) ,
-  rgb (0.8062146052692706, 0.6642608958528229, 0.5680262917864979) ,
-  rgb (0.8074614045096935, 0.6688700095398864, 0.5743374637345958) ,
-  rgb (0.8087321917008969, 0.6734621670219452, 0.5806983480557674) ,
-  rgb (0.8100280946652069, 0.6780367267397182, 0.5871062690808275) ,
-  rgb (0.8113501401176333, 0.6825930154624339, 0.5935584890905076) ,
-  rgb (0.8126992203988149, 0.6871303371461888, 0.600052148204351) ,
-  rgb (0.8140761104699334, 0.6916479479148213, 0.6065843782630862) ,
-  rgb (0.8154814662727948, 0.6961450550830809, 0.6131522120932265) ,
-  rgb (0.8169157577505589, 0.7006208301478398, 0.6197526063725792) ,
-  rgb (0.8183793116449822, 0.705074381896351, 0.626382454789333) ,
-  rgb (0.8198723065045529, 0.7095047497878748, 0.6330385704006711) ,
-  rgb (0.8213947205565636, 0.7139109141951604, 0.6397176669767276) ,
-  rgb (0.8229463511042843, 0.7182917733129006, 0.6464164243818421) ,
-  rgb (0.8245268129450285, 0.7226461431208888, 0.653131379154226) ,
-  rgb (0.8261354971058026, 0.7269727551823826, 0.659859001562165) ,
-  rgb (0.8277716072353446, 0.7312702332407809, 0.6665957020468297) ,
-  rgb (0.8294340781648147, 0.7355371221572935, 0.6733377200930191) ,
-  rgb (0.8311216352909631, 0.7397718464763862, 0.6800812520363146) ,
-  rgb (0.8328327718577798, 0.7439727181745988, 0.6868223587464855) ,
-  rgb (0.8345656905566583, 0.7481379479992134, 0.6935569764986385) ,
-  rgb (0.8363189884473793, 0.7522654895287526, 0.7002799902886496) ,
-  rgb (0.8380912347613196, 0.7563531486080863, 0.7069856139021298) ,
-  rgb (0.8398783988412087, 0.7603990719977968, 0.7136714781112923) ,
-  rgb (0.8416775076684515, 0.7644010120098295, 0.7203329938728462) ,
-  rgb (0.843485292229337, 0.7683566039987018, 0.7269653699897204) ,
-  rgb (0.8452981073195511, 0.7722633860104472, 0.7335636824054149) ,
-  rgb (0.847111955079651, 0.7761188023604716, 0.7401227576280706) ,
-  rgb (0.8489224556311764, 0.7799202140765015, 0.7466371929366437) ,
-  rgb (0.8507269702317879, 0.7836645734238389, 0.7530974636118285) ,
-  rgb (0.8525190720770844, 0.7873493613354844, 0.7594994148789691) ,
-  rgb (0.8542921961147046, 0.7909719677709199, 0.765838014779141) ,
-  rgb (0.856040223147254, 0.7945296360155061, 0.7721061003767414) ,
-  rgb (0.857756629435049, 0.7980196314271393, 0.778295716672475) ,
-  rgb (0.8594346370300241, 0.8014392309950078, 0.7843978875138392) ,
-  rgb (0.8610711702756552, 0.8047851790981223, 0.7903952966373629) ,
-  rgb (0.8626560105112757, 0.8080552380426153, 0.796282666437655) ,
-  rgb (0.8641834372394103, 0.8112464422465354, 0.8020461269686395) ,
-  rgb (0.8656493432560532, 0.8143554406751491, 0.8076697232416455) ,
-  rgb (0.867053149070485, 0.8173780404191124, 0.813134196269114) ,
-  rgb (0.8683995469581863, 0.8203087551218152, 0.8184163896312899) ,
-  rgb (0.8696913150261381, 0.8231415885956916, 0.8235047668317317) ,
-  rgb (0.8709384671729751, 0.8258685788943851, 0.8283849726114961) ,
-  rgb (0.8721533197845432, 0.8284805282370967, 0.8330486712880828) ,
-  rgb (0.8733517136091627, 0.8309671525127262, 0.8374885100119709) ,
-  rgb (0.8745379332026019, 0.8333197294864546, 0.8417192535806901) ,
-  rgb (0.875714587099614, 0.8355302318472394, 0.8457553751902708) ,
-  rgb (0.8768784845161469, 0.8375923807118654, 0.8496137354915025) ,
-  rgb (0.8780229843664901, 0.8395016561854007, 0.8533064535245892) ,
-  rgb (0.8791324424079277, 0.8412555488447591, 0.8568557229103964) ,
-  rgb (0.8801929331569581, 0.8428522482477862, 0.8602739992715663) ,
-  rgb (0.8811916987134195, 0.8442906671771735, 0.8635659516866988) ,
-  rgb (0.8821154248940161, 0.8455700725455935, 0.8667376504623333) ,
-  rgb (0.8829516859544853, 0.8466897027569927, 0.8697961704819097) ,
-  rgb (0.8836912714589804, 0.8476489176151927, 0.8727414710144156) ,
-  rgb (0.8843271305411354, 0.8484474157205542, 0.8755678522824297) ,
-  rgb (0.8848513815990857, 0.849084264228938, 0.8782823528537247) ,
-  rgb (0.8852589797263047, 0.8495589281098921, 0.8808841479402484) ,
-  rgb (0.8855471481195238, 0.8498717428363158, 0.8833620612117095) ,
-  rgb (0.8857115512284565, 0.8500218611585632, 0.8857253899008712)
-});
+    rgb (0.8857501584075443, 0.8500092494306783, 0.8879736506427196) ,
+      rgb (0.8837852019553906, 0.8507294054031063, 0.8872322209694989) ,
+      rgb (0.8817223105928579, 0.8512759407765347, 0.8863805692551482) ,
+      rgb (0.8795410528270573, 0.8516567540749572, 0.8854143767924102) ,
+      rgb (0.8772488085896548, 0.8518702833887027, 0.8843412038131143) ,
+      rgb (0.8748534750857597, 0.8519152612302319, 0.8831692696761383) ,
+      rgb (0.8723313408512408, 0.8518016547808089, 0.8818970435500162) ,
+      rgb (0.8697047485350982, 0.8515240300479789, 0.8805388339000336) ,
+      rgb (0.8669601550533358, 0.8510896085314068, 0.8790976697717334) ,
+      rgb (0.86408985081464, 0.8505039116750779, 0.8775792578489263) ,
+      rgb (0.8611024543689985, 0.8497675485700126, 0.8759924292343957) ,
+      rgb (0.8579825924567037, 0.8488893481028184, 0.8743403855344628) ,
+      rgb (0.8547259318925698, 0.8478748812467282, 0.8726282980930582) ,
+      rgb (0.8513371457085719, 0.8467273579611647, 0.8708608165735044) ,
+      rgb (0.8478071070257792, 0.8454546229209523, 0.8690403678369444) ,
+      rgb (0.8441261828674842, 0.8440648271103739, 0.8671697332269007) ,
+      rgb (0.8403042080595778, 0.8425605950855084, 0.865250882410458) ,
+      rgb (0.8363403180919118, 0.8409479651895194, 0.8632852800107016) ,
+      rgb (0.8322270571293441, 0.8392349062775448, 0.8612756350042788) ,
+      rgb (0.8279689431601354, 0.837426007513952, 0.8592239945130679) ,
+      rgb (0.8235742968025285, 0.8355248776479544, 0.8571319132851495) ,
+      rgb (0.8190465467793753, 0.8335364929949034, 0.855002062870101) ,
+      rgb (0.8143898212114309, 0.8314655869419785, 0.8528375906214702) ,
+      rgb (0.8095999819094809, 0.8293189667350546, 0.8506444160105037) ,
+      rgb (0.8046916442981458, 0.8270983878056066, 0.8484244929697402) ,
+      rgb (0.79967075421268, 0.8248078181208093, 0.8461821002957853) ,
+      rgb (0.7945430508923111, 0.8224511622630462, 0.8439218478682798) ,
+      rgb (0.7893144556460892, 0.8200321318870201, 0.8416486380471222) ,
+      rgb (0.7839910104276492, 0.8175542640053343, 0.8393674746403673) ,
+      rgb (0.7785789200822759, 0.8150208937874255, 0.8370834463093898) ,
+      rgb (0.7730841659017094, 0.8124352473546601, 0.8348017295057968) ,
+      rgb (0.7675110850441786, 0.8098007598713145, 0.8325281663805967) ,
+      rgb (0.7618690793798029, 0.8071194938764749, 0.830266486168872) ,
+      rgb (0.7561644358438198, 0.8043940873347794, 0.8280213899472) ,
+      rgb (0.750403467654067, 0.8016269900896532, 0.8257973785108242) ,
+      rgb (0.7445924777189017, 0.7988204771958325, 0.8235986758615652) ,
+      rgb (0.7387377170049494, 0.7959766573503101, 0.8214292278043301) ,
+      rgb (0.7328454364552346, 0.7930974646884407, 0.8192926338423038) ,
+      rgb (0.726921775128297, 0.7901846863592763, 0.8171921746672638) ,
+      rgb (0.7209728066553678, 0.7872399592345264, 0.8151307392087926) ,
+      rgb (0.7150040307625213, 0.7842648709158119, 0.8131111655994991) ,
+      rgb (0.709020781345393, 0.7812608871607091, 0.8111359185511793) ,
+      rgb (0.7030297722540817, 0.7782290497335813, 0.8092061884805697) ,
+      rgb (0.6970365443886174, 0.7751705000806606, 0.8073233538006345) ,
+      rgb (0.691046410093091, 0.7720862946067809, 0.8054884169067907) ,
+      rgb (0.6850644615439593, 0.7689774029354699, 0.8037020626717691) ,
+      rgb (0.6790955449988215, 0.765844721313959, 0.8019646617300199) ,
+      rgb (0.6731442255942621, 0.7626890873389048, 0.8002762854580953) ,
+      rgb (0.6672147980375281, 0.7595112803730375, 0.7986367465453776) ,
+      rgb (0.6613112930078745, 0.7563120270871903, 0.7970456043491897) ,
+      rgb (0.6554369232645472, 0.7530920875676843, 0.7955027112903105) ,
+      rgb (0.6495957300425348, 0.7498520122194177, 0.7940067402149911) ,
+      rgb (0.6437910831099849, 0.7465923800833657, 0.7925565320130605) ,
+      rgb (0.6380258682854598, 0.7433137671403319, 0.7911510045957317) ,
+      rgb (0.6323027138710603, 0.740016721601314, 0.7897889276264043) ,
+      rgb (0.6266240202260459, 0.7367017540369944, 0.7884690131633456) ,
+      rgb (0.6209919306481755, 0.733369347989232, 0.7871899462469658) ,
+      rgb (0.6154084641177048, 0.7300199523273969, 0.7859502270675048) ,
+      rgb (0.6098754317609306, 0.7266539875975829, 0.7847483573269471) ,
+      rgb (0.6043943420027486, 0.7232718614323369, 0.7835829559353559) ,
+      rgb (0.5989665814482068, 0.7198739489224673, 0.7824525989934664) ,
+      rgb (0.5935933569683722, 0.7164606049658685, 0.781355882376401) ,
+      rgb (0.588275797805555, 0.7130321464645814, 0.7802914140563652) ,
+      rgb (0.5830148703693241, 0.7095888767699747, 0.7792578182047659) ,
+      rgb (0.5778116438998202, 0.7061310615715398, 0.7782534512102552) ,
+      rgb (0.5726668948158774, 0.7026589535425779, 0.7772770268091199) ,
+      rgb (0.5675811785386197, 0.6991727930264627, 0.776327485342753) ,
+      rgb (0.5625551535721934, 0.6956727838162965, 0.7754035914230984) ,
+      rgb (0.5575894041960517, 0.6921591145825405, 0.7745041337932782) ,
+      rgb (0.5526845058934713, 0.6886319451516638, 0.7736279426902245) ,
+      rgb (0.5478409815301863, 0.6850914221850988, 0.7727738647344087) ,
+      rgb (0.5430593242401823, 0.6815376725306588, 0.7719407969783508) ,
+      rgb (0.5383401557517628, 0.677970811290954, 0.7711273443905772) ,
+      rgb (0.533683891477284, 0.6743909370521273, 0.7703325054879735) ,
+      rgb (0.529090861832473, 0.6707981230280622, 0.7695555229231313) ,
+      rgb (0.5245615147059358, 0.6671924299614223, 0.7687954171423095) ,
+      rgb (0.5200962739223556, 0.6635739143403039, 0.768051194033441) ,
+      rgb (0.5156955988596057, 0.65994260812898, 0.7673219148959617) ,
+      rgb (0.5113599254160193, 0.6562985398183186, 0.7666066378064533) ,
+      rgb (0.5070896957645166, 0.6526417240314645, 0.7659044566083585) ,
+      rgb (0.5028853540415561, 0.6489721673409526, 0.7652144671817491) ,
+      rgb (0.4987473366135607, 0.6452898684900934, 0.7645357873418008) ,
+      rgb (0.4946761847863938, 0.6415948411950443, 0.7638671900213091) ,
+      rgb (0.4906722493856122, 0.6378870485884708, 0.7632081276316384) ,
+      rgb (0.4867359599430568, 0.6341664625110051, 0.7625578008592404) ,
+      rgb (0.4828677867260272, 0.6304330455306234, 0.761915371498953) ,
+      rgb (0.47906816236197386, 0.6266867625186013, 0.7612800037566242) ,
+      rgb (0.47533752394906287, 0.6229275728383581, 0.7606508557181775) ,
+      rgb (0.4716762951887709, 0.6191554324288464, 0.7600270922788305) ,
+      rgb (0.46808490970531597, 0.6153702869579029, 0.7594078989109274) ,
+      rgb (0.4645637671630393, 0.6115720882286415, 0.7587924262302581) ,
+      rgb (0.4611132664702388, 0.607760777169989, 0.7581798643680714) ,
+      rgb (0.45773377230160567, 0.6039363004658646, 0.7575693690185916) ,
+      rgb (0.45442563977552913, 0.6000985950385866, 0.7569601366060649) ,
+      rgb (0.45118918687617743, 0.5962476205135354, 0.7563512064324664) ,
+      rgb (0.4480247093358917, 0.5923833145214658, 0.7557417647410792) ,
+      rgb (0.4449324685421538, 0.5885055998308617, 0.7551311041857901) ,
+      rgb (0.441912717666964, 0.5846144110017557, 0.7545183888441067) ,
+      rgb (0.43896563958048396, 0.5807096924109849, 0.7539027620828594) ,
+      rgb (0.4360913895835637, 0.5767913799818608, 0.7532834105961016) ,
+      rgb (0.43329008867358393, 0.5728594162560667, 0.7526594653256667) ,
+      rgb (0.4305617907305757, 0.5689137457245718, 0.752030080993127) ,
+      rgb (0.42790652284925834, 0.5649543060909209, 0.7513944352191484) ,
+      rgb (0.42532423665011354, 0.560981049599503, 0.7507516498900512) ,
+      rgb (0.4228148567577266, 0.5569939212699658, 0.7501008698822764) ,
+      rgb (0.42037822361396326, 0.5529928715810817, 0.7494412559451894) ,
+      rgb (0.4180141407923363, 0.5489778542188889, 0.7487719316700112) ,
+      rgb (0.4157223260454232, 0.544948827153504, 0.7480920445900052) ,
+      rgb (0.4135024574331473, 0.5409057477109848, 0.7474007329754309) ,
+      rgb (0.4113541469730457, 0.5368485776500593, 0.7466971285506578) ,
+      rgb (0.4092768899914751, 0.5327773017713032, 0.7459803063570782) ,
+      rgb (0.4072701869421907, 0.5286918801105741, 0.7452494263758127) ,
+      rgb (0.4053334378930318, 0.5245922817498312, 0.7445036583670813) ,
+      rgb (0.40346600333905397, 0.5204784765384003, 0.7437421522356709) ,
+      rgb (0.40166714010896104, 0.5163504496968876, 0.7429640345324835) ,
+      rgb (0.39993606933454834, 0.5122081814321852, 0.7421684457131799) ,
+      rgb (0.3982719152586337, 0.5080516653927614, 0.7413545091809972) ,
+      rgb (0.3966737490566561, 0.5038808905384797, 0.7405213858051674) ,
+      rgb (0.3951405880820763, 0.4996958532637776, 0.7396682021171571) ,
+      rgb (0.39367135736822567, 0.4954965577745118, 0.738794102296364) ,
+      rgb (0.39226494876209317, 0.4912830033289926, 0.7378982478447508) ,
+      rgb (0.390920175719949, 0.4870552025122304, 0.7369797713388125) ,
+      rgb (0.38963580160340855, 0.48281316715123496, 0.7360378254693274) ,
+      rgb (0.3884105330084243, 0.47855691131792805, 0.7350715764115726) ,
+      rgb (0.3872430145933025, 0.4742864593363539, 0.7340801678785439) ,
+      rgb (0.386131841788921, 0.4700018340988123, 0.7330627749243106) ,
+      rgb (0.3850755679365139, 0.46570306719930193, 0.732018540336905) ,
+      rgb (0.38407269378943537, 0.46139018782416635, 0.7309466543290268) ,
+      rgb (0.3831216808440275, 0.457063235814072, 0.7298462679135326) ,
+      rgb (0.38222094988570376, 0.45272225034283325, 0.7287165614400378) ,
+      rgb (0.3813688793045416, 0.4483672766927786, 0.7275567131714135) ,
+      rgb (0.3805638069656562, 0.4439983720863372, 0.7263658704513531) ,
+      rgb (0.3798040374484875, 0.4396155882122263, 0.7251432377876109) ,
+      rgb (0.3790878928311076, 0.43521897612544935, 0.7238879869132313) ,
+      rgb (0.378413635091359, 0.43080859411413064, 0.7225993199306104) ,
+      rgb (0.3777794975351373, 0.4263845142616835, 0.7212763999353023) ,
+      rgb (0.3771837184425123, 0.4219468022345483, 0.7199184152447577) ,
+      rgb (0.37662448930806297, 0.41749553747893614, 0.7185245473617611) ,
+      rgb (0.37610001286385814, 0.4130307995247706, 0.7170939691992023) ,
+      rgb (0.375608469194424, 0.40855267638072096, 0.7156258509158755) ,
+      rgb (0.37514802505380473, 0.4040612609993941, 0.7141193695725726) ,
+      rgb (0.3747168601930223, 0.3995566498711684, 0.7125736851650046) ,
+      rgb (0.3743131319931234, 0.3950389482828331, 0.7109879652237746) ,
+      rgb (0.3739349933047578, 0.3905082752937583, 0.7093613429347845) ,
+      rgb (0.3735806215098284, 0.3859647438605754, 0.7076929760731058) ,
+      rgb (0.37324816143326384, 0.38140848555753937, 0.7059820097480604) ,
+      rgb (0.3729357864666503, 0.3768396383521984, 0.7042275578058994) ,
+      rgb (0.37264166757849604, 0.3722583500483685, 0.7024287314570723) ,
+      rgb (0.37236397858465387, 0.36766477862108266, 0.7005846349652077) ,
+      rgb (0.3721008970244382, 0.3630590973698238, 0.6986943461507372) ,
+      rgb (0.3718506155898596, 0.3584414828587522, 0.6967569581025654) ,
+      rgb (0.3716113323440048, 0.3538121372967869, 0.6947714991938089) ,
+      rgb (0.37138124223736607, 0.34917126878479027, 0.6927370347192883) ,
+      rgb (0.37115856636209105, 0.3445191141023017, 0.6906525358646499) ,
+      rgb (0.3709415155133733, 0.33985591488818123, 0.6885170337950512) ,
+      rgb (0.3707283327942267, 0.33518193808489577, 0.6863294816960677) ,
+      rgb (0.37051738634484427, 0.3304974124430785, 0.6840888878885721) ,
+      rgb (0.37030682071842685, 0.32580269697872455, 0.6817941168448668) ,
+      rgb (0.37009487130772695, 0.3210981375964933, 0.6794440539905685) ,
+      rgb (0.3698798032902536, 0.31638410101153364, 0.6770375543809057) ,
+      rgb (0.36965987626565955, 0.3116609876295197, 0.6745734474341955) ,
+      rgb (0.3694333459127623, 0.3069292355186234, 0.6720505284912062) ,
+      rgb (0.36919847837592484, 0.3021893217650707, 0.6694675433161452) ,
+      rgb (0.3689535530659678, 0.29744175492366276, 0.6668232208982426) ,
+      rgb (0.3686968223189527, 0.292687098561501, 0.6641162529823691) ,
+      rgb (0.36842655638020444, 0.2879259643777846, 0.661345269109446) ,
+      rgb (0.3681410147989972, 0.2831590122118299, 0.6585088880697231) ,
+      rgb (0.3678384369653108, 0.2783869718129776, 0.655605668384537) ,
+      rgb (0.36751707094367697, 0.2736106331709098, 0.6526341171161864) ,
+      rgb (0.36717513650699446, 0.26883085667326956, 0.6495927229789225) ,
+      rgb (0.3668108554010799, 0.26404857724525643, 0.6464799165290824) ,
+      rgb (0.3664224325155063, 0.25926481158628106, 0.6432940914076554) ,
+      rgb (0.36600853966739794, 0.25448043878086224, 0.6400336180336859) ,
+      rgb (0.3655669837353898, 0.24969683475296395, 0.6366967518748858) ,
+      rgb (0.3650957984588681, 0.24491536803550484, 0.6332817352005559) ,
+      rgb (0.3645930889012501, 0.24013747024823828, 0.629786801550261) ,
+      rgb (0.3640569302208851, 0.23536470386204195, 0.6262101345195302) ,
+      rgb (0.36348537610385145, 0.2305987621839642, 0.6225498862239288) ,
+      rgb (0.3628764356004103, 0.2258414929328703, 0.6188041741082302) ,
+      rgb (0.36222809558295926, 0.22109488427338303, 0.6149711234609613) ,
+      rgb (0.36153829010998356, 0.21636111429594002, 0.6110488067964093) ,
+      rgb (0.36080493826624654, 0.21164251793458128, 0.6070353217206471) ,
+      rgb (0.36002681809096376, 0.20694122817889948, 0.6029284543191687) ,
+      rgb (0.35920088560930186, 0.20226037920758122, 0.5987265295935138) ,
+      rgb (0.3583248996661781, 0.197602942459778, 0.5944276851750107) ,
+      rgb (0.35739663292915563, 0.1929720819784246, 0.5900301125106313) ,
+      rgb (0.35641381143126327, 0.18837119869242164, 0.5855320765920552) ,
+      rgb (0.3553741530690672, 0.18380392577704466, 0.580931914318328) ,
+      rgb (0.3542753496066376, 0.17927413271618647, 0.5762280966066872) ,
+      rgb (0.35311574421123737, 0.17478570377561287, 0.5714187152355529) ,
+      rgb (0.3518924860887379, 0.17034320478524959, 0.5665028491121665) ,
+      rgb (0.3506030444193101, 0.1659512998472086, 0.5614796470399323) ,
+      rgb (0.34924513554955644, 0.16161477763045118, 0.5563483747416378) ,
+      rgb (0.3478165323877778, 0.1573386351115298, 0.5511085345270326) ,
+      rgb (0.3463150717579309, 0.15312802296627787, 0.5457599924248665) ,
+      rgb (0.34473901574536375, 0.1489882058982641, 0.5403024592040654) ,
+      rgb (0.34308600291572294, 0.14492465359918028, 0.534737042820671) ,
+      rgb (0.34135411074506483, 0.1409427920655632, 0.5290650094033675) ,
+      rgb (0.33954168752669694, 0.1370480189671817, 0.5232879753508524) ,
+      rgb (0.3376473209067111, 0.13324562282438077, 0.5174080757397947) ,
+      rgb (0.33566978565015315, 0.12954074251271822, 0.5114280721516895) ,
+      rgb (0.33360804901486, 0.1259381830100592, 0.505351647966549) ,
+      rgb (0.33146154891145124, 0.12244245263391232, 0.4991827458843107) ,
+      rgb (0.3292300520323141, 0.11905764321981127, 0.49292595612342666) ,
+      rgb (0.3269137124539796, 0.1157873496841953, 0.4865864649569746) ,
+      rgb (0.32451307931207785, 0.11263459791730848, 0.48017007211645196) ,
+      rgb (0.3220288227606932, 0.10960114111258401, 0.4736849472572688) ,
+      rgb (0.31946262395497965, 0.1066887988239266, 0.46713728801395243) ,
+      rgb (0.316816480890235, 0.10389861387653518, 0.46053414662739794) ,
+      rgb (0.3140927841475553, 0.10123077676403242, 0.45388335612058467) ,
+      rgb (0.31129434479712365, 0.0986847719340522, 0.4471931371516162) ,
+      rgb (0.30842444457210105, 0.09625938534057774, 0.44047194882050544) ,
+      rgb (0.30548675819945936, 0.09395276484082374, 0.4337284999936111) ,
+      rgb (0.3024853636457425, 0.0917611873973036, 0.42697404043749887) ,
+      rgb (0.2994248396021477, 0.08968225371675004, 0.42021619665853854) ,
+      rgb (0.2963100038890529, 0.08771325096046395, 0.41346259134143476) ,
+      rgb (0.2931459309698525, 0.08585065688962071, 0.40672178082365834) ,
+      rgb (0.2899379244517661, 0.08409078829085731, 0.40000214725256295) ,
+      rgb (0.28669151388283165, 0.08242987384848069, 0.39331182532243375) ,
+      rgb (0.28341239797185225, 0.08086415336549937, 0.38665868550105914) ,
+      rgb (0.2801063857697547, 0.07938999480226153, 0.38005028528138707) ,
+      rgb (0.2767793961581559, 0.07800394103378822, 0.37349382846504675) ,
+      rgb (0.2734373934245081, 0.07670280023749607, 0.36699616136347685) ,
+      rgb (0.2700863774911405, 0.07548367558427554, 0.36056376228111864) ,
+      rgb (0.26673233211995284, 0.0743440180285462, 0.3542027606624096) ,
+      rgb (0.26338121807151404, 0.07328165793989708, 0.34791888996380105) ,
+      rgb (0.26003895187439957, 0.0722947810433622, 0.3417175669546984) ,
+      rgb (0.256711916510839, 0.07138010624208224, 0.3356064898460009) ,
+      rgb (0.25340685873736807, 0.07053358292685183, 0.3295945757321303) ,
+      rgb (0.2501284530619938, 0.06975820642910699, 0.32368100685760637) ,
+      rgb (0.24688226237959, 0.06905363944920445, 0.31786993834254956) ,
+      rgb (0.24367372557466271, 0.06841985515092269, 0.3121652405088837) ,
+      rgb (0.2405081333229594, 0.0678571038148556, 0.3065705449367832) ,
+      rgb (0.23739062429054825, 0.06736588805055552, 0.3010892218406587) ,
+      rgb (0.23433055727563878, 0.0669355996616394, 0.295740099298676) ,
+      rgb (0.23132955273021344, 0.06657618693909059, 0.29051361067988485) ,
+      rgb (0.2283917709422868, 0.06628997924139618, 0.28541074411068496) ,
+      rgb (0.22552164337737857, 0.0660781731193956, 0.28043398847505197) ,
+      rgb (0.22272706739121817, 0.06593379067565194, 0.275597146520537) ,
+      rgb (0.22001251100779617, 0.0658579189189076, 0.2709027999432586) ,
+      rgb (0.21737845072382705, 0.06585966123356204, 0.2663420934966951) ,
+      rgb (0.21482843531473683, 0.06594038561377849, 0.26191675992376573) ,
+      rgb (0.21237411048541005, 0.06608502466175845, 0.2576516509356954) ,
+      rgb (0.21001214221188125, 0.06630857391894718, 0.2535289048041211) ,
+      rgb (0.2077442377448806, 0.06661453200418091, 0.24954644291943817) ,
+      rgb (0.20558051999470117, 0.06699046239786874, 0.24572497420147632) ,
+      rgb (0.20352007949514977, 0.06744417961242422, 0.24205576625191821) ,
+      rgb (0.2015613376412984, 0.06798327102620025, 0.23852974228695395) ,
+      rgb (0.19971571438603364, 0.06859271055370472, 0.23517094067076993) ,
+      rgb (0.19794834061899208, 0.06931406607166066, 0.23194647381302336) ,
+      rgb (0.1960826032659409, 0.07032122724242362, 0.22874673279569585) ,
+      rgb (0.19410351363791453, 0.07160830485689157, 0.22558727307410353) ,
+      rgb (0.19199449184606268, 0.0731828306492733, 0.22243385243433622) ,
+      rgb (0.18975853639094634, 0.07501986186214377, 0.2193005075652994) ,
+      rgb (0.18739228342697645, 0.07710209689958833, 0.21618875376309582) ,
+      rgb (0.18488035509396164, 0.07942573027972388, 0.21307651648984993) ,
+      rgb (0.18774482037046955, 0.07725158846803931, 0.21387448578597812) ,
+      rgb (0.19049578401722037, 0.07531127841678764, 0.2146562337112265) ,
+      rgb (0.1931548636579131, 0.07360681904011795, 0.21542362939081539) ,
+      rgb (0.19571853588267552, 0.07215778103960274, 0.21617499187076789) ,
+      rgb (0.19819343656336558, 0.07097462525273879, 0.21690975060032436) ,
+      rgb (0.20058760685133747, 0.07006457614998421, 0.21762721310371608) ,
+      rgb (0.20290365333558247, 0.06943524858045896, 0.21833167885096033) ,
+      rgb (0.20531725273301316, 0.06891959226639757, 0.21911516689288835) ,
+      rgb (0.20785704662965598, 0.06848439879702528, 0.22000133917653536) ,
+      rgb (0.21052882914958676, 0.06812195249816172, 0.22098759107715404) ,
+      rgb (0.2133313859647627, 0.06783014842602667, 0.2220704321302429) ,
+      rgb (0.21625279838647882, 0.06761633027051639, 0.22324568672294431) ,
+      rgb (0.21930503925136402, 0.06746578636294004, 0.22451023616807558) ,
+      rgb (0.22247308588973624, 0.06738821405309284, 0.22585960379408354) ,
+      rgb (0.2257539681670791, 0.06738213230014747, 0.22728984778098055) ,
+      rgb (0.2291562027859284, 0.06743473087115257, 0.22879681433956656) ,
+      rgb (0.23266299920501882, 0.06755710438847978, 0.23037617493752832) ,
+      rgb (0.23627495835774248, 0.06774359820987802, 0.23202360805926608) ,
+      rgb (0.23999586188690308, 0.06798502996477995, 0.23373434258507808) ,
+      rgb (0.2438114972024792, 0.06828985152901187, 0.23550427698321885) ,
+      rgb (0.247720929905011, 0.06865333790948652, 0.2373288009471749) ,
+      rgb (0.25172899728289466, 0.0690646308260355, 0.23920260612763083) ,
+      rgb (0.2558213554748177, 0.06953231029187984, 0.24112190491594204) ,
+      rgb (0.25999463887892144, 0.07005385560386188, 0.24308218808684579) ,
+      rgb (0.2642551220706094, 0.07061659562299544, 0.24507758869355967) ,
+      rgb (0.2685909594817286, 0.07122671627792246, 0.24710443563450618) ,
+      rgb (0.272997015188973, 0.07188355544616351, 0.2491584709323293) ,
+      rgb (0.277471508091428, 0.07258296989925478, 0.2512349399594277) ,
+      rgb (0.2820174629736694, 0.07331569321404097, 0.25332800295084507) ,
+      rgb (0.28662309235899847, 0.07408846082680887, 0.2554347867371703) ,
+      rgb (0.29128515387578635, 0.0748990498474667, 0.25755101595750435) ,
+      rgb (0.2960004726065818, 0.07574533600095842, 0.25967245030364566) ,
+      rgb (0.3007727681291869, 0.07661782433616476, 0.2617929409781967) ,
+      rgb (0.30559226007249934, 0.07752196310753731, 0.2639100669211966) ,
+      rgb (0.31045520848595526, 0.07845687167618218, 0.2660200572779356) ,
+      rgb (0.3153587000920581, 0.07942099731524319, 0.2681190407694196) ,
+      rgb (0.3202998655799406, 0.08041299473755484, 0.2702032289303951) ,
+      rgb (0.3252788886040126, 0.08142839007654609, 0.27226772884656186) ,
+      rgb (0.3302917447118144, 0.08246763389003825, 0.27430929404579435) ,
+      rgb (0.3353335322445545, 0.08353243411900396, 0.2763253435679004) ,
+      rgb (0.34040164359597463, 0.08462223619170267, 0.27831254595259397) ,
+      rgb (0.345493557138718, 0.08573665496512634, 0.28026769921081435) ,
+      rgb (0.3506067824603248, 0.08687555176033529, 0.28218770540182386) ,
+      rgb (0.35573889947341125, 0.08803897435024335, 0.2840695897279818) ,
+      rgb (0.36088752387578377, 0.0892271943627452, 0.28591050458531014) ,
+      rgb (0.36605031412464006, 0.0904406854276979, 0.2877077458811747) ,
+      rgb (0.3712250843130934, 0.09167999748026273, 0.2894586539763317) ,
+      rgb (0.3764103053221462, 0.09294519809377791, 0.2911602415731392) ,
+      rgb (0.38160247377467543, 0.09423873126371218, 0.2928110750626949) ,
+      rgb (0.3867993907954417, 0.09556181960083443, 0.29440901248173756) ,
+      rgb (0.39199887556812907, 0.09691583650296684, 0.2959521200550908) ,
+      rgb (0.39719876876325577, 0.09830232096827862, 0.2974385647628578) ,
+      rgb (0.40239692379737496, 0.09972293031495055, 0.2988667436973397) ,
+      rgb (0.4075912039268871, 0.10117945586419633, 0.300235195077286) ,
+      rgb (0.41277985630360303, 0.1026734006932461, 0.3015422643746897) ,
+      rgb (0.41796105205173684, 0.10420644885760968, 0.3027865203963184) ,
+      rgb (0.42313214269556043, 0.10578120994917611, 0.3039675809469457) ,
+      rgb (0.4282910131578975, 0.1073997763055258, 0.30508479060294547) ,
+      rgb (0.4334355841041439, 0.1090642347484701, 0.3061376792828915) ,
+      rgb (0.4385637818793154, 0.11077667828375456, 0.30712600062348083) ,
+      rgb (0.44367358645071275, 0.11253912421257944, 0.3080497309546545) ,
+      rgb (0.4487629917317482, 0.1143535557462255, 0.30890905921943196) ,
+      rgb (0.4538300508699989, 0.11622183788331528, 0.3097044124984492) ,
+      rgb (0.45887288947308297, 0.11814571137706886, 0.3104363697903881) ,
+      rgb (0.46389102840284874, 0.12012561256850712, 0.31110343446582983) ,
+      rgb (0.46888111384598413, 0.12216445576414045, 0.31170911458932665) ,
+      rgb (0.473841437035254, 0.12426354237989065, 0.31225470169927194) ,
+      rgb (0.47877034239726296, 0.12642401401409453, 0.3127417273582196) ,
+      rgb (0.48366628618847957, 0.1286467902201389, 0.31317188565991266) ,
+      rgb (0.48852847371852987, 0.13093210934893723, 0.31354553695453014) ,
+      rgb (0.49335504375145617, 0.13328091630401023, 0.31386561956734976) ,
+      rgb (0.4981443546207415, 0.13569380302451714, 0.314135190862664) ,
+      rgb (0.5028952497497061, 0.13817086581280427, 0.3143566215383367) ,
+      rgb (0.5076068118105369, 0.14071192654913128, 0.3145320012008257) ,
+      rgb (0.5122783510532176, 0.14331656120063752, 0.3146630922831542) ,
+      rgb (0.5169084880054446, 0.14598463068714407, 0.3147540759228004) ,
+      rgb (0.5214965286322996, 0.14871544765633712, 0.3148076795453443) ,
+      rgb (0.5260418962547748, 0.15150818660835483, 0.31482653406646727) ,
+      rgb (0.5305442048985645, 0.15436183633886777, 0.3148129978918713) ,
+      rgb (0.5350027976174474, 0.15727540775107324, 0.3147708520739653) ,
+      rgb (0.5394173664919906, 0.16024769309971934, 0.31470295028655965) ,
+      rgb (0.5437877131360856, 0.16327738551419116, 0.31461204226295625) ,
+      rgb (0.5481137003346762, 0.1663630904279047, 0.3145010299091471) ,
+      rgb (0.5523952157271191, 0.16950338809328983, 0.3143729155461537) ,
+      rgb (0.5566322903496934, 0.17269677158182117, 0.31423043195101424) ,
+      rgb (0.5608249903911717, 0.17594170887918095, 0.31407639883970623) ,
+      rgb (0.564973435290177, 0.17923664950367169, 0.3139136046337036) ,
+      rgb (0.5690778478401143, 0.18258004462335425, 0.3137444095679653) ,
+      rgb (0.5731384575410787, 0.18597036007065024, 0.3135712686852) ,
+      rgb (0.5771555081299204, 0.18940601489760422, 0.3133970433357208) ,
+      rgb (0.5811293276158656, 0.19288548904692518, 0.3132239939418394) ,
+      rgb (0.5850602439646688, 0.19640737049066315, 0.3130540116373273) ,
+      rgb (0.5889486193554471, 0.19997020971775276, 0.31288922211590126) ,
+      rgb (0.5927948053652026, 0.20357251410079796, 0.3127323483930494) ,
+      rgb (0.5965991810912237, 0.207212956082026, 0.3125852303112123) ,
+      rgb (0.6003621301041158, 0.21089030138947745, 0.3124493441041469) ,
+      rgb (0.6040840169673274, 0.21460331490206347, 0.31232652641170694) ,
+      rgb (0.6077652399481865, 0.21835070166659282, 0.312219032918702) ,
+      rgb (0.6114062072731884, 0.22213124697023234, 0.3121288139643524) ,
+      rgb (0.6150072323639137, 0.22594402043981826, 0.3120568068576574) ,
+      rgb (0.6185686525887719, 0.2297879924917992, 0.3120046383872893) ,
+      rgb (0.6220907982108261, 0.2336621873300741, 0.3119738327362739) ,
+      rgb (0.6255741650043496, 0.23756535071152696, 0.3119669831491227) ,
+      rgb (0.6290189201698587, 0.24149689191922535, 0.3119844719564572) ,
+      rgb (0.6324253485421027, 0.24545598775548677, 0.3120276597462445) ,
+      rgb (0.6357937104834237, 0.24944185818822678, 0.3120979395330059) ,
+      rgb (0.6391243387840212, 0.2534536546198314, 0.3121968961206398) ,
+      rgb (0.642417577481186, 0.257490519876798, 0.31232631707560987) ,
+      rgb (0.6456734938264543, 0.2615520316161528, 0.31248673753935263) ,
+      rgb (0.6488923016945825, 0.2656375533620908, 0.3126794181957019) ,
+      rgb (0.652074172902773, 0.269746505252367, 0.3129056060581917) ,
+      rgb (0.6552193260932713, 0.2738782665241015, 0.3131666792687211) ,
+      rgb (0.6583280801134499, 0.2780321095766563, 0.3134643447952643) ,
+      rgb (0.6614003753260178, 0.28220778870555907, 0.3137991292649849) ,
+      rgb (0.6644363246987884, 0.2864048361425618, 0.31417223403606975) ,
+      rgb (0.6674360376636913, 0.29062280081258873, 0.31458483752056837) ,
+      rgb (0.670399595476762, 0.29486126309253047, 0.3150381395687221) ,
+      rgb (0.6733272556481733, 0.29911962764489264, 0.3155337232398221) ,
+      rgb (0.6762189792440975, 0.30339762792450425, 0.3160724937230589) ,
+      rgb (0.6790747402815734, 0.30769497879760166, 0.31665545668946665) ,
+      rgb (0.6818945715094452, 0.31201133280550686, 0.3172838048924495) ,
+      rgb (0.6846785094249453, 0.3163463482122221, 0.31795870784057567) ,
+      rgb (0.6874265643516962, 0.32069970535138104, 0.3186813762227769) ,
+      rgb (0.6901389321505248, 0.32507091815606004, 0.319453323328983) ,
+      rgb (0.6928154484676493, 0.32945984647042675, 0.3202754315314667) ,
+      rgb (0.6954560834689112, 0.33386622163232865, 0.3211488430698579) ,
+      rgb (0.6980608153581771, 0.3382897632604862, 0.3220747885521809) ,
+      rgb (0.700629624772421, 0.34273019305341756, 0.32305449047765694) ,
+      rgb (0.7031624945881415, 0.34718723719598, 0.32408913679491225) ,
+      rgb (0.7056595112261009, 0.3516605297812094, 0.32518014084085567) ,
+      rgb (0.7081205956842048, 0.356149855233803, 0.32632861885644465) ,
+      rgb (0.7105456546582587, 0.36065500290840113, 0.3275357416278876) ,
+      rgb (0.7129346683977347, 0.36517570519856757, 0.3288027427038317) ,
+      rgb (0.7152876061484729, 0.3697117022522345, 0.3301308728723546) ,
+      rgb (0.7176044490813385, 0.3742627271068619, 0.3315213862095893) ,
+      rgb (0.7198852149054985, 0.37882848839337313, 0.332975552002454) ,
+      rgb (0.7221299918421461, 0.3834086450896306, 0.33449469983585844) ,
+      rgb (0.7243386564778159, 0.38800301593162145, 0.3360799596569183) ,
+      rgb (0.7265112290022755, 0.3926113126792577, 0.3377325942005665) ,
+      rgb (0.7286477385671655, 0.39723324476747235, 0.33945384341064017) ,
+      rgb (0.7307482075484517, 0.401868526884681, 0.3412449533046818) ,
+      rgb (0.7328127050626875, 0.4065168468778026, 0.3431071517341082) ,
+      rgb (0.7348413359856494, 0.4111778700451951, 0.3450416947080907) ,
+      rgb (0.7368342217358587, 0.4158512585029011, 0.347049785207584) ,
+      rgb (0.7387914002459927, 0.4205367299231533, 0.34913260148542435) ,
+      rgb (0.7407130161950609, 0.4252339389526239, 0.35129130890802607) ,
+      rgb (0.7425992159973317, 0.42994254036133867, 0.3535270924537459) ,
+      rgb (0.7444501867657067, 0.4346621718461711, 0.35584108091122535) ,
+      rgb (0.7462661578916344, 0.439392450449735, 0.3582343914230064) ,
+      rgb (0.7480473927555956, 0.44413297780351974, 0.36070813602540136) ,
+      rgb (0.7497942054717047, 0.4488833348154881, 0.3632633755836028) ,
+      rgb (0.7515068504589166, 0.45364314496866825, 0.36590112443835765) ,
+      rgb (0.7531856636904657, 0.45841199172949604, 0.3686223664223477) ,
+      rgb (0.7548310506695954, 0.46318942799460555, 0.3714280448394211) ,
+      rgb (0.7564434157714071, 0.4679750143794846, 0.37431909037543515) ,
+      rgb (0.7580232553845584, 0.4727682731566229, 0.3772963553109668) ,
+      rgb (0.7595711110534006, 0.4775687122205708, 0.380360657784311) ,
+      rgb (0.7610876378057071, 0.48237579130289127, 0.3835127572385229) ,
+      rgb (0.7625733355405261, 0.48718906673415824, 0.38675335037837993) ,
+      rgb (0.7640288560928866, 0.49200802533379656, 0.39008308392311997) ,
+      rgb (0.7654549259333051, 0.4968321290972723, 0.3935025400011538) ,
+      rgb (0.7668522895064389, 0.5016608471009063, 0.39701221751773474) ,
+      rgb (0.768221765997353, 0.5064936237128791, 0.40061257089416885) ,
+      rgb (0.7695642334401418, 0.5113298901696085, 0.4043039806968248) ,
+      rgb (0.7708809196230247, 0.516168926434691, 0.40808667584648967) ,
+      rgb (0.7721725722960555, 0.5210102658711383, 0.4119608998712287) ,
+      rgb (0.7734402182988989, 0.5258533209345156, 0.41592679539764366) ,
+      rgb (0.774684947460632, 0.5306974938477673, 0.4199844035696376) ,
+      rgb (0.775907907306857, 0.5355421788246119, 0.42413367909988375) ,
+      rgb (0.7771103295521099, 0.5403867491056124, 0.4283745037125848) ,
+      rgb (0.7782934580763312, 0.545230594884266, 0.432706647838971) ,
+      rgb (0.7794586273150664, 0.5500730841397727, 0.4371297985644476) ,
+      rgb (0.7806077474948377, 0.5549133574489061, 0.4416433242636464) ,
+      rgb (0.7817418047898184, 0.5597509805259486, 0.44624687186865436) ,
+      rgb (0.7828622526444091, 0.5645853311116688, 0.45093985823706345) ,
+      rgb (0.7839706083641448, 0.5694157832671042, 0.4557215474289206) ,
+      rgb (0.7850684501960684, 0.5742417003617839, 0.46059116206904965) ,
+      rgb (0.7861573713233296, 0.5790624629815756, 0.465547782819184) ,
+      rgb (0.7872390410818835, 0.5838774374455721, 0.47059039582133383) ,
+      rgb (0.7883151404562396, 0.5886860017356244, 0.4757179187907608) ,
+      rgb (0.7893873776625194, 0.5934875421745599, 0.48092913815357724) ,
+      rgb (0.7904577684772788, 0.5982813427706246, 0.48622257801969754) ,
+      rgb (0.7915283284347561, 0.603066705931472, 0.49159667021646397) ,
+      rgb (0.7926003430423745, 0.6078432208703702, 0.4970502062153201) ,
+      rgb (0.7936755969866496, 0.6126102933407219, 0.5025816129126943) ,
+      rgb (0.7947558597265404, 0.617367344002207, 0.5081892121310299) ,
+      rgb (0.7958429237958377, 0.6221137880845115, 0.5138712409190979) ,
+      rgb (0.7969385471995161, 0.626849056792967, 0.5196258425240281) ,
+      rgb (0.7980444781513664, 0.6315725822508955, 0.5254510814483478) ,
+      rgb (0.7991624518501963, 0.6362837937202919, 0.5313449594256143) ,
+      rgb (0.8002941538975398, 0.6409821330674986, 0.5373053518514104) ,
+      rgb (0.8014412429256005, 0.6456670345921877, 0.5433300863249918) ,
+      rgb (0.8026053114611295, 0.6503379374810385, 0.5494169158460365) ,
+      rgb (0.8037879253107763, 0.6549942654947263, 0.5555635086708381) ,
+      rgb (0.804990547908103, 0.6596354502756416, 0.5617674511054698) ,
+      rgb (0.8062146052692706, 0.6642608958528229, 0.5680262917864979) ,
+      rgb (0.8074614045096935, 0.6688700095398864, 0.5743374637345958) ,
+      rgb (0.8087321917008969, 0.6734621670219452, 0.5806983480557674) ,
+      rgb (0.8100280946652069, 0.6780367267397182, 0.5871062690808275) ,
+      rgb (0.8113501401176333, 0.6825930154624339, 0.5935584890905076) ,
+      rgb (0.8126992203988149, 0.6871303371461888, 0.600052148204351) ,
+      rgb (0.8140761104699334, 0.6916479479148213, 0.6065843782630862) ,
+      rgb (0.8154814662727948, 0.6961450550830809, 0.6131522120932265) ,
+      rgb (0.8169157577505589, 0.7006208301478398, 0.6197526063725792) ,
+      rgb (0.8183793116449822, 0.705074381896351, 0.626382454789333) ,
+      rgb (0.8198723065045529, 0.7095047497878748, 0.6330385704006711) ,
+      rgb (0.8213947205565636, 0.7139109141951604, 0.6397176669767276) ,
+      rgb (0.8229463511042843, 0.7182917733129006, 0.6464164243818421) ,
+      rgb (0.8245268129450285, 0.7226461431208888, 0.653131379154226) ,
+      rgb (0.8261354971058026, 0.7269727551823826, 0.659859001562165) ,
+      rgb (0.8277716072353446, 0.7312702332407809, 0.6665957020468297) ,
+      rgb (0.8294340781648147, 0.7355371221572935, 0.6733377200930191) ,
+      rgb (0.8311216352909631, 0.7397718464763862, 0.6800812520363146) ,
+      rgb (0.8328327718577798, 0.7439727181745988, 0.6868223587464855) ,
+      rgb (0.8345656905566583, 0.7481379479992134, 0.6935569764986385) ,
+      rgb (0.8363189884473793, 0.7522654895287526, 0.7002799902886496) ,
+      rgb (0.8380912347613196, 0.7563531486080863, 0.7069856139021298) ,
+      rgb (0.8398783988412087, 0.7603990719977968, 0.7136714781112923) ,
+      rgb (0.8416775076684515, 0.7644010120098295, 0.7203329938728462) ,
+      rgb (0.843485292229337, 0.7683566039987018, 0.7269653699897204) ,
+      rgb (0.8452981073195511, 0.7722633860104472, 0.7335636824054149) ,
+      rgb (0.847111955079651, 0.7761188023604716, 0.7401227576280706) ,
+      rgb (0.8489224556311764, 0.7799202140765015, 0.7466371929366437) ,
+      rgb (0.8507269702317879, 0.7836645734238389, 0.7530974636118285) ,
+      rgb (0.8525190720770844, 0.7873493613354844, 0.7594994148789691) ,
+      rgb (0.8542921961147046, 0.7909719677709199, 0.765838014779141) ,
+      rgb (0.856040223147254, 0.7945296360155061, 0.7721061003767414) ,
+      rgb (0.857756629435049, 0.7980196314271393, 0.778295716672475) ,
+      rgb (0.8594346370300241, 0.8014392309950078, 0.7843978875138392) ,
+      rgb (0.8610711702756552, 0.8047851790981223, 0.7903952966373629) ,
+      rgb (0.8626560105112757, 0.8080552380426153, 0.796282666437655) ,
+      rgb (0.8641834372394103, 0.8112464422465354, 0.8020461269686395) ,
+      rgb (0.8656493432560532, 0.8143554406751491, 0.8076697232416455) ,
+      rgb (0.867053149070485, 0.8173780404191124, 0.813134196269114) ,
+      rgb (0.8683995469581863, 0.8203087551218152, 0.8184163896312899) ,
+      rgb (0.8696913150261381, 0.8231415885956916, 0.8235047668317317) ,
+      rgb (0.8709384671729751, 0.8258685788943851, 0.8283849726114961) ,
+      rgb (0.8721533197845432, 0.8284805282370967, 0.8330486712880828) ,
+      rgb (0.8733517136091627, 0.8309671525127262, 0.8374885100119709) ,
+      rgb (0.8745379332026019, 0.8333197294864546, 0.8417192535806901) ,
+      rgb (0.875714587099614, 0.8355302318472394, 0.8457553751902708) ,
+      rgb (0.8768784845161469, 0.8375923807118654, 0.8496137354915025) ,
+      rgb (0.8780229843664901, 0.8395016561854007, 0.8533064535245892) ,
+      rgb (0.8791324424079277, 0.8412555488447591, 0.8568557229103964) ,
+      rgb (0.8801929331569581, 0.8428522482477862, 0.8602739992715663) ,
+      rgb (0.8811916987134195, 0.8442906671771735, 0.8635659516866988) ,
+      rgb (0.8821154248940161, 0.8455700725455935, 0.8667376504623333) ,
+      rgb (0.8829516859544853, 0.8466897027569927, 0.8697961704819097) ,
+      rgb (0.8836912714589804, 0.8476489176151927, 0.8727414710144156) ,
+      rgb (0.8843271305411354, 0.8484474157205542, 0.8755678522824297) ,
+      rgb (0.8848513815990857, 0.849084264228938, 0.8782823528537247) ,
+      rgb (0.8852589797263047, 0.8495589281098921, 0.8808841479402484) ,
+      rgb (0.8855471481195238, 0.8498717428363158, 0.8833620612117095) ,
+      rgb (0.8857115512284565, 0.8500218611585632, 0.8857253899008712)
+      });
 
 
 list_data twilight_shifted = list_data(new pen[] {
-  rgb (0.18739228342697645, 0.07710209689958833, 0.21618875376309582) ,
-  rgb (0.18975853639094634, 0.07501986186214377, 0.2193005075652994) ,
-  rgb (0.19199449184606268, 0.0731828306492733, 0.22243385243433622) ,
-  rgb (0.19410351363791453, 0.07160830485689157, 0.22558727307410353) ,
-  rgb (0.1960826032659409, 0.07032122724242362, 0.22874673279569585) ,
-  rgb (0.19794834061899208, 0.06931406607166066, 0.23194647381302336) ,
-  rgb (0.19971571438603364, 0.06859271055370472, 0.23517094067076993) ,
-  rgb (0.2015613376412984, 0.06798327102620025, 0.23852974228695395) ,
-  rgb (0.20352007949514977, 0.06744417961242422, 0.24205576625191821) ,
-  rgb (0.20558051999470117, 0.06699046239786874, 0.24572497420147632) ,
-  rgb (0.2077442377448806, 0.06661453200418091, 0.24954644291943817) ,
-  rgb (0.21001214221188125, 0.06630857391894718, 0.2535289048041211) ,
-  rgb (0.21237411048541005, 0.06608502466175845, 0.2576516509356954) ,
-  rgb (0.21482843531473683, 0.06594038561377849, 0.26191675992376573) ,
-  rgb (0.21737845072382705, 0.06585966123356204, 0.2663420934966951) ,
-  rgb (0.22001251100779617, 0.0658579189189076, 0.2709027999432586) ,
-  rgb (0.22272706739121817, 0.06593379067565194, 0.275597146520537) ,
-  rgb (0.22552164337737857, 0.0660781731193956, 0.28043398847505197) ,
-  rgb (0.2283917709422868, 0.06628997924139618, 0.28541074411068496) ,
-  rgb (0.23132955273021344, 0.06657618693909059, 0.29051361067988485) ,
-  rgb (0.23433055727563878, 0.0669355996616394, 0.295740099298676) ,
-  rgb (0.23739062429054825, 0.06736588805055552, 0.3010892218406587) ,
-  rgb (0.2405081333229594, 0.0678571038148556, 0.3065705449367832) ,
-  rgb (0.24367372557466271, 0.06841985515092269, 0.3121652405088837) ,
-  rgb (0.24688226237959, 0.06905363944920445, 0.31786993834254956) ,
-  rgb (0.2501284530619938, 0.06975820642910699, 0.32368100685760637) ,
-  rgb (0.25340685873736807, 0.07053358292685183, 0.3295945757321303) ,
-  rgb (0.256711916510839, 0.07138010624208224, 0.3356064898460009) ,
-  rgb (0.26003895187439957, 0.0722947810433622, 0.3417175669546984) ,
-  rgb (0.26338121807151404, 0.07328165793989708, 0.34791888996380105) ,
-  rgb (0.26673233211995284, 0.0743440180285462, 0.3542027606624096) ,
-  rgb (0.2700863774911405, 0.07548367558427554, 0.36056376228111864) ,
-  rgb (0.2734373934245081, 0.07670280023749607, 0.36699616136347685) ,
-  rgb (0.2767793961581559, 0.07800394103378822, 0.37349382846504675) ,
-  rgb (0.2801063857697547, 0.07938999480226153, 0.38005028528138707) ,
-  rgb (0.28341239797185225, 0.08086415336549937, 0.38665868550105914) ,
-  rgb (0.28669151388283165, 0.08242987384848069, 0.39331182532243375) ,
-  rgb (0.2899379244517661, 0.08409078829085731, 0.40000214725256295) ,
-  rgb (0.2931459309698525, 0.08585065688962071, 0.40672178082365834) ,
-  rgb (0.2963100038890529, 0.08771325096046395, 0.41346259134143476) ,
-  rgb (0.2994248396021477, 0.08968225371675004, 0.42021619665853854) ,
-  rgb (0.3024853636457425, 0.0917611873973036, 0.42697404043749887) ,
-  rgb (0.30548675819945936, 0.09395276484082374, 0.4337284999936111) ,
-  rgb (0.30842444457210105, 0.09625938534057774, 0.44047194882050544) ,
-  rgb (0.31129434479712365, 0.0986847719340522, 0.4471931371516162) ,
-  rgb (0.3140927841475553, 0.10123077676403242, 0.45388335612058467) ,
-  rgb (0.316816480890235, 0.10389861387653518, 0.46053414662739794) ,
-  rgb (0.31946262395497965, 0.1066887988239266, 0.46713728801395243) ,
-  rgb (0.3220288227606932, 0.10960114111258401, 0.4736849472572688) ,
-  rgb (0.32451307931207785, 0.11263459791730848, 0.48017007211645196) ,
-  rgb (0.3269137124539796, 0.1157873496841953, 0.4865864649569746) ,
-  rgb (0.3292300520323141, 0.11905764321981127, 0.49292595612342666) ,
-  rgb (0.33146154891145124, 0.12244245263391232, 0.4991827458843107) ,
-  rgb (0.33360804901486, 0.1259381830100592, 0.505351647966549) ,
-  rgb (0.33566978565015315, 0.12954074251271822, 0.5114280721516895) ,
-  rgb (0.3376473209067111, 0.13324562282438077, 0.5174080757397947) ,
-  rgb (0.33954168752669694, 0.1370480189671817, 0.5232879753508524) ,
-  rgb (0.34135411074506483, 0.1409427920655632, 0.5290650094033675) ,
-  rgb (0.34308600291572294, 0.14492465359918028, 0.534737042820671) ,
-  rgb (0.34473901574536375, 0.1489882058982641, 0.5403024592040654) ,
-  rgb (0.3463150717579309, 0.15312802296627787, 0.5457599924248665) ,
-  rgb (0.3478165323877778, 0.1573386351115298, 0.5511085345270326) ,
-  rgb (0.34924513554955644, 0.16161477763045118, 0.5563483747416378) ,
-  rgb (0.3506030444193101, 0.1659512998472086, 0.5614796470399323) ,
-  rgb (0.3518924860887379, 0.17034320478524959, 0.5665028491121665) ,
-  rgb (0.35311574421123737, 0.17478570377561287, 0.5714187152355529) ,
-  rgb (0.3542753496066376, 0.17927413271618647, 0.5762280966066872) ,
-  rgb (0.3553741530690672, 0.18380392577704466, 0.580931914318328) ,
-  rgb (0.35641381143126327, 0.18837119869242164, 0.5855320765920552) ,
-  rgb (0.35739663292915563, 0.1929720819784246, 0.5900301125106313) ,
-  rgb (0.3583248996661781, 0.197602942459778, 0.5944276851750107) ,
-  rgb (0.35920088560930186, 0.20226037920758122, 0.5987265295935138) ,
-  rgb (0.36002681809096376, 0.20694122817889948, 0.6029284543191687) ,
-  rgb (0.36080493826624654, 0.21164251793458128, 0.6070353217206471) ,
-  rgb (0.36153829010998356, 0.21636111429594002, 0.6110488067964093) ,
-  rgb (0.36222809558295926, 0.22109488427338303, 0.6149711234609613) ,
-  rgb (0.3628764356004103, 0.2258414929328703, 0.6188041741082302) ,
-  rgb (0.36348537610385145, 0.2305987621839642, 0.6225498862239288) ,
-  rgb (0.3640569302208851, 0.23536470386204195, 0.6262101345195302) ,
-  rgb (0.3645930889012501, 0.24013747024823828, 0.629786801550261) ,
-  rgb (0.3650957984588681, 0.24491536803550484, 0.6332817352005559) ,
-  rgb (0.3655669837353898, 0.24969683475296395, 0.6366967518748858) ,
-  rgb (0.36600853966739794, 0.25448043878086224, 0.6400336180336859) ,
-  rgb (0.3664224325155063, 0.25926481158628106, 0.6432940914076554) ,
-  rgb (0.3668108554010799, 0.26404857724525643, 0.6464799165290824) ,
-  rgb (0.36717513650699446, 0.26883085667326956, 0.6495927229789225) ,
-  rgb (0.36751707094367697, 0.2736106331709098, 0.6526341171161864) ,
-  rgb (0.3678384369653108, 0.2783869718129776, 0.655605668384537) ,
-  rgb (0.3681410147989972, 0.2831590122118299, 0.6585088880697231) ,
-  rgb (0.36842655638020444, 0.2879259643777846, 0.661345269109446) ,
-  rgb (0.3686968223189527, 0.292687098561501, 0.6641162529823691) ,
-  rgb (0.3689535530659678, 0.29744175492366276, 0.6668232208982426) ,
-  rgb (0.36919847837592484, 0.3021893217650707, 0.6694675433161452) ,
-  rgb (0.3694333459127623, 0.3069292355186234, 0.6720505284912062) ,
-  rgb (0.36965987626565955, 0.3116609876295197, 0.6745734474341955) ,
-  rgb (0.3698798032902536, 0.31638410101153364, 0.6770375543809057) ,
-  rgb (0.37009487130772695, 0.3210981375964933, 0.6794440539905685) ,
-  rgb (0.37030682071842685, 0.32580269697872455, 0.6817941168448668) ,
-  rgb (0.37051738634484427, 0.3304974124430785, 0.6840888878885721) ,
-  rgb (0.3707283327942267, 0.33518193808489577, 0.6863294816960677) ,
-  rgb (0.3709415155133733, 0.33985591488818123, 0.6885170337950512) ,
-  rgb (0.37115856636209105, 0.3445191141023017, 0.6906525358646499) ,
-  rgb (0.37138124223736607, 0.34917126878479027, 0.6927370347192883) ,
-  rgb (0.3716113323440048, 0.3538121372967869, 0.6947714991938089) ,
-  rgb (0.3718506155898596, 0.3584414828587522, 0.6967569581025654) ,
-  rgb (0.3721008970244382, 0.3630590973698238, 0.6986943461507372) ,
-  rgb (0.37236397858465387, 0.36766477862108266, 0.7005846349652077) ,
-  rgb (0.37264166757849604, 0.3722583500483685, 0.7024287314570723) ,
-  rgb (0.3729357864666503, 0.3768396383521984, 0.7042275578058994) ,
-  rgb (0.37324816143326384, 0.38140848555753937, 0.7059820097480604) ,
-  rgb (0.3735806215098284, 0.3859647438605754, 0.7076929760731058) ,
-  rgb (0.3739349933047578, 0.3905082752937583, 0.7093613429347845) ,
-  rgb (0.3743131319931234, 0.3950389482828331, 0.7109879652237746) ,
-  rgb (0.3747168601930223, 0.3995566498711684, 0.7125736851650046) ,
-  rgb (0.37514802505380473, 0.4040612609993941, 0.7141193695725726) ,
-  rgb (0.375608469194424, 0.40855267638072096, 0.7156258509158755) ,
-  rgb (0.37610001286385814, 0.4130307995247706, 0.7170939691992023) ,
-  rgb (0.37662448930806297, 0.41749553747893614, 0.7185245473617611) ,
-  rgb (0.3771837184425123, 0.4219468022345483, 0.7199184152447577) ,
-  rgb (0.3777794975351373, 0.4263845142616835, 0.7212763999353023) ,
-  rgb (0.378413635091359, 0.43080859411413064, 0.7225993199306104) ,
-  rgb (0.3790878928311076, 0.43521897612544935, 0.7238879869132313) ,
-  rgb (0.3798040374484875, 0.4396155882122263, 0.7251432377876109) ,
-  rgb (0.3805638069656562, 0.4439983720863372, 0.7263658704513531) ,
-  rgb (0.3813688793045416, 0.4483672766927786, 0.7275567131714135) ,
-  rgb (0.38222094988570376, 0.45272225034283325, 0.7287165614400378) ,
-  rgb (0.3831216808440275, 0.457063235814072, 0.7298462679135326) ,
-  rgb (0.38407269378943537, 0.46139018782416635, 0.7309466543290268) ,
-  rgb (0.3850755679365139, 0.46570306719930193, 0.732018540336905) ,
-  rgb (0.386131841788921, 0.4700018340988123, 0.7330627749243106) ,
-  rgb (0.3872430145933025, 0.4742864593363539, 0.7340801678785439) ,
-  rgb (0.3884105330084243, 0.47855691131792805, 0.7350715764115726) ,
-  rgb (0.38963580160340855, 0.48281316715123496, 0.7360378254693274) ,
-  rgb (0.390920175719949, 0.4870552025122304, 0.7369797713388125) ,
-  rgb (0.39226494876209317, 0.4912830033289926, 0.7378982478447508) ,
-  rgb (0.39367135736822567, 0.4954965577745118, 0.738794102296364) ,
-  rgb (0.3951405880820763, 0.4996958532637776, 0.7396682021171571) ,
-  rgb (0.3966737490566561, 0.5038808905384797, 0.7405213858051674) ,
-  rgb (0.3982719152586337, 0.5080516653927614, 0.7413545091809972) ,
-  rgb (0.39993606933454834, 0.5122081814321852, 0.7421684457131799) ,
-  rgb (0.40166714010896104, 0.5163504496968876, 0.7429640345324835) ,
-  rgb (0.40346600333905397, 0.5204784765384003, 0.7437421522356709) ,
-  rgb (0.4053334378930318, 0.5245922817498312, 0.7445036583670813) ,
-  rgb (0.4072701869421907, 0.5286918801105741, 0.7452494263758127) ,
-  rgb (0.4092768899914751, 0.5327773017713032, 0.7459803063570782) ,
-  rgb (0.4113541469730457, 0.5368485776500593, 0.7466971285506578) ,
-  rgb (0.4135024574331473, 0.5409057477109848, 0.7474007329754309) ,
-  rgb (0.4157223260454232, 0.544948827153504, 0.7480920445900052) ,
-  rgb (0.4180141407923363, 0.5489778542188889, 0.7487719316700112) ,
-  rgb (0.42037822361396326, 0.5529928715810817, 0.7494412559451894) ,
-  rgb (0.4228148567577266, 0.5569939212699658, 0.7501008698822764) ,
-  rgb (0.42532423665011354, 0.560981049599503, 0.7507516498900512) ,
-  rgb (0.42790652284925834, 0.5649543060909209, 0.7513944352191484) ,
-  rgb (0.4305617907305757, 0.5689137457245718, 0.752030080993127) ,
-  rgb (0.43329008867358393, 0.5728594162560667, 0.7526594653256667) ,
-  rgb (0.4360913895835637, 0.5767913799818608, 0.7532834105961016) ,
-  rgb (0.43896563958048396, 0.5807096924109849, 0.7539027620828594) ,
-  rgb (0.441912717666964, 0.5846144110017557, 0.7545183888441067) ,
-  rgb (0.4449324685421538, 0.5885055998308617, 0.7551311041857901) ,
-  rgb (0.4480247093358917, 0.5923833145214658, 0.7557417647410792) ,
-  rgb (0.45118918687617743, 0.5962476205135354, 0.7563512064324664) ,
-  rgb (0.45442563977552913, 0.6000985950385866, 0.7569601366060649) ,
-  rgb (0.45773377230160567, 0.6039363004658646, 0.7575693690185916) ,
-  rgb (0.4611132664702388, 0.607760777169989, 0.7581798643680714) ,
-  rgb (0.4645637671630393, 0.6115720882286415, 0.7587924262302581) ,
-  rgb (0.46808490970531597, 0.6153702869579029, 0.7594078989109274) ,
-  rgb (0.4716762951887709, 0.6191554324288464, 0.7600270922788305) ,
-  rgb (0.47533752394906287, 0.6229275728383581, 0.7606508557181775) ,
-  rgb (0.47906816236197386, 0.6266867625186013, 0.7612800037566242) ,
-  rgb (0.4828677867260272, 0.6304330455306234, 0.761915371498953) ,
-  rgb (0.4867359599430568, 0.6341664625110051, 0.7625578008592404) ,
-  rgb (0.4906722493856122, 0.6378870485884708, 0.7632081276316384) ,
-  rgb (0.4946761847863938, 0.6415948411950443, 0.7638671900213091) ,
-  rgb (0.4987473366135607, 0.6452898684900934, 0.7645357873418008) ,
-  rgb (0.5028853540415561, 0.6489721673409526, 0.7652144671817491) ,
-  rgb (0.5070896957645166, 0.6526417240314645, 0.7659044566083585) ,
-  rgb (0.5113599254160193, 0.6562985398183186, 0.7666066378064533) ,
-  rgb (0.5156955988596057, 0.65994260812898, 0.7673219148959617) ,
-  rgb (0.5200962739223556, 0.6635739143403039, 0.768051194033441) ,
-  rgb (0.5245615147059358, 0.6671924299614223, 0.7687954171423095) ,
-  rgb (0.529090861832473, 0.6707981230280622, 0.7695555229231313) ,
-  rgb (0.533683891477284, 0.6743909370521273, 0.7703325054879735) ,
-  rgb (0.5383401557517628, 0.677970811290954, 0.7711273443905772) ,
-  rgb (0.5430593242401823, 0.6815376725306588, 0.7719407969783508) ,
-  rgb (0.5478409815301863, 0.6850914221850988, 0.7727738647344087) ,
-  rgb (0.5526845058934713, 0.6886319451516638, 0.7736279426902245) ,
-  rgb (0.5575894041960517, 0.6921591145825405, 0.7745041337932782) ,
-  rgb (0.5625551535721934, 0.6956727838162965, 0.7754035914230984) ,
-  rgb (0.5675811785386197, 0.6991727930264627, 0.776327485342753) ,
-  rgb (0.5726668948158774, 0.7026589535425779, 0.7772770268091199) ,
-  rgb (0.5778116438998202, 0.7061310615715398, 0.7782534512102552) ,
-  rgb (0.5830148703693241, 0.7095888767699747, 0.7792578182047659) ,
-  rgb (0.588275797805555, 0.7130321464645814, 0.7802914140563652) ,
-  rgb (0.5935933569683722, 0.7164606049658685, 0.781355882376401) ,
-  rgb (0.5989665814482068, 0.7198739489224673, 0.7824525989934664) ,
-  rgb (0.6043943420027486, 0.7232718614323369, 0.7835829559353559) ,
-  rgb (0.6098754317609306, 0.7266539875975829, 0.7847483573269471) ,
-  rgb (0.6154084641177048, 0.7300199523273969, 0.7859502270675048) ,
-  rgb (0.6209919306481755, 0.733369347989232, 0.7871899462469658) ,
-  rgb (0.6266240202260459, 0.7367017540369944, 0.7884690131633456) ,
-  rgb (0.6323027138710603, 0.740016721601314, 0.7897889276264043) ,
-  rgb (0.6380258682854598, 0.7433137671403319, 0.7911510045957317) ,
-  rgb (0.6437910831099849, 0.7465923800833657, 0.7925565320130605) ,
-  rgb (0.6495957300425348, 0.7498520122194177, 0.7940067402149911) ,
-  rgb (0.6554369232645472, 0.7530920875676843, 0.7955027112903105) ,
-  rgb (0.6613112930078745, 0.7563120270871903, 0.7970456043491897) ,
-  rgb (0.6672147980375281, 0.7595112803730375, 0.7986367465453776) ,
-  rgb (0.6731442255942621, 0.7626890873389048, 0.8002762854580953) ,
-  rgb (0.6790955449988215, 0.765844721313959, 0.8019646617300199) ,
-  rgb (0.6850644615439593, 0.7689774029354699, 0.8037020626717691) ,
-  rgb (0.691046410093091, 0.7720862946067809, 0.8054884169067907) ,
-  rgb (0.6970365443886174, 0.7751705000806606, 0.8073233538006345) ,
-  rgb (0.7030297722540817, 0.7782290497335813, 0.8092061884805697) ,
-  rgb (0.709020781345393, 0.7812608871607091, 0.8111359185511793) ,
-  rgb (0.7150040307625213, 0.7842648709158119, 0.8131111655994991) ,
-  rgb (0.7209728066553678, 0.7872399592345264, 0.8151307392087926) ,
-  rgb (0.726921775128297, 0.7901846863592763, 0.8171921746672638) ,
-  rgb (0.7328454364552346, 0.7930974646884407, 0.8192926338423038) ,
-  rgb (0.7387377170049494, 0.7959766573503101, 0.8214292278043301) ,
-  rgb (0.7445924777189017, 0.7988204771958325, 0.8235986758615652) ,
-  rgb (0.750403467654067, 0.8016269900896532, 0.8257973785108242) ,
-  rgb (0.7561644358438198, 0.8043940873347794, 0.8280213899472) ,
-  rgb (0.7618690793798029, 0.8071194938764749, 0.830266486168872) ,
-  rgb (0.7675110850441786, 0.8098007598713145, 0.8325281663805967) ,
-  rgb (0.7730841659017094, 0.8124352473546601, 0.8348017295057968) ,
-  rgb (0.7785789200822759, 0.8150208937874255, 0.8370834463093898) ,
-  rgb (0.7839910104276492, 0.8175542640053343, 0.8393674746403673) ,
-  rgb (0.7893144556460892, 0.8200321318870201, 0.8416486380471222) ,
-  rgb (0.7945430508923111, 0.8224511622630462, 0.8439218478682798) ,
-  rgb (0.79967075421268, 0.8248078181208093, 0.8461821002957853) ,
-  rgb (0.8046916442981458, 0.8270983878056066, 0.8484244929697402) ,
-  rgb (0.8095999819094809, 0.8293189667350546, 0.8506444160105037) ,
-  rgb (0.8143898212114309, 0.8314655869419785, 0.8528375906214702) ,
-  rgb (0.8190465467793753, 0.8335364929949034, 0.855002062870101) ,
-  rgb (0.8235742968025285, 0.8355248776479544, 0.8571319132851495) ,
-  rgb (0.8279689431601354, 0.837426007513952, 0.8592239945130679) ,
-  rgb (0.8322270571293441, 0.8392349062775448, 0.8612756350042788) ,
-  rgb (0.8363403180919118, 0.8409479651895194, 0.8632852800107016) ,
-  rgb (0.8403042080595778, 0.8425605950855084, 0.865250882410458) ,
-  rgb (0.8441261828674842, 0.8440648271103739, 0.8671697332269007) ,
-  rgb (0.8478071070257792, 0.8454546229209523, 0.8690403678369444) ,
-  rgb (0.8513371457085719, 0.8467273579611647, 0.8708608165735044) ,
-  rgb (0.8547259318925698, 0.8478748812467282, 0.8726282980930582) ,
-  rgb (0.8579825924567037, 0.8488893481028184, 0.8743403855344628) ,
-  rgb (0.8611024543689985, 0.8497675485700126, 0.8759924292343957) ,
-  rgb (0.86408985081464, 0.8505039116750779, 0.8775792578489263) ,
-  rgb (0.8669601550533358, 0.8510896085314068, 0.8790976697717334) ,
-  rgb (0.8697047485350982, 0.8515240300479789, 0.8805388339000336) ,
-  rgb (0.8723313408512408, 0.8518016547808089, 0.8818970435500162) ,
-  rgb (0.8748534750857597, 0.8519152612302319, 0.8831692696761383) ,
-  rgb (0.8772488085896548, 0.8518702833887027, 0.8843412038131143) ,
-  rgb (0.8795410528270573, 0.8516567540749572, 0.8854143767924102) ,
-  rgb (0.8817223105928579, 0.8512759407765347, 0.8863805692551482) ,
-  rgb (0.8837852019553906, 0.8507294054031063, 0.8872322209694989) ,
-  rgb (0.8857501584075443, 0.8500092494306783, 0.8879736506427196) ,
-  rgb (0.8857115512284565, 0.8500218611585632, 0.8857253899008712) ,
-  rgb (0.8855471481195238, 0.8498717428363158, 0.8833620612117095) ,
-  rgb (0.8852589797263047, 0.8495589281098921, 0.8808841479402484) ,
-  rgb (0.8848513815990857, 0.849084264228938, 0.8782823528537247) ,
-  rgb (0.8843271305411354, 0.8484474157205542, 0.8755678522824297) ,
-  rgb (0.8836912714589804, 0.8476489176151927, 0.8727414710144156) ,
-  rgb (0.8829516859544853, 0.8466897027569927, 0.8697961704819097) ,
-  rgb (0.8821154248940161, 0.8455700725455935, 0.8667376504623333) ,
-  rgb (0.8811916987134195, 0.8442906671771735, 0.8635659516866988) ,
-  rgb (0.8801929331569581, 0.8428522482477862, 0.8602739992715663) ,
-  rgb (0.8791324424079277, 0.8412555488447591, 0.8568557229103964) ,
-  rgb (0.8780229843664901, 0.8395016561854007, 0.8533064535245892) ,
-  rgb (0.8768784845161469, 0.8375923807118654, 0.8496137354915025) ,
-  rgb (0.875714587099614, 0.8355302318472394, 0.8457553751902708) ,
-  rgb (0.8745379332026019, 0.8333197294864546, 0.8417192535806901) ,
-  rgb (0.8733517136091627, 0.8309671525127262, 0.8374885100119709) ,
-  rgb (0.8721533197845432, 0.8284805282370967, 0.8330486712880828) ,
-  rgb (0.8709384671729751, 0.8258685788943851, 0.8283849726114961) ,
-  rgb (0.8696913150261381, 0.8231415885956916, 0.8235047668317317) ,
-  rgb (0.8683995469581863, 0.8203087551218152, 0.8184163896312899) ,
-  rgb (0.867053149070485, 0.8173780404191124, 0.813134196269114) ,
-  rgb (0.8656493432560532, 0.8143554406751491, 0.8076697232416455) ,
-  rgb (0.8641834372394103, 0.8112464422465354, 0.8020461269686395) ,
-  rgb (0.8626560105112757, 0.8080552380426153, 0.796282666437655) ,
-  rgb (0.8610711702756552, 0.8047851790981223, 0.7903952966373629) ,
-  rgb (0.8594346370300241, 0.8014392309950078, 0.7843978875138392) ,
-  rgb (0.857756629435049, 0.7980196314271393, 0.778295716672475) ,
-  rgb (0.856040223147254, 0.7945296360155061, 0.7721061003767414) ,
-  rgb (0.8542921961147046, 0.7909719677709199, 0.765838014779141) ,
-  rgb (0.8525190720770844, 0.7873493613354844, 0.7594994148789691) ,
-  rgb (0.8507269702317879, 0.7836645734238389, 0.7530974636118285) ,
-  rgb (0.8489224556311764, 0.7799202140765015, 0.7466371929366437) ,
-  rgb (0.847111955079651, 0.7761188023604716, 0.7401227576280706) ,
-  rgb (0.8452981073195511, 0.7722633860104472, 0.7335636824054149) ,
-  rgb (0.843485292229337, 0.7683566039987018, 0.7269653699897204) ,
-  rgb (0.8416775076684515, 0.7644010120098295, 0.7203329938728462) ,
-  rgb (0.8398783988412087, 0.7603990719977968, 0.7136714781112923) ,
-  rgb (0.8380912347613196, 0.7563531486080863, 0.7069856139021298) ,
-  rgb (0.8363189884473793, 0.7522654895287526, 0.7002799902886496) ,
-  rgb (0.8345656905566583, 0.7481379479992134, 0.6935569764986385) ,
-  rgb (0.8328327718577798, 0.7439727181745988, 0.6868223587464855) ,
-  rgb (0.8311216352909631, 0.7397718464763862, 0.6800812520363146) ,
-  rgb (0.8294340781648147, 0.7355371221572935, 0.6733377200930191) ,
-  rgb (0.8277716072353446, 0.7312702332407809, 0.6665957020468297) ,
-  rgb (0.8261354971058026, 0.7269727551823826, 0.659859001562165) ,
-  rgb (0.8245268129450285, 0.7226461431208888, 0.653131379154226) ,
-  rgb (0.8229463511042843, 0.7182917733129006, 0.6464164243818421) ,
-  rgb (0.8213947205565636, 0.7139109141951604, 0.6397176669767276) ,
-  rgb (0.8198723065045529, 0.7095047497878748, 0.6330385704006711) ,
-  rgb (0.8183793116449822, 0.705074381896351, 0.626382454789333) ,
-  rgb (0.8169157577505589, 0.7006208301478398, 0.6197526063725792) ,
-  rgb (0.8154814662727948, 0.6961450550830809, 0.6131522120932265) ,
-  rgb (0.8140761104699334, 0.6916479479148213, 0.6065843782630862) ,
-  rgb (0.8126992203988149, 0.6871303371461888, 0.600052148204351) ,
-  rgb (0.8113501401176333, 0.6825930154624339, 0.5935584890905076) ,
-  rgb (0.8100280946652069, 0.6780367267397182, 0.5871062690808275) ,
-  rgb (0.8087321917008969, 0.6734621670219452, 0.5806983480557674) ,
-  rgb (0.8074614045096935, 0.6688700095398864, 0.5743374637345958) ,
-  rgb (0.8062146052692706, 0.6642608958528229, 0.5680262917864979) ,
-  rgb (0.804990547908103, 0.6596354502756416, 0.5617674511054698) ,
-  rgb (0.8037879253107763, 0.6549942654947263, 0.5555635086708381) ,
-  rgb (0.8026053114611295, 0.6503379374810385, 0.5494169158460365) ,
-  rgb (0.8014412429256005, 0.6456670345921877, 0.5433300863249918) ,
-  rgb (0.8002941538975398, 0.6409821330674986, 0.5373053518514104) ,
-  rgb (0.7991624518501963, 0.6362837937202919, 0.5313449594256143) ,
-  rgb (0.7980444781513664, 0.6315725822508955, 0.5254510814483478) ,
-  rgb (0.7969385471995161, 0.626849056792967, 0.5196258425240281) ,
-  rgb (0.7958429237958377, 0.6221137880845115, 0.5138712409190979) ,
-  rgb (0.7947558597265404, 0.617367344002207, 0.5081892121310299) ,
-  rgb (0.7936755969866496, 0.6126102933407219, 0.5025816129126943) ,
-  rgb (0.7926003430423745, 0.6078432208703702, 0.4970502062153201) ,
-  rgb (0.7915283284347561, 0.603066705931472, 0.49159667021646397) ,
-  rgb (0.7904577684772788, 0.5982813427706246, 0.48622257801969754) ,
-  rgb (0.7893873776625194, 0.5934875421745599, 0.48092913815357724) ,
-  rgb (0.7883151404562396, 0.5886860017356244, 0.4757179187907608) ,
-  rgb (0.7872390410818835, 0.5838774374455721, 0.47059039582133383) ,
-  rgb (0.7861573713233296, 0.5790624629815756, 0.465547782819184) ,
-  rgb (0.7850684501960684, 0.5742417003617839, 0.46059116206904965) ,
-  rgb (0.7839706083641448, 0.5694157832671042, 0.4557215474289206) ,
-  rgb (0.7828622526444091, 0.5645853311116688, 0.45093985823706345) ,
-  rgb (0.7817418047898184, 0.5597509805259486, 0.44624687186865436) ,
-  rgb (0.7806077474948377, 0.5549133574489061, 0.4416433242636464) ,
-  rgb (0.7794586273150664, 0.5500730841397727, 0.4371297985644476) ,
-  rgb (0.7782934580763312, 0.545230594884266, 0.432706647838971) ,
-  rgb (0.7771103295521099, 0.5403867491056124, 0.4283745037125848) ,
-  rgb (0.775907907306857, 0.5355421788246119, 0.42413367909988375) ,
-  rgb (0.774684947460632, 0.5306974938477673, 0.4199844035696376) ,
-  rgb (0.7734402182988989, 0.5258533209345156, 0.41592679539764366) ,
-  rgb (0.7721725722960555, 0.5210102658711383, 0.4119608998712287) ,
-  rgb (0.7708809196230247, 0.516168926434691, 0.40808667584648967) ,
-  rgb (0.7695642334401418, 0.5113298901696085, 0.4043039806968248) ,
-  rgb (0.768221765997353, 0.5064936237128791, 0.40061257089416885) ,
-  rgb (0.7668522895064389, 0.5016608471009063, 0.39701221751773474) ,
-  rgb (0.7654549259333051, 0.4968321290972723, 0.3935025400011538) ,
-  rgb (0.7640288560928866, 0.49200802533379656, 0.39008308392311997) ,
-  rgb (0.7625733355405261, 0.48718906673415824, 0.38675335037837993) ,
-  rgb (0.7610876378057071, 0.48237579130289127, 0.3835127572385229) ,
-  rgb (0.7595711110534006, 0.4775687122205708, 0.380360657784311) ,
-  rgb (0.7580232553845584, 0.4727682731566229, 0.3772963553109668) ,
-  rgb (0.7564434157714071, 0.4679750143794846, 0.37431909037543515) ,
-  rgb (0.7548310506695954, 0.46318942799460555, 0.3714280448394211) ,
-  rgb (0.7531856636904657, 0.45841199172949604, 0.3686223664223477) ,
-  rgb (0.7515068504589166, 0.45364314496866825, 0.36590112443835765) ,
-  rgb (0.7497942054717047, 0.4488833348154881, 0.3632633755836028) ,
-  rgb (0.7480473927555956, 0.44413297780351974, 0.36070813602540136) ,
-  rgb (0.7462661578916344, 0.439392450449735, 0.3582343914230064) ,
-  rgb (0.7444501867657067, 0.4346621718461711, 0.35584108091122535) ,
-  rgb (0.7425992159973317, 0.42994254036133867, 0.3535270924537459) ,
-  rgb (0.7407130161950609, 0.4252339389526239, 0.35129130890802607) ,
-  rgb (0.7387914002459927, 0.4205367299231533, 0.34913260148542435) ,
-  rgb (0.7368342217358587, 0.4158512585029011, 0.347049785207584) ,
-  rgb (0.7348413359856494, 0.4111778700451951, 0.3450416947080907) ,
-  rgb (0.7328127050626875, 0.4065168468778026, 0.3431071517341082) ,
-  rgb (0.7307482075484517, 0.401868526884681, 0.3412449533046818) ,
-  rgb (0.7286477385671655, 0.39723324476747235, 0.33945384341064017) ,
-  rgb (0.7265112290022755, 0.3926113126792577, 0.3377325942005665) ,
-  rgb (0.7243386564778159, 0.38800301593162145, 0.3360799596569183) ,
-  rgb (0.7221299918421461, 0.3834086450896306, 0.33449469983585844) ,
-  rgb (0.7198852149054985, 0.37882848839337313, 0.332975552002454) ,
-  rgb (0.7176044490813385, 0.3742627271068619, 0.3315213862095893) ,
-  rgb (0.7152876061484729, 0.3697117022522345, 0.3301308728723546) ,
-  rgb (0.7129346683977347, 0.36517570519856757, 0.3288027427038317) ,
-  rgb (0.7105456546582587, 0.36065500290840113, 0.3275357416278876) ,
-  rgb (0.7081205956842048, 0.356149855233803, 0.32632861885644465) ,
-  rgb (0.7056595112261009, 0.3516605297812094, 0.32518014084085567) ,
-  rgb (0.7031624945881415, 0.34718723719598, 0.32408913679491225) ,
-  rgb (0.700629624772421, 0.34273019305341756, 0.32305449047765694) ,
-  rgb (0.6980608153581771, 0.3382897632604862, 0.3220747885521809) ,
-  rgb (0.6954560834689112, 0.33386622163232865, 0.3211488430698579) ,
-  rgb (0.6928154484676493, 0.32945984647042675, 0.3202754315314667) ,
-  rgb (0.6901389321505248, 0.32507091815606004, 0.319453323328983) ,
-  rgb (0.6874265643516962, 0.32069970535138104, 0.3186813762227769) ,
-  rgb (0.6846785094249453, 0.3163463482122221, 0.31795870784057567) ,
-  rgb (0.6818945715094452, 0.31201133280550686, 0.3172838048924495) ,
-  rgb (0.6790747402815734, 0.30769497879760166, 0.31665545668946665) ,
-  rgb (0.6762189792440975, 0.30339762792450425, 0.3160724937230589) ,
-  rgb (0.6733272556481733, 0.29911962764489264, 0.3155337232398221) ,
-  rgb (0.670399595476762, 0.29486126309253047, 0.3150381395687221) ,
-  rgb (0.6674360376636913, 0.29062280081258873, 0.31458483752056837) ,
-  rgb (0.6644363246987884, 0.2864048361425618, 0.31417223403606975) ,
-  rgb (0.6614003753260178, 0.28220778870555907, 0.3137991292649849) ,
-  rgb (0.6583280801134499, 0.2780321095766563, 0.3134643447952643) ,
-  rgb (0.6552193260932713, 0.2738782665241015, 0.3131666792687211) ,
-  rgb (0.652074172902773, 0.269746505252367, 0.3129056060581917) ,
-  rgb (0.6488923016945825, 0.2656375533620908, 0.3126794181957019) ,
-  rgb (0.6456734938264543, 0.2615520316161528, 0.31248673753935263) ,
-  rgb (0.642417577481186, 0.257490519876798, 0.31232631707560987) ,
-  rgb (0.6391243387840212, 0.2534536546198314, 0.3121968961206398) ,
-  rgb (0.6357937104834237, 0.24944185818822678, 0.3120979395330059) ,
-  rgb (0.6324253485421027, 0.24545598775548677, 0.3120276597462445) ,
-  rgb (0.6290189201698587, 0.24149689191922535, 0.3119844719564572) ,
-  rgb (0.6255741650043496, 0.23756535071152696, 0.3119669831491227) ,
-  rgb (0.6220907982108261, 0.2336621873300741, 0.3119738327362739) ,
-  rgb (0.6185686525887719, 0.2297879924917992, 0.3120046383872893) ,
-  rgb (0.6150072323639137, 0.22594402043981826, 0.3120568068576574) ,
-  rgb (0.6114062072731884, 0.22213124697023234, 0.3121288139643524) ,
-  rgb (0.6077652399481865, 0.21835070166659282, 0.312219032918702) ,
-  rgb (0.6040840169673274, 0.21460331490206347, 0.31232652641170694) ,
-  rgb (0.6003621301041158, 0.21089030138947745, 0.3124493441041469) ,
-  rgb (0.5965991810912237, 0.207212956082026, 0.3125852303112123) ,
-  rgb (0.5927948053652026, 0.20357251410079796, 0.3127323483930494) ,
-  rgb (0.5889486193554471, 0.19997020971775276, 0.31288922211590126) ,
-  rgb (0.5850602439646688, 0.19640737049066315, 0.3130540116373273) ,
-  rgb (0.5811293276158656, 0.19288548904692518, 0.3132239939418394) ,
-  rgb (0.5771555081299204, 0.18940601489760422, 0.3133970433357208) ,
-  rgb (0.5731384575410787, 0.18597036007065024, 0.3135712686852) ,
-  rgb (0.5690778478401143, 0.18258004462335425, 0.3137444095679653) ,
-  rgb (0.564973435290177, 0.17923664950367169, 0.3139136046337036) ,
-  rgb (0.5608249903911717, 0.17594170887918095, 0.31407639883970623) ,
-  rgb (0.5566322903496934, 0.17269677158182117, 0.31423043195101424) ,
-  rgb (0.5523952157271191, 0.16950338809328983, 0.3143729155461537) ,
-  rgb (0.5481137003346762, 0.1663630904279047, 0.3145010299091471) ,
-  rgb (0.5437877131360856, 0.16327738551419116, 0.31461204226295625) ,
-  rgb (0.5394173664919906, 0.16024769309971934, 0.31470295028655965) ,
-  rgb (0.5350027976174474, 0.15727540775107324, 0.3147708520739653) ,
-  rgb (0.5305442048985645, 0.15436183633886777, 0.3148129978918713) ,
-  rgb (0.5260418962547748, 0.15150818660835483, 0.31482653406646727) ,
-  rgb (0.5214965286322996, 0.14871544765633712, 0.3148076795453443) ,
-  rgb (0.5169084880054446, 0.14598463068714407, 0.3147540759228004) ,
-  rgb (0.5122783510532176, 0.14331656120063752, 0.3146630922831542) ,
-  rgb (0.5076068118105369, 0.14071192654913128, 0.3145320012008257) ,
-  rgb (0.5028952497497061, 0.13817086581280427, 0.3143566215383367) ,
-  rgb (0.4981443546207415, 0.13569380302451714, 0.314135190862664) ,
-  rgb (0.49335504375145617, 0.13328091630401023, 0.31386561956734976) ,
-  rgb (0.48852847371852987, 0.13093210934893723, 0.31354553695453014) ,
-  rgb (0.48366628618847957, 0.1286467902201389, 0.31317188565991266) ,
-  rgb (0.47877034239726296, 0.12642401401409453, 0.3127417273582196) ,
-  rgb (0.473841437035254, 0.12426354237989065, 0.31225470169927194) ,
-  rgb (0.46888111384598413, 0.12216445576414045, 0.31170911458932665) ,
-  rgb (0.46389102840284874, 0.12012561256850712, 0.31110343446582983) ,
-  rgb (0.45887288947308297, 0.11814571137706886, 0.3104363697903881) ,
-  rgb (0.4538300508699989, 0.11622183788331528, 0.3097044124984492) ,
-  rgb (0.4487629917317482, 0.1143535557462255, 0.30890905921943196) ,
-  rgb (0.44367358645071275, 0.11253912421257944, 0.3080497309546545) ,
-  rgb (0.4385637818793154, 0.11077667828375456, 0.30712600062348083) ,
-  rgb (0.4334355841041439, 0.1090642347484701, 0.3061376792828915) ,
-  rgb (0.4282910131578975, 0.1073997763055258, 0.30508479060294547) ,
-  rgb (0.42313214269556043, 0.10578120994917611, 0.3039675809469457) ,
-  rgb (0.41796105205173684, 0.10420644885760968, 0.3027865203963184) ,
-  rgb (0.41277985630360303, 0.1026734006932461, 0.3015422643746897) ,
-  rgb (0.4075912039268871, 0.10117945586419633, 0.300235195077286) ,
-  rgb (0.40239692379737496, 0.09972293031495055, 0.2988667436973397) ,
-  rgb (0.39719876876325577, 0.09830232096827862, 0.2974385647628578) ,
-  rgb (0.39199887556812907, 0.09691583650296684, 0.2959521200550908) ,
-  rgb (0.3867993907954417, 0.09556181960083443, 0.29440901248173756) ,
-  rgb (0.38160247377467543, 0.09423873126371218, 0.2928110750626949) ,
-  rgb (0.3764103053221462, 0.09294519809377791, 0.2911602415731392) ,
-  rgb (0.3712250843130934, 0.09167999748026273, 0.2894586539763317) ,
-  rgb (0.36605031412464006, 0.0904406854276979, 0.2877077458811747) ,
-  rgb (0.36088752387578377, 0.0892271943627452, 0.28591050458531014) ,
-  rgb (0.35573889947341125, 0.08803897435024335, 0.2840695897279818) ,
-  rgb (0.3506067824603248, 0.08687555176033529, 0.28218770540182386) ,
-  rgb (0.345493557138718, 0.08573665496512634, 0.28026769921081435) ,
-  rgb (0.34040164359597463, 0.08462223619170267, 0.27831254595259397) ,
-  rgb (0.3353335322445545, 0.08353243411900396, 0.2763253435679004) ,
-  rgb (0.3302917447118144, 0.08246763389003825, 0.27430929404579435) ,
-  rgb (0.3252788886040126, 0.08142839007654609, 0.27226772884656186) ,
-  rgb (0.3202998655799406, 0.08041299473755484, 0.2702032289303951) ,
-  rgb (0.3153587000920581, 0.07942099731524319, 0.2681190407694196) ,
-  rgb (0.31045520848595526, 0.07845687167618218, 0.2660200572779356) ,
-  rgb (0.30559226007249934, 0.07752196310753731, 0.2639100669211966) ,
-  rgb (0.3007727681291869, 0.07661782433616476, 0.2617929409781967) ,
-  rgb (0.2960004726065818, 0.07574533600095842, 0.25967245030364566) ,
-  rgb (0.29128515387578635, 0.0748990498474667, 0.25755101595750435) ,
-  rgb (0.28662309235899847, 0.07408846082680887, 0.2554347867371703) ,
-  rgb (0.2820174629736694, 0.07331569321404097, 0.25332800295084507) ,
-  rgb (0.277471508091428, 0.07258296989925478, 0.2512349399594277) ,
-  rgb (0.272997015188973, 0.07188355544616351, 0.2491584709323293) ,
-  rgb (0.2685909594817286, 0.07122671627792246, 0.24710443563450618) ,
-  rgb (0.2642551220706094, 0.07061659562299544, 0.24507758869355967) ,
-  rgb (0.25999463887892144, 0.07005385560386188, 0.24308218808684579) ,
-  rgb (0.2558213554748177, 0.06953231029187984, 0.24112190491594204) ,
-  rgb (0.25172899728289466, 0.0690646308260355, 0.23920260612763083) ,
-  rgb (0.247720929905011, 0.06865333790948652, 0.2373288009471749) ,
-  rgb (0.2438114972024792, 0.06828985152901187, 0.23550427698321885) ,
-  rgb (0.23999586188690308, 0.06798502996477995, 0.23373434258507808) ,
-  rgb (0.23627495835774248, 0.06774359820987802, 0.23202360805926608) ,
-  rgb (0.23266299920501882, 0.06755710438847978, 0.23037617493752832) ,
-  rgb (0.2291562027859284, 0.06743473087115257, 0.22879681433956656) ,
-  rgb (0.2257539681670791, 0.06738213230014747, 0.22728984778098055) ,
-  rgb (0.22247308588973624, 0.06738821405309284, 0.22585960379408354) ,
-  rgb (0.21930503925136402, 0.06746578636294004, 0.22451023616807558) ,
-  rgb (0.21625279838647882, 0.06761633027051639, 0.22324568672294431) ,
-  rgb (0.2133313859647627, 0.06783014842602667, 0.2220704321302429) ,
-  rgb (0.21052882914958676, 0.06812195249816172, 0.22098759107715404) ,
-  rgb (0.20785704662965598, 0.06848439879702528, 0.22000133917653536) ,
-  rgb (0.20531725273301316, 0.06891959226639757, 0.21911516689288835) ,
-  rgb (0.20290365333558247, 0.06943524858045896, 0.21833167885096033) ,
-  rgb (0.20058760685133747, 0.07006457614998421, 0.21762721310371608) ,
-  rgb (0.19819343656336558, 0.07097462525273879, 0.21690975060032436) ,
-  rgb (0.19571853588267552, 0.07215778103960274, 0.21617499187076789) ,
-  rgb (0.1931548636579131, 0.07360681904011795, 0.21542362939081539) ,
-  rgb (0.19049578401722037, 0.07531127841678764, 0.2146562337112265) ,
-  rgb (0.18774482037046955, 0.07725158846803931, 0.21387448578597812) ,
-  rgb (0.18488035509396164, 0.07942573027972388, 0.21307651648984993)
-});
+    rgb (0.18739228342697645, 0.07710209689958833, 0.21618875376309582) ,
+      rgb (0.18975853639094634, 0.07501986186214377, 0.2193005075652994) ,
+      rgb (0.19199449184606268, 0.0731828306492733, 0.22243385243433622) ,
+      rgb (0.19410351363791453, 0.07160830485689157, 0.22558727307410353) ,
+      rgb (0.1960826032659409, 0.07032122724242362, 0.22874673279569585) ,
+      rgb (0.19794834061899208, 0.06931406607166066, 0.23194647381302336) ,
+      rgb (0.19971571438603364, 0.06859271055370472, 0.23517094067076993) ,
+      rgb (0.2015613376412984, 0.06798327102620025, 0.23852974228695395) ,
+      rgb (0.20352007949514977, 0.06744417961242422, 0.24205576625191821) ,
+      rgb (0.20558051999470117, 0.06699046239786874, 0.24572497420147632) ,
+      rgb (0.2077442377448806, 0.06661453200418091, 0.24954644291943817) ,
+      rgb (0.21001214221188125, 0.06630857391894718, 0.2535289048041211) ,
+      rgb (0.21237411048541005, 0.06608502466175845, 0.2576516509356954) ,
+      rgb (0.21482843531473683, 0.06594038561377849, 0.26191675992376573) ,
+      rgb (0.21737845072382705, 0.06585966123356204, 0.2663420934966951) ,
+      rgb (0.22001251100779617, 0.0658579189189076, 0.2709027999432586) ,
+      rgb (0.22272706739121817, 0.06593379067565194, 0.275597146520537) ,
+      rgb (0.22552164337737857, 0.0660781731193956, 0.28043398847505197) ,
+      rgb (0.2283917709422868, 0.06628997924139618, 0.28541074411068496) ,
+      rgb (0.23132955273021344, 0.06657618693909059, 0.29051361067988485) ,
+      rgb (0.23433055727563878, 0.0669355996616394, 0.295740099298676) ,
+      rgb (0.23739062429054825, 0.06736588805055552, 0.3010892218406587) ,
+      rgb (0.2405081333229594, 0.0678571038148556, 0.3065705449367832) ,
+      rgb (0.24367372557466271, 0.06841985515092269, 0.3121652405088837) ,
+      rgb (0.24688226237959, 0.06905363944920445, 0.31786993834254956) ,
+      rgb (0.2501284530619938, 0.06975820642910699, 0.32368100685760637) ,
+      rgb (0.25340685873736807, 0.07053358292685183, 0.3295945757321303) ,
+      rgb (0.256711916510839, 0.07138010624208224, 0.3356064898460009) ,
+      rgb (0.26003895187439957, 0.0722947810433622, 0.3417175669546984) ,
+      rgb (0.26338121807151404, 0.07328165793989708, 0.34791888996380105) ,
+      rgb (0.26673233211995284, 0.0743440180285462, 0.3542027606624096) ,
+      rgb (0.2700863774911405, 0.07548367558427554, 0.36056376228111864) ,
+      rgb (0.2734373934245081, 0.07670280023749607, 0.36699616136347685) ,
+      rgb (0.2767793961581559, 0.07800394103378822, 0.37349382846504675) ,
+      rgb (0.2801063857697547, 0.07938999480226153, 0.38005028528138707) ,
+      rgb (0.28341239797185225, 0.08086415336549937, 0.38665868550105914) ,
+      rgb (0.28669151388283165, 0.08242987384848069, 0.39331182532243375) ,
+      rgb (0.2899379244517661, 0.08409078829085731, 0.40000214725256295) ,
+      rgb (0.2931459309698525, 0.08585065688962071, 0.40672178082365834) ,
+      rgb (0.2963100038890529, 0.08771325096046395, 0.41346259134143476) ,
+      rgb (0.2994248396021477, 0.08968225371675004, 0.42021619665853854) ,
+      rgb (0.3024853636457425, 0.0917611873973036, 0.42697404043749887) ,
+      rgb (0.30548675819945936, 0.09395276484082374, 0.4337284999936111) ,
+      rgb (0.30842444457210105, 0.09625938534057774, 0.44047194882050544) ,
+      rgb (0.31129434479712365, 0.0986847719340522, 0.4471931371516162) ,
+      rgb (0.3140927841475553, 0.10123077676403242, 0.45388335612058467) ,
+      rgb (0.316816480890235, 0.10389861387653518, 0.46053414662739794) ,
+      rgb (0.31946262395497965, 0.1066887988239266, 0.46713728801395243) ,
+      rgb (0.3220288227606932, 0.10960114111258401, 0.4736849472572688) ,
+      rgb (0.32451307931207785, 0.11263459791730848, 0.48017007211645196) ,
+      rgb (0.3269137124539796, 0.1157873496841953, 0.4865864649569746) ,
+      rgb (0.3292300520323141, 0.11905764321981127, 0.49292595612342666) ,
+      rgb (0.33146154891145124, 0.12244245263391232, 0.4991827458843107) ,
+      rgb (0.33360804901486, 0.1259381830100592, 0.505351647966549) ,
+      rgb (0.33566978565015315, 0.12954074251271822, 0.5114280721516895) ,
+      rgb (0.3376473209067111, 0.13324562282438077, 0.5174080757397947) ,
+      rgb (0.33954168752669694, 0.1370480189671817, 0.5232879753508524) ,
+      rgb (0.34135411074506483, 0.1409427920655632, 0.5290650094033675) ,
+      rgb (0.34308600291572294, 0.14492465359918028, 0.534737042820671) ,
+      rgb (0.34473901574536375, 0.1489882058982641, 0.5403024592040654) ,
+      rgb (0.3463150717579309, 0.15312802296627787, 0.5457599924248665) ,
+      rgb (0.3478165323877778, 0.1573386351115298, 0.5511085345270326) ,
+      rgb (0.34924513554955644, 0.16161477763045118, 0.5563483747416378) ,
+      rgb (0.3506030444193101, 0.1659512998472086, 0.5614796470399323) ,
+      rgb (0.3518924860887379, 0.17034320478524959, 0.5665028491121665) ,
+      rgb (0.35311574421123737, 0.17478570377561287, 0.5714187152355529) ,
+      rgb (0.3542753496066376, 0.17927413271618647, 0.5762280966066872) ,
+      rgb (0.3553741530690672, 0.18380392577704466, 0.580931914318328) ,
+      rgb (0.35641381143126327, 0.18837119869242164, 0.5855320765920552) ,
+      rgb (0.35739663292915563, 0.1929720819784246, 0.5900301125106313) ,
+      rgb (0.3583248996661781, 0.197602942459778, 0.5944276851750107) ,
+      rgb (0.35920088560930186, 0.20226037920758122, 0.5987265295935138) ,
+      rgb (0.36002681809096376, 0.20694122817889948, 0.6029284543191687) ,
+      rgb (0.36080493826624654, 0.21164251793458128, 0.6070353217206471) ,
+      rgb (0.36153829010998356, 0.21636111429594002, 0.6110488067964093) ,
+      rgb (0.36222809558295926, 0.22109488427338303, 0.6149711234609613) ,
+      rgb (0.3628764356004103, 0.2258414929328703, 0.6188041741082302) ,
+      rgb (0.36348537610385145, 0.2305987621839642, 0.6225498862239288) ,
+      rgb (0.3640569302208851, 0.23536470386204195, 0.6262101345195302) ,
+      rgb (0.3645930889012501, 0.24013747024823828, 0.629786801550261) ,
+      rgb (0.3650957984588681, 0.24491536803550484, 0.6332817352005559) ,
+      rgb (0.3655669837353898, 0.24969683475296395, 0.6366967518748858) ,
+      rgb (0.36600853966739794, 0.25448043878086224, 0.6400336180336859) ,
+      rgb (0.3664224325155063, 0.25926481158628106, 0.6432940914076554) ,
+      rgb (0.3668108554010799, 0.26404857724525643, 0.6464799165290824) ,
+      rgb (0.36717513650699446, 0.26883085667326956, 0.6495927229789225) ,
+      rgb (0.36751707094367697, 0.2736106331709098, 0.6526341171161864) ,
+      rgb (0.3678384369653108, 0.2783869718129776, 0.655605668384537) ,
+      rgb (0.3681410147989972, 0.2831590122118299, 0.6585088880697231) ,
+      rgb (0.36842655638020444, 0.2879259643777846, 0.661345269109446) ,
+      rgb (0.3686968223189527, 0.292687098561501, 0.6641162529823691) ,
+      rgb (0.3689535530659678, 0.29744175492366276, 0.6668232208982426) ,
+      rgb (0.36919847837592484, 0.3021893217650707, 0.6694675433161452) ,
+      rgb (0.3694333459127623, 0.3069292355186234, 0.6720505284912062) ,
+      rgb (0.36965987626565955, 0.3116609876295197, 0.6745734474341955) ,
+      rgb (0.3698798032902536, 0.31638410101153364, 0.6770375543809057) ,
+      rgb (0.37009487130772695, 0.3210981375964933, 0.6794440539905685) ,
+      rgb (0.37030682071842685, 0.32580269697872455, 0.6817941168448668) ,
+      rgb (0.37051738634484427, 0.3304974124430785, 0.6840888878885721) ,
+      rgb (0.3707283327942267, 0.33518193808489577, 0.6863294816960677) ,
+      rgb (0.3709415155133733, 0.33985591488818123, 0.6885170337950512) ,
+      rgb (0.37115856636209105, 0.3445191141023017, 0.6906525358646499) ,
+      rgb (0.37138124223736607, 0.34917126878479027, 0.6927370347192883) ,
+      rgb (0.3716113323440048, 0.3538121372967869, 0.6947714991938089) ,
+      rgb (0.3718506155898596, 0.3584414828587522, 0.6967569581025654) ,
+      rgb (0.3721008970244382, 0.3630590973698238, 0.6986943461507372) ,
+      rgb (0.37236397858465387, 0.36766477862108266, 0.7005846349652077) ,
+      rgb (0.37264166757849604, 0.3722583500483685, 0.7024287314570723) ,
+      rgb (0.3729357864666503, 0.3768396383521984, 0.7042275578058994) ,
+      rgb (0.37324816143326384, 0.38140848555753937, 0.7059820097480604) ,
+      rgb (0.3735806215098284, 0.3859647438605754, 0.7076929760731058) ,
+      rgb (0.3739349933047578, 0.3905082752937583, 0.7093613429347845) ,
+      rgb (0.3743131319931234, 0.3950389482828331, 0.7109879652237746) ,
+      rgb (0.3747168601930223, 0.3995566498711684, 0.7125736851650046) ,
+      rgb (0.37514802505380473, 0.4040612609993941, 0.7141193695725726) ,
+      rgb (0.375608469194424, 0.40855267638072096, 0.7156258509158755) ,
+      rgb (0.37610001286385814, 0.4130307995247706, 0.7170939691992023) ,
+      rgb (0.37662448930806297, 0.41749553747893614, 0.7185245473617611) ,
+      rgb (0.3771837184425123, 0.4219468022345483, 0.7199184152447577) ,
+      rgb (0.3777794975351373, 0.4263845142616835, 0.7212763999353023) ,
+      rgb (0.378413635091359, 0.43080859411413064, 0.7225993199306104) ,
+      rgb (0.3790878928311076, 0.43521897612544935, 0.7238879869132313) ,
+      rgb (0.3798040374484875, 0.4396155882122263, 0.7251432377876109) ,
+      rgb (0.3805638069656562, 0.4439983720863372, 0.7263658704513531) ,
+      rgb (0.3813688793045416, 0.4483672766927786, 0.7275567131714135) ,
+      rgb (0.38222094988570376, 0.45272225034283325, 0.7287165614400378) ,
+      rgb (0.3831216808440275, 0.457063235814072, 0.7298462679135326) ,
+      rgb (0.38407269378943537, 0.46139018782416635, 0.7309466543290268) ,
+      rgb (0.3850755679365139, 0.46570306719930193, 0.732018540336905) ,
+      rgb (0.386131841788921, 0.4700018340988123, 0.7330627749243106) ,
+      rgb (0.3872430145933025, 0.4742864593363539, 0.7340801678785439) ,
+      rgb (0.3884105330084243, 0.47855691131792805, 0.7350715764115726) ,
+      rgb (0.38963580160340855, 0.48281316715123496, 0.7360378254693274) ,
+      rgb (0.390920175719949, 0.4870552025122304, 0.7369797713388125) ,
+      rgb (0.39226494876209317, 0.4912830033289926, 0.7378982478447508) ,
+      rgb (0.39367135736822567, 0.4954965577745118, 0.738794102296364) ,
+      rgb (0.3951405880820763, 0.4996958532637776, 0.7396682021171571) ,
+      rgb (0.3966737490566561, 0.5038808905384797, 0.7405213858051674) ,
+      rgb (0.3982719152586337, 0.5080516653927614, 0.7413545091809972) ,
+      rgb (0.39993606933454834, 0.5122081814321852, 0.7421684457131799) ,
+      rgb (0.40166714010896104, 0.5163504496968876, 0.7429640345324835) ,
+      rgb (0.40346600333905397, 0.5204784765384003, 0.7437421522356709) ,
+      rgb (0.4053334378930318, 0.5245922817498312, 0.7445036583670813) ,
+      rgb (0.4072701869421907, 0.5286918801105741, 0.7452494263758127) ,
+      rgb (0.4092768899914751, 0.5327773017713032, 0.7459803063570782) ,
+      rgb (0.4113541469730457, 0.5368485776500593, 0.7466971285506578) ,
+      rgb (0.4135024574331473, 0.5409057477109848, 0.7474007329754309) ,
+      rgb (0.4157223260454232, 0.544948827153504, 0.7480920445900052) ,
+      rgb (0.4180141407923363, 0.5489778542188889, 0.7487719316700112) ,
+      rgb (0.42037822361396326, 0.5529928715810817, 0.7494412559451894) ,
+      rgb (0.4228148567577266, 0.5569939212699658, 0.7501008698822764) ,
+      rgb (0.42532423665011354, 0.560981049599503, 0.7507516498900512) ,
+      rgb (0.42790652284925834, 0.5649543060909209, 0.7513944352191484) ,
+      rgb (0.4305617907305757, 0.5689137457245718, 0.752030080993127) ,
+      rgb (0.43329008867358393, 0.5728594162560667, 0.7526594653256667) ,
+      rgb (0.4360913895835637, 0.5767913799818608, 0.7532834105961016) ,
+      rgb (0.43896563958048396, 0.5807096924109849, 0.7539027620828594) ,
+      rgb (0.441912717666964, 0.5846144110017557, 0.7545183888441067) ,
+      rgb (0.4449324685421538, 0.5885055998308617, 0.7551311041857901) ,
+      rgb (0.4480247093358917, 0.5923833145214658, 0.7557417647410792) ,
+      rgb (0.45118918687617743, 0.5962476205135354, 0.7563512064324664) ,
+      rgb (0.45442563977552913, 0.6000985950385866, 0.7569601366060649) ,
+      rgb (0.45773377230160567, 0.6039363004658646, 0.7575693690185916) ,
+      rgb (0.4611132664702388, 0.607760777169989, 0.7581798643680714) ,
+      rgb (0.4645637671630393, 0.6115720882286415, 0.7587924262302581) ,
+      rgb (0.46808490970531597, 0.6153702869579029, 0.7594078989109274) ,
+      rgb (0.4716762951887709, 0.6191554324288464, 0.7600270922788305) ,
+      rgb (0.47533752394906287, 0.6229275728383581, 0.7606508557181775) ,
+      rgb (0.47906816236197386, 0.6266867625186013, 0.7612800037566242) ,
+      rgb (0.4828677867260272, 0.6304330455306234, 0.761915371498953) ,
+      rgb (0.4867359599430568, 0.6341664625110051, 0.7625578008592404) ,
+      rgb (0.4906722493856122, 0.6378870485884708, 0.7632081276316384) ,
+      rgb (0.4946761847863938, 0.6415948411950443, 0.7638671900213091) ,
+      rgb (0.4987473366135607, 0.6452898684900934, 0.7645357873418008) ,
+      rgb (0.5028853540415561, 0.6489721673409526, 0.7652144671817491) ,
+      rgb (0.5070896957645166, 0.6526417240314645, 0.7659044566083585) ,
+      rgb (0.5113599254160193, 0.6562985398183186, 0.7666066378064533) ,
+      rgb (0.5156955988596057, 0.65994260812898, 0.7673219148959617) ,
+      rgb (0.5200962739223556, 0.6635739143403039, 0.768051194033441) ,
+      rgb (0.5245615147059358, 0.6671924299614223, 0.7687954171423095) ,
+      rgb (0.529090861832473, 0.6707981230280622, 0.7695555229231313) ,
+      rgb (0.533683891477284, 0.6743909370521273, 0.7703325054879735) ,
+      rgb (0.5383401557517628, 0.677970811290954, 0.7711273443905772) ,
+      rgb (0.5430593242401823, 0.6815376725306588, 0.7719407969783508) ,
+      rgb (0.5478409815301863, 0.6850914221850988, 0.7727738647344087) ,
+      rgb (0.5526845058934713, 0.6886319451516638, 0.7736279426902245) ,
+      rgb (0.5575894041960517, 0.6921591145825405, 0.7745041337932782) ,
+      rgb (0.5625551535721934, 0.6956727838162965, 0.7754035914230984) ,
+      rgb (0.5675811785386197, 0.6991727930264627, 0.776327485342753) ,
+      rgb (0.5726668948158774, 0.7026589535425779, 0.7772770268091199) ,
+      rgb (0.5778116438998202, 0.7061310615715398, 0.7782534512102552) ,
+      rgb (0.5830148703693241, 0.7095888767699747, 0.7792578182047659) ,
+      rgb (0.588275797805555, 0.7130321464645814, 0.7802914140563652) ,
+      rgb (0.5935933569683722, 0.7164606049658685, 0.781355882376401) ,
+      rgb (0.5989665814482068, 0.7198739489224673, 0.7824525989934664) ,
+      rgb (0.6043943420027486, 0.7232718614323369, 0.7835829559353559) ,
+      rgb (0.6098754317609306, 0.7266539875975829, 0.7847483573269471) ,
+      rgb (0.6154084641177048, 0.7300199523273969, 0.7859502270675048) ,
+      rgb (0.6209919306481755, 0.733369347989232, 0.7871899462469658) ,
+      rgb (0.6266240202260459, 0.7367017540369944, 0.7884690131633456) ,
+      rgb (0.6323027138710603, 0.740016721601314, 0.7897889276264043) ,
+      rgb (0.6380258682854598, 0.7433137671403319, 0.7911510045957317) ,
+      rgb (0.6437910831099849, 0.7465923800833657, 0.7925565320130605) ,
+      rgb (0.6495957300425348, 0.7498520122194177, 0.7940067402149911) ,
+      rgb (0.6554369232645472, 0.7530920875676843, 0.7955027112903105) ,
+      rgb (0.6613112930078745, 0.7563120270871903, 0.7970456043491897) ,
+      rgb (0.6672147980375281, 0.7595112803730375, 0.7986367465453776) ,
+      rgb (0.6731442255942621, 0.7626890873389048, 0.8002762854580953) ,
+      rgb (0.6790955449988215, 0.765844721313959, 0.8019646617300199) ,
+      rgb (0.6850644615439593, 0.7689774029354699, 0.8037020626717691) ,
+      rgb (0.691046410093091, 0.7720862946067809, 0.8054884169067907) ,
+      rgb (0.6970365443886174, 0.7751705000806606, 0.8073233538006345) ,
+      rgb (0.7030297722540817, 0.7782290497335813, 0.8092061884805697) ,
+      rgb (0.709020781345393, 0.7812608871607091, 0.8111359185511793) ,
+      rgb (0.7150040307625213, 0.7842648709158119, 0.8131111655994991) ,
+      rgb (0.7209728066553678, 0.7872399592345264, 0.8151307392087926) ,
+      rgb (0.726921775128297, 0.7901846863592763, 0.8171921746672638) ,
+      rgb (0.7328454364552346, 0.7930974646884407, 0.8192926338423038) ,
+      rgb (0.7387377170049494, 0.7959766573503101, 0.8214292278043301) ,
+      rgb (0.7445924777189017, 0.7988204771958325, 0.8235986758615652) ,
+      rgb (0.750403467654067, 0.8016269900896532, 0.8257973785108242) ,
+      rgb (0.7561644358438198, 0.8043940873347794, 0.8280213899472) ,
+      rgb (0.7618690793798029, 0.8071194938764749, 0.830266486168872) ,
+      rgb (0.7675110850441786, 0.8098007598713145, 0.8325281663805967) ,
+      rgb (0.7730841659017094, 0.8124352473546601, 0.8348017295057968) ,
+      rgb (0.7785789200822759, 0.8150208937874255, 0.8370834463093898) ,
+      rgb (0.7839910104276492, 0.8175542640053343, 0.8393674746403673) ,
+      rgb (0.7893144556460892, 0.8200321318870201, 0.8416486380471222) ,
+      rgb (0.7945430508923111, 0.8224511622630462, 0.8439218478682798) ,
+      rgb (0.79967075421268, 0.8248078181208093, 0.8461821002957853) ,
+      rgb (0.8046916442981458, 0.8270983878056066, 0.8484244929697402) ,
+      rgb (0.8095999819094809, 0.8293189667350546, 0.8506444160105037) ,
+      rgb (0.8143898212114309, 0.8314655869419785, 0.8528375906214702) ,
+      rgb (0.8190465467793753, 0.8335364929949034, 0.855002062870101) ,
+      rgb (0.8235742968025285, 0.8355248776479544, 0.8571319132851495) ,
+      rgb (0.8279689431601354, 0.837426007513952, 0.8592239945130679) ,
+      rgb (0.8322270571293441, 0.8392349062775448, 0.8612756350042788) ,
+      rgb (0.8363403180919118, 0.8409479651895194, 0.8632852800107016) ,
+      rgb (0.8403042080595778, 0.8425605950855084, 0.865250882410458) ,
+      rgb (0.8441261828674842, 0.8440648271103739, 0.8671697332269007) ,
+      rgb (0.8478071070257792, 0.8454546229209523, 0.8690403678369444) ,
+      rgb (0.8513371457085719, 0.8467273579611647, 0.8708608165735044) ,
+      rgb (0.8547259318925698, 0.8478748812467282, 0.8726282980930582) ,
+      rgb (0.8579825924567037, 0.8488893481028184, 0.8743403855344628) ,
+      rgb (0.8611024543689985, 0.8497675485700126, 0.8759924292343957) ,
+      rgb (0.86408985081464, 0.8505039116750779, 0.8775792578489263) ,
+      rgb (0.8669601550533358, 0.8510896085314068, 0.8790976697717334) ,
+      rgb (0.8697047485350982, 0.8515240300479789, 0.8805388339000336) ,
+      rgb (0.8723313408512408, 0.8518016547808089, 0.8818970435500162) ,
+      rgb (0.8748534750857597, 0.8519152612302319, 0.8831692696761383) ,
+      rgb (0.8772488085896548, 0.8518702833887027, 0.8843412038131143) ,
+      rgb (0.8795410528270573, 0.8516567540749572, 0.8854143767924102) ,
+      rgb (0.8817223105928579, 0.8512759407765347, 0.8863805692551482) ,
+      rgb (0.8837852019553906, 0.8507294054031063, 0.8872322209694989) ,
+      rgb (0.8857501584075443, 0.8500092494306783, 0.8879736506427196) ,
+      rgb (0.8857115512284565, 0.8500218611585632, 0.8857253899008712) ,
+      rgb (0.8855471481195238, 0.8498717428363158, 0.8833620612117095) ,
+      rgb (0.8852589797263047, 0.8495589281098921, 0.8808841479402484) ,
+      rgb (0.8848513815990857, 0.849084264228938, 0.8782823528537247) ,
+      rgb (0.8843271305411354, 0.8484474157205542, 0.8755678522824297) ,
+      rgb (0.8836912714589804, 0.8476489176151927, 0.8727414710144156) ,
+      rgb (0.8829516859544853, 0.8466897027569927, 0.8697961704819097) ,
+      rgb (0.8821154248940161, 0.8455700725455935, 0.8667376504623333) ,
+      rgb (0.8811916987134195, 0.8442906671771735, 0.8635659516866988) ,
+      rgb (0.8801929331569581, 0.8428522482477862, 0.8602739992715663) ,
+      rgb (0.8791324424079277, 0.8412555488447591, 0.8568557229103964) ,
+      rgb (0.8780229843664901, 0.8395016561854007, 0.8533064535245892) ,
+      rgb (0.8768784845161469, 0.8375923807118654, 0.8496137354915025) ,
+      rgb (0.875714587099614, 0.8355302318472394, 0.8457553751902708) ,
+      rgb (0.8745379332026019, 0.8333197294864546, 0.8417192535806901) ,
+      rgb (0.8733517136091627, 0.8309671525127262, 0.8374885100119709) ,
+      rgb (0.8721533197845432, 0.8284805282370967, 0.8330486712880828) ,
+      rgb (0.8709384671729751, 0.8258685788943851, 0.8283849726114961) ,
+      rgb (0.8696913150261381, 0.8231415885956916, 0.8235047668317317) ,
+      rgb (0.8683995469581863, 0.8203087551218152, 0.8184163896312899) ,
+      rgb (0.867053149070485, 0.8173780404191124, 0.813134196269114) ,
+      rgb (0.8656493432560532, 0.8143554406751491, 0.8076697232416455) ,
+      rgb (0.8641834372394103, 0.8112464422465354, 0.8020461269686395) ,
+      rgb (0.8626560105112757, 0.8080552380426153, 0.796282666437655) ,
+      rgb (0.8610711702756552, 0.8047851790981223, 0.7903952966373629) ,
+      rgb (0.8594346370300241, 0.8014392309950078, 0.7843978875138392) ,
+      rgb (0.857756629435049, 0.7980196314271393, 0.778295716672475) ,
+      rgb (0.856040223147254, 0.7945296360155061, 0.7721061003767414) ,
+      rgb (0.8542921961147046, 0.7909719677709199, 0.765838014779141) ,
+      rgb (0.8525190720770844, 0.7873493613354844, 0.7594994148789691) ,
+      rgb (0.8507269702317879, 0.7836645734238389, 0.7530974636118285) ,
+      rgb (0.8489224556311764, 0.7799202140765015, 0.7466371929366437) ,
+      rgb (0.847111955079651, 0.7761188023604716, 0.7401227576280706) ,
+      rgb (0.8452981073195511, 0.7722633860104472, 0.7335636824054149) ,
+      rgb (0.843485292229337, 0.7683566039987018, 0.7269653699897204) ,
+      rgb (0.8416775076684515, 0.7644010120098295, 0.7203329938728462) ,
+      rgb (0.8398783988412087, 0.7603990719977968, 0.7136714781112923) ,
+      rgb (0.8380912347613196, 0.7563531486080863, 0.7069856139021298) ,
+      rgb (0.8363189884473793, 0.7522654895287526, 0.7002799902886496) ,
+      rgb (0.8345656905566583, 0.7481379479992134, 0.6935569764986385) ,
+      rgb (0.8328327718577798, 0.7439727181745988, 0.6868223587464855) ,
+      rgb (0.8311216352909631, 0.7397718464763862, 0.6800812520363146) ,
+      rgb (0.8294340781648147, 0.7355371221572935, 0.6733377200930191) ,
+      rgb (0.8277716072353446, 0.7312702332407809, 0.6665957020468297) ,
+      rgb (0.8261354971058026, 0.7269727551823826, 0.659859001562165) ,
+      rgb (0.8245268129450285, 0.7226461431208888, 0.653131379154226) ,
+      rgb (0.8229463511042843, 0.7182917733129006, 0.6464164243818421) ,
+      rgb (0.8213947205565636, 0.7139109141951604, 0.6397176669767276) ,
+      rgb (0.8198723065045529, 0.7095047497878748, 0.6330385704006711) ,
+      rgb (0.8183793116449822, 0.705074381896351, 0.626382454789333) ,
+      rgb (0.8169157577505589, 0.7006208301478398, 0.6197526063725792) ,
+      rgb (0.8154814662727948, 0.6961450550830809, 0.6131522120932265) ,
+      rgb (0.8140761104699334, 0.6916479479148213, 0.6065843782630862) ,
+      rgb (0.8126992203988149, 0.6871303371461888, 0.600052148204351) ,
+      rgb (0.8113501401176333, 0.6825930154624339, 0.5935584890905076) ,
+      rgb (0.8100280946652069, 0.6780367267397182, 0.5871062690808275) ,
+      rgb (0.8087321917008969, 0.6734621670219452, 0.5806983480557674) ,
+      rgb (0.8074614045096935, 0.6688700095398864, 0.5743374637345958) ,
+      rgb (0.8062146052692706, 0.6642608958528229, 0.5680262917864979) ,
+      rgb (0.804990547908103, 0.6596354502756416, 0.5617674511054698) ,
+      rgb (0.8037879253107763, 0.6549942654947263, 0.5555635086708381) ,
+      rgb (0.8026053114611295, 0.6503379374810385, 0.5494169158460365) ,
+      rgb (0.8014412429256005, 0.6456670345921877, 0.5433300863249918) ,
+      rgb (0.8002941538975398, 0.6409821330674986, 0.5373053518514104) ,
+      rgb (0.7991624518501963, 0.6362837937202919, 0.5313449594256143) ,
+      rgb (0.7980444781513664, 0.6315725822508955, 0.5254510814483478) ,
+      rgb (0.7969385471995161, 0.626849056792967, 0.5196258425240281) ,
+      rgb (0.7958429237958377, 0.6221137880845115, 0.5138712409190979) ,
+      rgb (0.7947558597265404, 0.617367344002207, 0.5081892121310299) ,
+      rgb (0.7936755969866496, 0.6126102933407219, 0.5025816129126943) ,
+      rgb (0.7926003430423745, 0.6078432208703702, 0.4970502062153201) ,
+      rgb (0.7915283284347561, 0.603066705931472, 0.49159667021646397) ,
+      rgb (0.7904577684772788, 0.5982813427706246, 0.48622257801969754) ,
+      rgb (0.7893873776625194, 0.5934875421745599, 0.48092913815357724) ,
+      rgb (0.7883151404562396, 0.5886860017356244, 0.4757179187907608) ,
+      rgb (0.7872390410818835, 0.5838774374455721, 0.47059039582133383) ,
+      rgb (0.7861573713233296, 0.5790624629815756, 0.465547782819184) ,
+      rgb (0.7850684501960684, 0.5742417003617839, 0.46059116206904965) ,
+      rgb (0.7839706083641448, 0.5694157832671042, 0.4557215474289206) ,
+      rgb (0.7828622526444091, 0.5645853311116688, 0.45093985823706345) ,
+      rgb (0.7817418047898184, 0.5597509805259486, 0.44624687186865436) ,
+      rgb (0.7806077474948377, 0.5549133574489061, 0.4416433242636464) ,
+      rgb (0.7794586273150664, 0.5500730841397727, 0.4371297985644476) ,
+      rgb (0.7782934580763312, 0.545230594884266, 0.432706647838971) ,
+      rgb (0.7771103295521099, 0.5403867491056124, 0.4283745037125848) ,
+      rgb (0.775907907306857, 0.5355421788246119, 0.42413367909988375) ,
+      rgb (0.774684947460632, 0.5306974938477673, 0.4199844035696376) ,
+      rgb (0.7734402182988989, 0.5258533209345156, 0.41592679539764366) ,
+      rgb (0.7721725722960555, 0.5210102658711383, 0.4119608998712287) ,
+      rgb (0.7708809196230247, 0.516168926434691, 0.40808667584648967) ,
+      rgb (0.7695642334401418, 0.5113298901696085, 0.4043039806968248) ,
+      rgb (0.768221765997353, 0.5064936237128791, 0.40061257089416885) ,
+      rgb (0.7668522895064389, 0.5016608471009063, 0.39701221751773474) ,
+      rgb (0.7654549259333051, 0.4968321290972723, 0.3935025400011538) ,
+      rgb (0.7640288560928866, 0.49200802533379656, 0.39008308392311997) ,
+      rgb (0.7625733355405261, 0.48718906673415824, 0.38675335037837993) ,
+      rgb (0.7610876378057071, 0.48237579130289127, 0.3835127572385229) ,
+      rgb (0.7595711110534006, 0.4775687122205708, 0.380360657784311) ,
+      rgb (0.7580232553845584, 0.4727682731566229, 0.3772963553109668) ,
+      rgb (0.7564434157714071, 0.4679750143794846, 0.37431909037543515) ,
+      rgb (0.7548310506695954, 0.46318942799460555, 0.3714280448394211) ,
+      rgb (0.7531856636904657, 0.45841199172949604, 0.3686223664223477) ,
+      rgb (0.7515068504589166, 0.45364314496866825, 0.36590112443835765) ,
+      rgb (0.7497942054717047, 0.4488833348154881, 0.3632633755836028) ,
+      rgb (0.7480473927555956, 0.44413297780351974, 0.36070813602540136) ,
+      rgb (0.7462661578916344, 0.439392450449735, 0.3582343914230064) ,
+      rgb (0.7444501867657067, 0.4346621718461711, 0.35584108091122535) ,
+      rgb (0.7425992159973317, 0.42994254036133867, 0.3535270924537459) ,
+      rgb (0.7407130161950609, 0.4252339389526239, 0.35129130890802607) ,
+      rgb (0.7387914002459927, 0.4205367299231533, 0.34913260148542435) ,
+      rgb (0.7368342217358587, 0.4158512585029011, 0.347049785207584) ,
+      rgb (0.7348413359856494, 0.4111778700451951, 0.3450416947080907) ,
+      rgb (0.7328127050626875, 0.4065168468778026, 0.3431071517341082) ,
+      rgb (0.7307482075484517, 0.401868526884681, 0.3412449533046818) ,
+      rgb (0.7286477385671655, 0.39723324476747235, 0.33945384341064017) ,
+      rgb (0.7265112290022755, 0.3926113126792577, 0.3377325942005665) ,
+      rgb (0.7243386564778159, 0.38800301593162145, 0.3360799596569183) ,
+      rgb (0.7221299918421461, 0.3834086450896306, 0.33449469983585844) ,
+      rgb (0.7198852149054985, 0.37882848839337313, 0.332975552002454) ,
+      rgb (0.7176044490813385, 0.3742627271068619, 0.3315213862095893) ,
+      rgb (0.7152876061484729, 0.3697117022522345, 0.3301308728723546) ,
+      rgb (0.7129346683977347, 0.36517570519856757, 0.3288027427038317) ,
+      rgb (0.7105456546582587, 0.36065500290840113, 0.3275357416278876) ,
+      rgb (0.7081205956842048, 0.356149855233803, 0.32632861885644465) ,
+      rgb (0.7056595112261009, 0.3516605297812094, 0.32518014084085567) ,
+      rgb (0.7031624945881415, 0.34718723719598, 0.32408913679491225) ,
+      rgb (0.700629624772421, 0.34273019305341756, 0.32305449047765694) ,
+      rgb (0.6980608153581771, 0.3382897632604862, 0.3220747885521809) ,
+      rgb (0.6954560834689112, 0.33386622163232865, 0.3211488430698579) ,
+      rgb (0.6928154484676493, 0.32945984647042675, 0.3202754315314667) ,
+      rgb (0.6901389321505248, 0.32507091815606004, 0.319453323328983) ,
+      rgb (0.6874265643516962, 0.32069970535138104, 0.3186813762227769) ,
+      rgb (0.6846785094249453, 0.3163463482122221, 0.31795870784057567) ,
+      rgb (0.6818945715094452, 0.31201133280550686, 0.3172838048924495) ,
+      rgb (0.6790747402815734, 0.30769497879760166, 0.31665545668946665) ,
+      rgb (0.6762189792440975, 0.30339762792450425, 0.3160724937230589) ,
+      rgb (0.6733272556481733, 0.29911962764489264, 0.3155337232398221) ,
+      rgb (0.670399595476762, 0.29486126309253047, 0.3150381395687221) ,
+      rgb (0.6674360376636913, 0.29062280081258873, 0.31458483752056837) ,
+      rgb (0.6644363246987884, 0.2864048361425618, 0.31417223403606975) ,
+      rgb (0.6614003753260178, 0.28220778870555907, 0.3137991292649849) ,
+      rgb (0.6583280801134499, 0.2780321095766563, 0.3134643447952643) ,
+      rgb (0.6552193260932713, 0.2738782665241015, 0.3131666792687211) ,
+      rgb (0.652074172902773, 0.269746505252367, 0.3129056060581917) ,
+      rgb (0.6488923016945825, 0.2656375533620908, 0.3126794181957019) ,
+      rgb (0.6456734938264543, 0.2615520316161528, 0.31248673753935263) ,
+      rgb (0.642417577481186, 0.257490519876798, 0.31232631707560987) ,
+      rgb (0.6391243387840212, 0.2534536546198314, 0.3121968961206398) ,
+      rgb (0.6357937104834237, 0.24944185818822678, 0.3120979395330059) ,
+      rgb (0.6324253485421027, 0.24545598775548677, 0.3120276597462445) ,
+      rgb (0.6290189201698587, 0.24149689191922535, 0.3119844719564572) ,
+      rgb (0.6255741650043496, 0.23756535071152696, 0.3119669831491227) ,
+      rgb (0.6220907982108261, 0.2336621873300741, 0.3119738327362739) ,
+      rgb (0.6185686525887719, 0.2297879924917992, 0.3120046383872893) ,
+      rgb (0.6150072323639137, 0.22594402043981826, 0.3120568068576574) ,
+      rgb (0.6114062072731884, 0.22213124697023234, 0.3121288139643524) ,
+      rgb (0.6077652399481865, 0.21835070166659282, 0.312219032918702) ,
+      rgb (0.6040840169673274, 0.21460331490206347, 0.31232652641170694) ,
+      rgb (0.6003621301041158, 0.21089030138947745, 0.3124493441041469) ,
+      rgb (0.5965991810912237, 0.207212956082026, 0.3125852303112123) ,
+      rgb (0.5927948053652026, 0.20357251410079796, 0.3127323483930494) ,
+      rgb (0.5889486193554471, 0.19997020971775276, 0.31288922211590126) ,
+      rgb (0.5850602439646688, 0.19640737049066315, 0.3130540116373273) ,
+      rgb (0.5811293276158656, 0.19288548904692518, 0.3132239939418394) ,
+      rgb (0.5771555081299204, 0.18940601489760422, 0.3133970433357208) ,
+      rgb (0.5731384575410787, 0.18597036007065024, 0.3135712686852) ,
+      rgb (0.5690778478401143, 0.18258004462335425, 0.3137444095679653) ,
+      rgb (0.564973435290177, 0.17923664950367169, 0.3139136046337036) ,
+      rgb (0.5608249903911717, 0.17594170887918095, 0.31407639883970623) ,
+      rgb (0.5566322903496934, 0.17269677158182117, 0.31423043195101424) ,
+      rgb (0.5523952157271191, 0.16950338809328983, 0.3143729155461537) ,
+      rgb (0.5481137003346762, 0.1663630904279047, 0.3145010299091471) ,
+      rgb (0.5437877131360856, 0.16327738551419116, 0.31461204226295625) ,
+      rgb (0.5394173664919906, 0.16024769309971934, 0.31470295028655965) ,
+      rgb (0.5350027976174474, 0.15727540775107324, 0.3147708520739653) ,
+      rgb (0.5305442048985645, 0.15436183633886777, 0.3148129978918713) ,
+      rgb (0.5260418962547748, 0.15150818660835483, 0.31482653406646727) ,
+      rgb (0.5214965286322996, 0.14871544765633712, 0.3148076795453443) ,
+      rgb (0.5169084880054446, 0.14598463068714407, 0.3147540759228004) ,
+      rgb (0.5122783510532176, 0.14331656120063752, 0.3146630922831542) ,
+      rgb (0.5076068118105369, 0.14071192654913128, 0.3145320012008257) ,
+      rgb (0.5028952497497061, 0.13817086581280427, 0.3143566215383367) ,
+      rgb (0.4981443546207415, 0.13569380302451714, 0.314135190862664) ,
+      rgb (0.49335504375145617, 0.13328091630401023, 0.31386561956734976) ,
+      rgb (0.48852847371852987, 0.13093210934893723, 0.31354553695453014) ,
+      rgb (0.48366628618847957, 0.1286467902201389, 0.31317188565991266) ,
+      rgb (0.47877034239726296, 0.12642401401409453, 0.3127417273582196) ,
+      rgb (0.473841437035254, 0.12426354237989065, 0.31225470169927194) ,
+      rgb (0.46888111384598413, 0.12216445576414045, 0.31170911458932665) ,
+      rgb (0.46389102840284874, 0.12012561256850712, 0.31110343446582983) ,
+      rgb (0.45887288947308297, 0.11814571137706886, 0.3104363697903881) ,
+      rgb (0.4538300508699989, 0.11622183788331528, 0.3097044124984492) ,
+      rgb (0.4487629917317482, 0.1143535557462255, 0.30890905921943196) ,
+      rgb (0.44367358645071275, 0.11253912421257944, 0.3080497309546545) ,
+      rgb (0.4385637818793154, 0.11077667828375456, 0.30712600062348083) ,
+      rgb (0.4334355841041439, 0.1090642347484701, 0.3061376792828915) ,
+      rgb (0.4282910131578975, 0.1073997763055258, 0.30508479060294547) ,
+      rgb (0.42313214269556043, 0.10578120994917611, 0.3039675809469457) ,
+      rgb (0.41796105205173684, 0.10420644885760968, 0.3027865203963184) ,
+      rgb (0.41277985630360303, 0.1026734006932461, 0.3015422643746897) ,
+      rgb (0.4075912039268871, 0.10117945586419633, 0.300235195077286) ,
+      rgb (0.40239692379737496, 0.09972293031495055, 0.2988667436973397) ,
+      rgb (0.39719876876325577, 0.09830232096827862, 0.2974385647628578) ,
+      rgb (0.39199887556812907, 0.09691583650296684, 0.2959521200550908) ,
+      rgb (0.3867993907954417, 0.09556181960083443, 0.29440901248173756) ,
+      rgb (0.38160247377467543, 0.09423873126371218, 0.2928110750626949) ,
+      rgb (0.3764103053221462, 0.09294519809377791, 0.2911602415731392) ,
+      rgb (0.3712250843130934, 0.09167999748026273, 0.2894586539763317) ,
+      rgb (0.36605031412464006, 0.0904406854276979, 0.2877077458811747) ,
+      rgb (0.36088752387578377, 0.0892271943627452, 0.28591050458531014) ,
+      rgb (0.35573889947341125, 0.08803897435024335, 0.2840695897279818) ,
+      rgb (0.3506067824603248, 0.08687555176033529, 0.28218770540182386) ,
+      rgb (0.345493557138718, 0.08573665496512634, 0.28026769921081435) ,
+      rgb (0.34040164359597463, 0.08462223619170267, 0.27831254595259397) ,
+      rgb (0.3353335322445545, 0.08353243411900396, 0.2763253435679004) ,
+      rgb (0.3302917447118144, 0.08246763389003825, 0.27430929404579435) ,
+      rgb (0.3252788886040126, 0.08142839007654609, 0.27226772884656186) ,
+      rgb (0.3202998655799406, 0.08041299473755484, 0.2702032289303951) ,
+      rgb (0.3153587000920581, 0.07942099731524319, 0.2681190407694196) ,
+      rgb (0.31045520848595526, 0.07845687167618218, 0.2660200572779356) ,
+      rgb (0.30559226007249934, 0.07752196310753731, 0.2639100669211966) ,
+      rgb (0.3007727681291869, 0.07661782433616476, 0.2617929409781967) ,
+      rgb (0.2960004726065818, 0.07574533600095842, 0.25967245030364566) ,
+      rgb (0.29128515387578635, 0.0748990498474667, 0.25755101595750435) ,
+      rgb (0.28662309235899847, 0.07408846082680887, 0.2554347867371703) ,
+      rgb (0.2820174629736694, 0.07331569321404097, 0.25332800295084507) ,
+      rgb (0.277471508091428, 0.07258296989925478, 0.2512349399594277) ,
+      rgb (0.272997015188973, 0.07188355544616351, 0.2491584709323293) ,
+      rgb (0.2685909594817286, 0.07122671627792246, 0.24710443563450618) ,
+      rgb (0.2642551220706094, 0.07061659562299544, 0.24507758869355967) ,
+      rgb (0.25999463887892144, 0.07005385560386188, 0.24308218808684579) ,
+      rgb (0.2558213554748177, 0.06953231029187984, 0.24112190491594204) ,
+      rgb (0.25172899728289466, 0.0690646308260355, 0.23920260612763083) ,
+      rgb (0.247720929905011, 0.06865333790948652, 0.2373288009471749) ,
+      rgb (0.2438114972024792, 0.06828985152901187, 0.23550427698321885) ,
+      rgb (0.23999586188690308, 0.06798502996477995, 0.23373434258507808) ,
+      rgb (0.23627495835774248, 0.06774359820987802, 0.23202360805926608) ,
+      rgb (0.23266299920501882, 0.06755710438847978, 0.23037617493752832) ,
+      rgb (0.2291562027859284, 0.06743473087115257, 0.22879681433956656) ,
+      rgb (0.2257539681670791, 0.06738213230014747, 0.22728984778098055) ,
+      rgb (0.22247308588973624, 0.06738821405309284, 0.22585960379408354) ,
+      rgb (0.21930503925136402, 0.06746578636294004, 0.22451023616807558) ,
+      rgb (0.21625279838647882, 0.06761633027051639, 0.22324568672294431) ,
+      rgb (0.2133313859647627, 0.06783014842602667, 0.2220704321302429) ,
+      rgb (0.21052882914958676, 0.06812195249816172, 0.22098759107715404) ,
+      rgb (0.20785704662965598, 0.06848439879702528, 0.22000133917653536) ,
+      rgb (0.20531725273301316, 0.06891959226639757, 0.21911516689288835) ,
+      rgb (0.20290365333558247, 0.06943524858045896, 0.21833167885096033) ,
+      rgb (0.20058760685133747, 0.07006457614998421, 0.21762721310371608) ,
+      rgb (0.19819343656336558, 0.07097462525273879, 0.21690975060032436) ,
+      rgb (0.19571853588267552, 0.07215778103960274, 0.21617499187076789) ,
+      rgb (0.1931548636579131, 0.07360681904011795, 0.21542362939081539) ,
+      rgb (0.19049578401722037, 0.07531127841678764, 0.2146562337112265) ,
+      rgb (0.18774482037046955, 0.07725158846803931, 0.21387448578597812) ,
+      rgb (0.18488035509396164, 0.07942573027972388, 0.21307651648984993)
+      });
 
 
 list_data viridis = list_data(new pen[] {
-  rgb (0.267004, 0.004874, 0.329415) ,
-  rgb (0.26851, 0.009605, 0.335427) ,
-  rgb (0.269944, 0.014625, 0.341379) ,
-  rgb (0.271305, 0.019942, 0.347269) ,
-  rgb (0.272594, 0.025563, 0.353093) ,
-  rgb (0.273809, 0.031497, 0.358853) ,
-  rgb (0.274952, 0.037752, 0.364543) ,
-  rgb (0.276022, 0.044167, 0.370164) ,
-  rgb (0.277018, 0.050344, 0.375715) ,
-  rgb (0.277941, 0.056324, 0.381191) ,
-  rgb (0.278791, 0.062145, 0.386592) ,
-  rgb (0.279566, 0.067836, 0.391917) ,
-  rgb (0.280267, 0.073417, 0.397163) ,
-  rgb (0.280894, 0.078907, 0.402329) ,
-  rgb (0.281446, 0.08432, 0.407414) ,
-  rgb (0.281924, 0.089666, 0.412415) ,
-  rgb (0.282327, 0.094955, 0.417331) ,
-  rgb (0.282656, 0.100196, 0.42216) ,
-  rgb (0.28291, 0.105393, 0.426902) ,
-  rgb (0.283091, 0.110553, 0.431554) ,
-  rgb (0.283197, 0.11568, 0.436115) ,
-  rgb (0.283229, 0.120777, 0.440584) ,
-  rgb (0.283187, 0.125848, 0.44496) ,
-  rgb (0.283072, 0.130895, 0.449241) ,
-  rgb (0.282884, 0.13592, 0.453427) ,
-  rgb (0.282623, 0.140926, 0.457517) ,
-  rgb (0.28229, 0.145912, 0.46151) ,
-  rgb (0.281887, 0.150881, 0.465405) ,
-  rgb (0.281412, 0.155834, 0.469201) ,
-  rgb (0.280868, 0.160771, 0.472899) ,
-  rgb (0.280255, 0.165693, 0.476498) ,
-  rgb (0.279574, 0.170599, 0.479997) ,
-  rgb (0.278826, 0.17549, 0.483397) ,
-  rgb (0.278012, 0.180367, 0.486697) ,
-  rgb (0.277134, 0.185228, 0.489898) ,
-  rgb (0.276194, 0.190074, 0.493001) ,
-  rgb (0.275191, 0.194905, 0.496005) ,
-  rgb (0.274128, 0.199721, 0.498911) ,
-  rgb (0.273006, 0.20452, 0.501721) ,
-  rgb (0.271828, 0.209303, 0.504434) ,
-  rgb (0.270595, 0.214069, 0.507052) ,
-  rgb (0.269308, 0.218818, 0.509577) ,
-  rgb (0.267968, 0.223549, 0.512008) ,
-  rgb (0.26658, 0.228262, 0.514349) ,
-  rgb (0.265145, 0.232956, 0.516599) ,
-  rgb (0.263663, 0.237631, 0.518762) ,
-  rgb (0.262138, 0.242286, 0.520837) ,
-  rgb (0.260571, 0.246922, 0.522828) ,
-  rgb (0.258965, 0.251537, 0.524736) ,
-  rgb (0.257322, 0.25613, 0.526563) ,
-  rgb (0.255645, 0.260703, 0.528312) ,
-  rgb (0.253935, 0.265254, 0.529983) ,
-  rgb (0.252194, 0.269783, 0.531579) ,
-  rgb (0.250425, 0.27429, 0.533103) ,
-  rgb (0.248629, 0.278775, 0.534556) ,
-  rgb (0.246811, 0.283237, 0.535941) ,
-  rgb (0.244972, 0.287675, 0.53726) ,
-  rgb (0.243113, 0.292092, 0.538516) ,
-  rgb (0.241237, 0.296485, 0.539709) ,
-  rgb (0.239346, 0.300855, 0.540844) ,
-  rgb (0.237441, 0.305202, 0.541921) ,
-  rgb (0.235526, 0.309527, 0.542944) ,
-  rgb (0.233603, 0.313828, 0.543914) ,
-  rgb (0.231674, 0.318106, 0.544834) ,
-  rgb (0.229739, 0.322361, 0.545706) ,
-  rgb (0.227802, 0.326594, 0.546532) ,
-  rgb (0.225863, 0.330805, 0.547314) ,
-  rgb (0.223925, 0.334994, 0.548053) ,
-  rgb (0.221989, 0.339161, 0.548752) ,
-  rgb (0.220057, 0.343307, 0.549413) ,
-  rgb (0.21813, 0.347432, 0.550038) ,
-  rgb (0.21621, 0.351535, 0.550627) ,
-  rgb (0.214298, 0.355619, 0.551184) ,
-  rgb (0.212395, 0.359683, 0.55171) ,
-  rgb (0.210503, 0.363727, 0.552206) ,
-  rgb (0.208623, 0.367752, 0.552675) ,
-  rgb (0.206756, 0.371758, 0.553117) ,
-  rgb (0.204903, 0.375746, 0.553533) ,
-  rgb (0.203063, 0.379716, 0.553925) ,
-  rgb (0.201239, 0.38367, 0.554294) ,
-  rgb (0.19943, 0.387607, 0.554642) ,
-  rgb (0.197636, 0.391528, 0.554969) ,
-  rgb (0.19586, 0.395433, 0.555276) ,
-  rgb (0.1941, 0.399323, 0.555565) ,
-  rgb (0.192357, 0.403199, 0.555836) ,
-  rgb (0.190631, 0.407061, 0.556089) ,
-  rgb (0.188923, 0.41091, 0.556326) ,
-  rgb (0.187231, 0.414746, 0.556547) ,
-  rgb (0.185556, 0.41857, 0.556753) ,
-  rgb (0.183898, 0.422383, 0.556944) ,
-  rgb (0.182256, 0.426184, 0.55712) ,
-  rgb (0.180629, 0.429975, 0.557282) ,
-  rgb (0.179019, 0.433756, 0.55743) ,
-  rgb (0.177423, 0.437527, 0.557565) ,
-  rgb (0.175841, 0.44129, 0.557685) ,
-  rgb (0.174274, 0.445044, 0.557792) ,
-  rgb (0.172719, 0.448791, 0.557885) ,
-  rgb (0.171176, 0.45253, 0.557965) ,
-  rgb (0.169646, 0.456262, 0.55803) ,
-  rgb (0.168126, 0.459988, 0.558082) ,
-  rgb (0.166617, 0.463708, 0.558119) ,
-  rgb (0.165117, 0.467423, 0.558141) ,
-  rgb (0.163625, 0.471133, 0.558148) ,
-  rgb (0.162142, 0.474838, 0.55814) ,
-  rgb (0.160665, 0.47854, 0.558115) ,
-  rgb (0.159194, 0.482237, 0.558073) ,
-  rgb (0.157729, 0.485932, 0.558013) ,
-  rgb (0.15627, 0.489624, 0.557936) ,
-  rgb (0.154815, 0.493313, 0.55784) ,
-  rgb (0.153364, 0.497, 0.557724) ,
-  rgb (0.151918, 0.500685, 0.557587) ,
-  rgb (0.150476, 0.504369, 0.55743) ,
-  rgb (0.149039, 0.508051, 0.55725) ,
-  rgb (0.147607, 0.511733, 0.557049) ,
-  rgb (0.14618, 0.515413, 0.556823) ,
-  rgb (0.144759, 0.519093, 0.556572) ,
-  rgb (0.143343, 0.522773, 0.556295) ,
-  rgb (0.141935, 0.526453, 0.555991) ,
-  rgb (0.140536, 0.530132, 0.555659) ,
-  rgb (0.139147, 0.533812, 0.555298) ,
-  rgb (0.13777, 0.537492, 0.554906) ,
-  rgb (0.136408, 0.541173, 0.554483) ,
-  rgb (0.135066, 0.544853, 0.554029) ,
-  rgb (0.133743, 0.548535, 0.553541) ,
-  rgb (0.132444, 0.552216, 0.553018) ,
-  rgb (0.131172, 0.555899, 0.552459) ,
-  rgb (0.129933, 0.559582, 0.551864) ,
-  rgb (0.128729, 0.563265, 0.551229) ,
-  rgb (0.127568, 0.566949, 0.550556) ,
-  rgb (0.126453, 0.570633, 0.549841) ,
-  rgb (0.125394, 0.574318, 0.549086) ,
-  rgb (0.124395, 0.578002, 0.548287) ,
-  rgb (0.123463, 0.581687, 0.547445) ,
-  rgb (0.122606, 0.585371, 0.546557) ,
-  rgb (0.121831, 0.589055, 0.545623) ,
-  rgb (0.121148, 0.592739, 0.544641) ,
-  rgb (0.120565, 0.596422, 0.543611) ,
-  rgb (0.120092, 0.600104, 0.54253) ,
-  rgb (0.119738, 0.603785, 0.5414) ,
-  rgb (0.119512, 0.607464, 0.540218) ,
-  rgb (0.119423, 0.611141, 0.538982) ,
-  rgb (0.119483, 0.614817, 0.537692) ,
-  rgb (0.119699, 0.61849, 0.536347) ,
-  rgb (0.120081, 0.622161, 0.534946) ,
-  rgb (0.120638, 0.625828, 0.533488) ,
-  rgb (0.12138, 0.629492, 0.531973) ,
-  rgb (0.122312, 0.633153, 0.530398) ,
-  rgb (0.123444, 0.636809, 0.528763) ,
-  rgb (0.12478, 0.640461, 0.527068) ,
-  rgb (0.126326, 0.644107, 0.525311) ,
-  rgb (0.128087, 0.647749, 0.523491) ,
-  rgb (0.130067, 0.651384, 0.521608) ,
-  rgb (0.132268, 0.655014, 0.519661) ,
-  rgb (0.134692, 0.658636, 0.517649) ,
-  rgb (0.137339, 0.662252, 0.515571) ,
-  rgb (0.14021, 0.665859, 0.513427) ,
-  rgb (0.143303, 0.669459, 0.511215) ,
-  rgb (0.146616, 0.67305, 0.508936) ,
-  rgb (0.150148, 0.676631, 0.506589) ,
-  rgb (0.153894, 0.680203, 0.504172) ,
-  rgb (0.157851, 0.683765, 0.501686) ,
-  rgb (0.162016, 0.687316, 0.499129) ,
-  rgb (0.166383, 0.690856, 0.496502) ,
-  rgb (0.170948, 0.694384, 0.493803) ,
-  rgb (0.175707, 0.6979, 0.491033) ,
-  rgb (0.180653, 0.701402, 0.488189) ,
-  rgb (0.185783, 0.704891, 0.485273) ,
-  rgb (0.19109, 0.708366, 0.482284) ,
-  rgb (0.196571, 0.711827, 0.479221) ,
-  rgb (0.202219, 0.715272, 0.476084) ,
-  rgb (0.20803, 0.718701, 0.472873) ,
-  rgb (0.214, 0.722114, 0.469588) ,
-  rgb (0.220124, 0.725509, 0.466226) ,
-  rgb (0.226397, 0.728888, 0.462789) ,
-  rgb (0.232815, 0.732247, 0.459277) ,
-  rgb (0.239374, 0.735588, 0.455688) ,
-  rgb (0.24607, 0.73891, 0.452024) ,
-  rgb (0.252899, 0.742211, 0.448284) ,
-  rgb (0.259857, 0.745492, 0.444467) ,
-  rgb (0.266941, 0.748751, 0.440573) ,
-  rgb (0.274149, 0.751988, 0.436601) ,
-  rgb (0.281477, 0.755203, 0.432552) ,
-  rgb (0.288921, 0.758394, 0.428426) ,
-  rgb (0.296479, 0.761561, 0.424223) ,
-  rgb (0.304148, 0.764704, 0.419943) ,
-  rgb (0.311925, 0.767822, 0.415586) ,
-  rgb (0.319809, 0.770914, 0.411152) ,
-  rgb (0.327796, 0.77398, 0.40664) ,
-  rgb (0.335885, 0.777018, 0.402049) ,
-  rgb (0.344074, 0.780029, 0.397381) ,
-  rgb (0.35236, 0.783011, 0.392636) ,
-  rgb (0.360741, 0.785964, 0.387814) ,
-  rgb (0.369214, 0.788888, 0.382914) ,
-  rgb (0.377779, 0.791781, 0.377939) ,
-  rgb (0.386433, 0.794644, 0.372886) ,
-  rgb (0.395174, 0.797475, 0.367757) ,
-  rgb (0.404001, 0.800275, 0.362552) ,
-  rgb (0.412913, 0.803041, 0.357269) ,
-  rgb (0.421908, 0.805774, 0.35191) ,
-  rgb (0.430983, 0.808473, 0.346476) ,
-  rgb (0.440137, 0.811138, 0.340967) ,
-  rgb (0.449368, 0.813768, 0.335384) ,
-  rgb (0.458674, 0.816363, 0.329727) ,
-  rgb (0.468053, 0.818921, 0.323998) ,
-  rgb (0.477504, 0.821444, 0.318195) ,
-  rgb (0.487026, 0.823929, 0.312321) ,
-  rgb (0.496615, 0.826376, 0.306377) ,
-  rgb (0.506271, 0.828786, 0.300362) ,
-  rgb (0.515992, 0.831158, 0.294279) ,
-  rgb (0.525776, 0.833491, 0.288127) ,
-  rgb (0.535621, 0.835785, 0.281908) ,
-  rgb (0.545524, 0.838039, 0.275626) ,
-  rgb (0.555484, 0.840254, 0.269281) ,
-  rgb (0.565498, 0.84243, 0.262877) ,
-  rgb (0.575563, 0.844566, 0.256415) ,
-  rgb (0.585678, 0.846661, 0.249897) ,
-  rgb (0.595839, 0.848717, 0.243329) ,
-  rgb (0.606045, 0.850733, 0.236712) ,
-  rgb (0.616293, 0.852709, 0.230052) ,
-  rgb (0.626579, 0.854645, 0.223353) ,
-  rgb (0.636902, 0.856542, 0.21662) ,
-  rgb (0.647257, 0.8584, 0.209861) ,
-  rgb (0.657642, 0.860219, 0.203082) ,
-  rgb (0.668054, 0.861999, 0.196293) ,
-  rgb (0.678489, 0.863742, 0.189503) ,
-  rgb (0.688944, 0.865448, 0.182725) ,
-  rgb (0.699415, 0.867117, 0.175971) ,
-  rgb (0.709898, 0.868751, 0.169257) ,
-  rgb (0.720391, 0.87035, 0.162603) ,
-  rgb (0.730889, 0.871916, 0.156029) ,
-  rgb (0.741388, 0.873449, 0.149561) ,
-  rgb (0.751884, 0.874951, 0.143228) ,
-  rgb (0.762373, 0.876424, 0.137064) ,
-  rgb (0.772852, 0.877868, 0.131109) ,
-  rgb (0.783315, 0.879285, 0.125405) ,
-  rgb (0.79376, 0.880678, 0.120005) ,
-  rgb (0.804182, 0.882046, 0.114965) ,
-  rgb (0.814576, 0.883393, 0.110347) ,
-  rgb (0.82494, 0.88472, 0.106217) ,
-  rgb (0.83527, 0.886029, 0.102646) ,
-  rgb (0.845561, 0.887322, 0.099702) ,
-  rgb (0.85581, 0.888601, 0.097452) ,
-  rgb (0.866013, 0.889868, 0.095953) ,
-  rgb (0.876168, 0.891125, 0.09525) ,
-  rgb (0.886271, 0.892374, 0.095374) ,
-  rgb (0.89632, 0.893616, 0.096335) ,
-  rgb (0.906311, 0.894855, 0.098125) ,
-  rgb (0.916242, 0.896091, 0.100717) ,
-  rgb (0.926106, 0.89733, 0.104071) ,
-  rgb (0.935904, 0.89857, 0.108131) ,
-  rgb (0.945636, 0.899815, 0.112838) ,
-  rgb (0.9553, 0.901065, 0.118128) ,
-  rgb (0.964894, 0.902323, 0.123941) ,
-  rgb (0.974417, 0.90359, 0.130215) ,
-  rgb (0.983868, 0.904867, 0.136897) ,
-  rgb (0.993248, 0.906157, 0.143936)
-});
+    rgb (0.267004, 0.004874, 0.329415) ,
+      rgb (0.26851, 0.009605, 0.335427) ,
+      rgb (0.269944, 0.014625, 0.341379) ,
+      rgb (0.271305, 0.019942, 0.347269) ,
+      rgb (0.272594, 0.025563, 0.353093) ,
+      rgb (0.273809, 0.031497, 0.358853) ,
+      rgb (0.274952, 0.037752, 0.364543) ,
+      rgb (0.276022, 0.044167, 0.370164) ,
+      rgb (0.277018, 0.050344, 0.375715) ,
+      rgb (0.277941, 0.056324, 0.381191) ,
+      rgb (0.278791, 0.062145, 0.386592) ,
+      rgb (0.279566, 0.067836, 0.391917) ,
+      rgb (0.280267, 0.073417, 0.397163) ,
+      rgb (0.280894, 0.078907, 0.402329) ,
+      rgb (0.281446, 0.08432, 0.407414) ,
+      rgb (0.281924, 0.089666, 0.412415) ,
+      rgb (0.282327, 0.094955, 0.417331) ,
+      rgb (0.282656, 0.100196, 0.42216) ,
+      rgb (0.28291, 0.105393, 0.426902) ,
+      rgb (0.283091, 0.110553, 0.431554) ,
+      rgb (0.283197, 0.11568, 0.436115) ,
+      rgb (0.283229, 0.120777, 0.440584) ,
+      rgb (0.283187, 0.125848, 0.44496) ,
+      rgb (0.283072, 0.130895, 0.449241) ,
+      rgb (0.282884, 0.13592, 0.453427) ,
+      rgb (0.282623, 0.140926, 0.457517) ,
+      rgb (0.28229, 0.145912, 0.46151) ,
+      rgb (0.281887, 0.150881, 0.465405) ,
+      rgb (0.281412, 0.155834, 0.469201) ,
+      rgb (0.280868, 0.160771, 0.472899) ,
+      rgb (0.280255, 0.165693, 0.476498) ,
+      rgb (0.279574, 0.170599, 0.479997) ,
+      rgb (0.278826, 0.17549, 0.483397) ,
+      rgb (0.278012, 0.180367, 0.486697) ,
+      rgb (0.277134, 0.185228, 0.489898) ,
+      rgb (0.276194, 0.190074, 0.493001) ,
+      rgb (0.275191, 0.194905, 0.496005) ,
+      rgb (0.274128, 0.199721, 0.498911) ,
+      rgb (0.273006, 0.20452, 0.501721) ,
+      rgb (0.271828, 0.209303, 0.504434) ,
+      rgb (0.270595, 0.214069, 0.507052) ,
+      rgb (0.269308, 0.218818, 0.509577) ,
+      rgb (0.267968, 0.223549, 0.512008) ,
+      rgb (0.26658, 0.228262, 0.514349) ,
+      rgb (0.265145, 0.232956, 0.516599) ,
+      rgb (0.263663, 0.237631, 0.518762) ,
+      rgb (0.262138, 0.242286, 0.520837) ,
+      rgb (0.260571, 0.246922, 0.522828) ,
+      rgb (0.258965, 0.251537, 0.524736) ,
+      rgb (0.257322, 0.25613, 0.526563) ,
+      rgb (0.255645, 0.260703, 0.528312) ,
+      rgb (0.253935, 0.265254, 0.529983) ,
+      rgb (0.252194, 0.269783, 0.531579) ,
+      rgb (0.250425, 0.27429, 0.533103) ,
+      rgb (0.248629, 0.278775, 0.534556) ,
+      rgb (0.246811, 0.283237, 0.535941) ,
+      rgb (0.244972, 0.287675, 0.53726) ,
+      rgb (0.243113, 0.292092, 0.538516) ,
+      rgb (0.241237, 0.296485, 0.539709) ,
+      rgb (0.239346, 0.300855, 0.540844) ,
+      rgb (0.237441, 0.305202, 0.541921) ,
+      rgb (0.235526, 0.309527, 0.542944) ,
+      rgb (0.233603, 0.313828, 0.543914) ,
+      rgb (0.231674, 0.318106, 0.544834) ,
+      rgb (0.229739, 0.322361, 0.545706) ,
+      rgb (0.227802, 0.326594, 0.546532) ,
+      rgb (0.225863, 0.330805, 0.547314) ,
+      rgb (0.223925, 0.334994, 0.548053) ,
+      rgb (0.221989, 0.339161, 0.548752) ,
+      rgb (0.220057, 0.343307, 0.549413) ,
+      rgb (0.21813, 0.347432, 0.550038) ,
+      rgb (0.21621, 0.351535, 0.550627) ,
+      rgb (0.214298, 0.355619, 0.551184) ,
+      rgb (0.212395, 0.359683, 0.55171) ,
+      rgb (0.210503, 0.363727, 0.552206) ,
+      rgb (0.208623, 0.367752, 0.552675) ,
+      rgb (0.206756, 0.371758, 0.553117) ,
+      rgb (0.204903, 0.375746, 0.553533) ,
+      rgb (0.203063, 0.379716, 0.553925) ,
+      rgb (0.201239, 0.38367, 0.554294) ,
+      rgb (0.19943, 0.387607, 0.554642) ,
+      rgb (0.197636, 0.391528, 0.554969) ,
+      rgb (0.19586, 0.395433, 0.555276) ,
+      rgb (0.1941, 0.399323, 0.555565) ,
+      rgb (0.192357, 0.403199, 0.555836) ,
+      rgb (0.190631, 0.407061, 0.556089) ,
+      rgb (0.188923, 0.41091, 0.556326) ,
+      rgb (0.187231, 0.414746, 0.556547) ,
+      rgb (0.185556, 0.41857, 0.556753) ,
+      rgb (0.183898, 0.422383, 0.556944) ,
+      rgb (0.182256, 0.426184, 0.55712) ,
+      rgb (0.180629, 0.429975, 0.557282) ,
+      rgb (0.179019, 0.433756, 0.55743) ,
+      rgb (0.177423, 0.437527, 0.557565) ,
+      rgb (0.175841, 0.44129, 0.557685) ,
+      rgb (0.174274, 0.445044, 0.557792) ,
+      rgb (0.172719, 0.448791, 0.557885) ,
+      rgb (0.171176, 0.45253, 0.557965) ,
+      rgb (0.169646, 0.456262, 0.55803) ,
+      rgb (0.168126, 0.459988, 0.558082) ,
+      rgb (0.166617, 0.463708, 0.558119) ,
+      rgb (0.165117, 0.467423, 0.558141) ,
+      rgb (0.163625, 0.471133, 0.558148) ,
+      rgb (0.162142, 0.474838, 0.55814) ,
+      rgb (0.160665, 0.47854, 0.558115) ,
+      rgb (0.159194, 0.482237, 0.558073) ,
+      rgb (0.157729, 0.485932, 0.558013) ,
+      rgb (0.15627, 0.489624, 0.557936) ,
+      rgb (0.154815, 0.493313, 0.55784) ,
+      rgb (0.153364, 0.497, 0.557724) ,
+      rgb (0.151918, 0.500685, 0.557587) ,
+      rgb (0.150476, 0.504369, 0.55743) ,
+      rgb (0.149039, 0.508051, 0.55725) ,
+      rgb (0.147607, 0.511733, 0.557049) ,
+      rgb (0.14618, 0.515413, 0.556823) ,
+      rgb (0.144759, 0.519093, 0.556572) ,
+      rgb (0.143343, 0.522773, 0.556295) ,
+      rgb (0.141935, 0.526453, 0.555991) ,
+      rgb (0.140536, 0.530132, 0.555659) ,
+      rgb (0.139147, 0.533812, 0.555298) ,
+      rgb (0.13777, 0.537492, 0.554906) ,
+      rgb (0.136408, 0.541173, 0.554483) ,
+      rgb (0.135066, 0.544853, 0.554029) ,
+      rgb (0.133743, 0.548535, 0.553541) ,
+      rgb (0.132444, 0.552216, 0.553018) ,
+      rgb (0.131172, 0.555899, 0.552459) ,
+      rgb (0.129933, 0.559582, 0.551864) ,
+      rgb (0.128729, 0.563265, 0.551229) ,
+      rgb (0.127568, 0.566949, 0.550556) ,
+      rgb (0.126453, 0.570633, 0.549841) ,
+      rgb (0.125394, 0.574318, 0.549086) ,
+      rgb (0.124395, 0.578002, 0.548287) ,
+      rgb (0.123463, 0.581687, 0.547445) ,
+      rgb (0.122606, 0.585371, 0.546557) ,
+      rgb (0.121831, 0.589055, 0.545623) ,
+      rgb (0.121148, 0.592739, 0.544641) ,
+      rgb (0.120565, 0.596422, 0.543611) ,
+      rgb (0.120092, 0.600104, 0.54253) ,
+      rgb (0.119738, 0.603785, 0.5414) ,
+      rgb (0.119512, 0.607464, 0.540218) ,
+      rgb (0.119423, 0.611141, 0.538982) ,
+      rgb (0.119483, 0.614817, 0.537692) ,
+      rgb (0.119699, 0.61849, 0.536347) ,
+      rgb (0.120081, 0.622161, 0.534946) ,
+      rgb (0.120638, 0.625828, 0.533488) ,
+      rgb (0.12138, 0.629492, 0.531973) ,
+      rgb (0.122312, 0.633153, 0.530398) ,
+      rgb (0.123444, 0.636809, 0.528763) ,
+      rgb (0.12478, 0.640461, 0.527068) ,
+      rgb (0.126326, 0.644107, 0.525311) ,
+      rgb (0.128087, 0.647749, 0.523491) ,
+      rgb (0.130067, 0.651384, 0.521608) ,
+      rgb (0.132268, 0.655014, 0.519661) ,
+      rgb (0.134692, 0.658636, 0.517649) ,
+      rgb (0.137339, 0.662252, 0.515571) ,
+      rgb (0.14021, 0.665859, 0.513427) ,
+      rgb (0.143303, 0.669459, 0.511215) ,
+      rgb (0.146616, 0.67305, 0.508936) ,
+      rgb (0.150148, 0.676631, 0.506589) ,
+      rgb (0.153894, 0.680203, 0.504172) ,
+      rgb (0.157851, 0.683765, 0.501686) ,
+      rgb (0.162016, 0.687316, 0.499129) ,
+      rgb (0.166383, 0.690856, 0.496502) ,
+      rgb (0.170948, 0.694384, 0.493803) ,
+      rgb (0.175707, 0.6979, 0.491033) ,
+      rgb (0.180653, 0.701402, 0.488189) ,
+      rgb (0.185783, 0.704891, 0.485273) ,
+      rgb (0.19109, 0.708366, 0.482284) ,
+      rgb (0.196571, 0.711827, 0.479221) ,
+      rgb (0.202219, 0.715272, 0.476084) ,
+      rgb (0.20803, 0.718701, 0.472873) ,
+      rgb (0.214, 0.722114, 0.469588) ,
+      rgb (0.220124, 0.725509, 0.466226) ,
+      rgb (0.226397, 0.728888, 0.462789) ,
+      rgb (0.232815, 0.732247, 0.459277) ,
+      rgb (0.239374, 0.735588, 0.455688) ,
+      rgb (0.24607, 0.73891, 0.452024) ,
+      rgb (0.252899, 0.742211, 0.448284) ,
+      rgb (0.259857, 0.745492, 0.444467) ,
+      rgb (0.266941, 0.748751, 0.440573) ,
+      rgb (0.274149, 0.751988, 0.436601) ,
+      rgb (0.281477, 0.755203, 0.432552) ,
+      rgb (0.288921, 0.758394, 0.428426) ,
+      rgb (0.296479, 0.761561, 0.424223) ,
+      rgb (0.304148, 0.764704, 0.419943) ,
+      rgb (0.311925, 0.767822, 0.415586) ,
+      rgb (0.319809, 0.770914, 0.411152) ,
+      rgb (0.327796, 0.77398, 0.40664) ,
+      rgb (0.335885, 0.777018, 0.402049) ,
+      rgb (0.344074, 0.780029, 0.397381) ,
+      rgb (0.35236, 0.783011, 0.392636) ,
+      rgb (0.360741, 0.785964, 0.387814) ,
+      rgb (0.369214, 0.788888, 0.382914) ,
+      rgb (0.377779, 0.791781, 0.377939) ,
+      rgb (0.386433, 0.794644, 0.372886) ,
+      rgb (0.395174, 0.797475, 0.367757) ,
+      rgb (0.404001, 0.800275, 0.362552) ,
+      rgb (0.412913, 0.803041, 0.357269) ,
+      rgb (0.421908, 0.805774, 0.35191) ,
+      rgb (0.430983, 0.808473, 0.346476) ,
+      rgb (0.440137, 0.811138, 0.340967) ,
+      rgb (0.449368, 0.813768, 0.335384) ,
+      rgb (0.458674, 0.816363, 0.329727) ,
+      rgb (0.468053, 0.818921, 0.323998) ,
+      rgb (0.477504, 0.821444, 0.318195) ,
+      rgb (0.487026, 0.823929, 0.312321) ,
+      rgb (0.496615, 0.826376, 0.306377) ,
+      rgb (0.506271, 0.828786, 0.300362) ,
+      rgb (0.515992, 0.831158, 0.294279) ,
+      rgb (0.525776, 0.833491, 0.288127) ,
+      rgb (0.535621, 0.835785, 0.281908) ,
+      rgb (0.545524, 0.838039, 0.275626) ,
+      rgb (0.555484, 0.840254, 0.269281) ,
+      rgb (0.565498, 0.84243, 0.262877) ,
+      rgb (0.575563, 0.844566, 0.256415) ,
+      rgb (0.585678, 0.846661, 0.249897) ,
+      rgb (0.595839, 0.848717, 0.243329) ,
+      rgb (0.606045, 0.850733, 0.236712) ,
+      rgb (0.616293, 0.852709, 0.230052) ,
+      rgb (0.626579, 0.854645, 0.223353) ,
+      rgb (0.636902, 0.856542, 0.21662) ,
+      rgb (0.647257, 0.8584, 0.209861) ,
+      rgb (0.657642, 0.860219, 0.203082) ,
+      rgb (0.668054, 0.861999, 0.196293) ,
+      rgb (0.678489, 0.863742, 0.189503) ,
+      rgb (0.688944, 0.865448, 0.182725) ,
+      rgb (0.699415, 0.867117, 0.175971) ,
+      rgb (0.709898, 0.868751, 0.169257) ,
+      rgb (0.720391, 0.87035, 0.162603) ,
+      rgb (0.730889, 0.871916, 0.156029) ,
+      rgb (0.741388, 0.873449, 0.149561) ,
+      rgb (0.751884, 0.874951, 0.143228) ,
+      rgb (0.762373, 0.876424, 0.137064) ,
+      rgb (0.772852, 0.877868, 0.131109) ,
+      rgb (0.783315, 0.879285, 0.125405) ,
+      rgb (0.79376, 0.880678, 0.120005) ,
+      rgb (0.804182, 0.882046, 0.114965) ,
+      rgb (0.814576, 0.883393, 0.110347) ,
+      rgb (0.82494, 0.88472, 0.106217) ,
+      rgb (0.83527, 0.886029, 0.102646) ,
+      rgb (0.845561, 0.887322, 0.099702) ,
+      rgb (0.85581, 0.888601, 0.097452) ,
+      rgb (0.866013, 0.889868, 0.095953) ,
+      rgb (0.876168, 0.891125, 0.09525) ,
+      rgb (0.886271, 0.892374, 0.095374) ,
+      rgb (0.89632, 0.893616, 0.096335) ,
+      rgb (0.906311, 0.894855, 0.098125) ,
+      rgb (0.916242, 0.896091, 0.100717) ,
+      rgb (0.926106, 0.89733, 0.104071) ,
+      rgb (0.935904, 0.89857, 0.108131) ,
+      rgb (0.945636, 0.899815, 0.112838) ,
+      rgb (0.9553, 0.901065, 0.118128) ,
+      rgb (0.964894, 0.902323, 0.123941) ,
+      rgb (0.974417, 0.90359, 0.130215) ,
+      rgb (0.983868, 0.904867, 0.136897) ,
+      rgb (0.993248, 0.906157, 0.143936)
+      });
 
 

Modified: trunk/Build/source/utils/asymptote/base/contour.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/contour.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/contour.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1,10 +1,10 @@
 // Contour routines written by Radoslav Marinov and John Bowman.
-         
+
 import graph_settings;
 
 real eps=10000*realEpsilon;
 
-//                         1  
+//                         1
 //             6 +-------------------+ 5
 //               | \               / |
 //               |   \          /    |
@@ -16,7 +16,7 @@
 //               |   /           \   |
 //               | /               \ |
 //             7 +-------------------+ 4 or 8
-//                         3  
+//                         3
 
 private struct segment
 {
@@ -76,11 +76,11 @@
 private segment checktriangle(pair p0, pair p1, pair p2,
                               real v0, real v1, real v2, int edge=-1)
 {
-  // default null return  
+  // default null return
   static segment dflt;
 
   real eps=eps*max(abs(v0),abs(v1),abs(v2));
-  
+
   if(v0 < -eps) {
     if(v1 < -eps) {
       if(v2 < -eps) return dflt; // nothing to do
@@ -92,10 +92,10 @@
       else return case2(p1,p0,p2,v1,v0,v2,5+edge);
     } else {
       if(v2 < -eps) return case3(p0,p1,p2,v0,v1,v2,edge);
-      else if(v2 <= eps) 
+      else if(v2 <= eps)
         return case2(p2,p0,p1,v2,v0,v1,edge);
       else return case3(p1,p0,p2,v1,v0,v2,edge);
-    } 
+    }
   } else if(v0 <= eps) {
     if(v1 < -eps) {
       if(v2 < -eps) return dflt; // nothing to do
@@ -109,7 +109,7 @@
       if(v2 < -eps) return case2(p0,p1,p2,v0,v1,v2,4+edge);
       else if(v2 <= eps) return case1(p0,p2,4+edge);
       else return dflt; // nothing to do
-    } 
+    }
   } else {
     if(v1 < -eps) {
       if(v2 < -eps) return case3(p1,p0,p2,v1,v0,v2,edge);
@@ -124,8 +124,8 @@
       if(v2 < -eps) return case3(p0,p2,p1,v0,v2,v1);
       else if(v2 <= eps) return dflt; // nothing to do
       else return dflt; // nothing to do
-    } 
-  }      
+    }
+  }
 }
 
 // Collect connecting path segments.
@@ -135,7 +135,7 @@
   int[] reverseF(int n) {return sequence(new int(int x){return n-1-x;},n-1);}
   // use to reverse an array, omitting the last point
   int[] reverseL(int n) {return sequence(new int(int x){return n-2-x;},n-1);}
-  
+
   for(int cnt=0; cnt < c.length; ++cnt) {
     pair[][] gdscnt=points[cnt];
     for(int i=0; i < gdscnt.length; ++i) {
@@ -144,11 +144,11 @@
       for(int j=i+1; j < gdscnt.length; ++j) {
         pair[] gjg=gdscnt[j];
         int Lj=gjg.length;
-        if(abs(gig[0]-gjg[0]) < eps) { 
+        if(abs(gig[0]-gjg[0]) < eps) {
           gdscnt[j]=gjg[reverseF(Lj)];
           gdscnt[j].append(gig);
-          gdscnt.delete(i); 
-          --i; 
+          gdscnt.delete(i);
+          --i;
           break;
         } else if(abs(gig[0]-gjg[Lj-1]) < eps) {
           gig.delete(0);
@@ -169,7 +169,7 @@
           gdscnt.delete(i);
           --i;
           break;
-        } 
+        }
       }
     }
   }
@@ -224,7 +224,7 @@
 
   c=sort(c);
   bool midpoints=midpoint.length > 0;
-  
+
   segment segments[][][]=new segment[nx][ny][];
 
   // go over region a rectangle at a time
@@ -238,7 +238,7 @@
     segment[][] segmentsi=segments[i];
     for(int j=0; j < ny; ++j) {
       segment[] segmentsij=segmentsi[j];
-      
+
       // define points
       pair bleft=zi[j];
       pair bright=zp[j];
@@ -264,26 +264,26 @@
         int countm=0;
         int countz=0;
         int countp=0;
-        
+
         void check(real vertdat) {
           if(vertdat < -eps) ++countm;
           else {
-            if(vertdat <= eps) ++countz; 
+            if(vertdat <= eps) ++countz;
             else ++countp;
           }
         }
-        
+
         check(vertdat0);
         check(vertdat1);
         check(vertdat2);
         check(vertdat3);
 
-        if(countm == 4) return 1;  // nothing to do 
-        if(countp == 4) return -1; // nothing to do 
+        if(countm == 4) return 1;  // nothing to do
+        if(countp == 4) return -1; // nothing to do
         if((countm == 3 || countp == 3) && countz == 1) return 0;
 
         // go through the triangles
-        
+
         void addseg(segment seg) {
           if(seg.active) {
             seg.c=cnt;
@@ -301,7 +301,7 @@
                              vertdat0,vertdat1,vertdat4,3));
         return 0;
       }
-      
+
       void process(int l, int u) {
         if(l >= u) return;
         int i=quotient(l+u,2);
@@ -313,7 +313,7 @@
           process(i+1,u);
         }
       }
-    
+
       process(0,c.length);
     }
   }
@@ -356,7 +356,7 @@
           }
           return -1;
         }
-        
+
         int backward(int I, int J, bool first=true) {
           if(I >= 0 && I < nx && J >= 0 && J < ny) {
             segment[] segmentsIJ=segments[I][J];
@@ -380,7 +380,7 @@
           }
           return -1;
         }
-        
+
         void follow(int f(int, int, bool first=true), int edge) {
           int I=i;
           int J=j;
@@ -489,7 +489,7 @@
   // evaluate function at points and midpoints
   real[][] dat=new real[nx+1][ny+1];
   real[][] midpoint=new real[nx+1][ny+1];
-  
+
   for(int i=0; i <= nx; ++i) {
     real x=interp(a.x,b.x,i/nx);
     real x2=interp(a.x,b.x,(i+0.5)/nx);
@@ -503,7 +503,7 @@
 
   return contour(dat,midpoint,a,b,c,join);
 }
-  
+
 void draw(picture pic=currentpicture, Label[] L=new Label[],
           guide[][] g, pen[] p)
 {
@@ -576,7 +576,7 @@
                 index=i;
             }
           }
-        } 
+        }
         fillpalettei[j]=palette[index];
       }
       fillpalette[i]=fillpalettei;
@@ -620,7 +620,7 @@
 // check existing guides and adds new segment to them if possible,
 // or otherwise store segment as a new guide
 private void addseg(pair[][] gds, segment seg)
-{ 
+{
   if(!seg.active) return;
   // search for a path to extend
   for(int i=0; i < gds.length; ++i) {
@@ -629,22 +629,22 @@
       gd.insert(0,seg.a);
       return;
     } else if(abs(gd[gd.length-1]-seg.b) < eps) {
-      gd.push(seg.a); 
+      gd.push(seg.a);
       return;
     } else if(abs(gd[0]-seg.a) < eps) {
       gd.insert(0,seg.b);
       return;
-    } else if(abs(gd[gd.length-1]-seg.a) < eps) {  
+    } else if(abs(gd[gd.length-1]-seg.a) < eps) {
       gd.push(seg.b);
       return;
     }
   }
- 
+
   // in case nothing is found
   pair[] segm;
-  segm=new pair[] {seg.a,seg.b}; 
+  segm=new pair[] {seg.a,seg.b};
   gds.push(segm);
-  
+
   return;
 }
 
@@ -664,7 +664,7 @@
 
   // array to store guides found so far
   pair[][][] points=new pair[c.length][][];
-        
+
   for(int cnt=0; cnt < c.length; ++cnt) {
     pair[][] pointscnt=points[cnt];
     real C=c[cnt];

Modified: trunk/Build/source/utils/asymptote/base/contour3.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/contour3.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/contour3.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -81,7 +81,7 @@
       int j2=2j;
       int j2p1=j2+1;
       int j2p2=j2+2;
- 
+
       for(int k=0; k < nz; ++k) {
         // vertex values
         real vdat0=fij[k];
@@ -108,21 +108,21 @@
         triple m3=0.25*(p100+p000+p001+p101);
         triple m4=0.25*(p000+p010+p011+p001);
         triple m5=0.25*(p001+p011+p111+p101);
-        triple mc=0.5*(m0+m5);                   
+        triple mc=0.5*(m0+m5);
 
         // optimization: we make sure we don't work with empty rectangles
         int countm=0;
         int countz=0;
         int countp=0;
-        
+
         void check(real vdat) {
           if(vdat < -eps) ++countm;
           else {
-            if(vdat <= eps) ++countz; 
+            if(vdat <= eps) ++countz;
             else ++countp;
           }
         }
-        
+
         check(vdat0);
         check(vdat1);
         check(vdat2);
@@ -132,32 +132,32 @@
         check(vdat6);
         check(vdat7);
 
-        if(countm == 8 || countp == 8 || 
+        if(countm == 8 || countp == 8 ||
            ((countm == 7 || countp == 7) && countz == 1)) continue;
 
         int k2=2k;
         int k2p1=k2+1;
         int k2p2=k2+2;
- 
+
         // Evaluate midpoints of cube sides.
         // Then evaluate midpoint of cube.
         real vdat8=midpoints ? midpoint[i2p1][j2p1][k2] :
           0.25*(vdat0+vdat2+vdat6+vdat4);
-        real vdat9=midpoints ? midpoint[i2p1][j2p2][k2p1] : 
+        real vdat9=midpoints ? midpoint[i2p1][j2p2][k2p1] :
           0.25*(vdat2+vdat6+vdat7+vdat3);
-        real vdat10=midpoints ? midpoint[i2p2][j2p1][k2p1] : 
+        real vdat10=midpoints ? midpoint[i2p2][j2p1][k2p1] :
           0.25*(vdat7+vdat6+vdat4+vdat5);
-        real vdat11=midpoints ? midpoint[i2p1][j2][k2p1] : 
+        real vdat11=midpoints ? midpoint[i2p1][j2][k2p1] :
           0.25*(vdat0+vdat4+vdat5+vdat1);
-        real vdat12=midpoints ? midpoint[i2][j2p1][k2p1] : 
+        real vdat12=midpoints ? midpoint[i2][j2p1][k2p1] :
           0.25*(vdat0+vdat2+vdat3+vdat1);
-        real vdat13=midpoints ? midpoint[i2p1][j2p1][k2p2] : 
+        real vdat13=midpoints ? midpoint[i2p1][j2p1][k2p2] :
           0.25*(vdat1+vdat3+vdat7+vdat5);
-        real vdat14=midpoints ? midpoint[i2p1][j2p1][k2p1] : 
+        real vdat14=midpoints ? midpoint[i2p1][j2p1][k2p1] :
           0.125*(vdat0+vdat1+vdat2+vdat3+vdat4+vdat5+vdat6+vdat7);
-      
+
         // Go through the 24 pyramids, 4 for each side.
-        
+
         void addval(int kp0, int kp1, int kp2, triple add, triple v) {
           bucket[] cur=kps[kp0][kp1][kp2];
           for(int q=0; q < cur.length; ++q) {
@@ -192,8 +192,14 @@
           vec0=unit(vec0);
           triple normal=cross(vec2,vec1);
           normal *= sgn(dot(normal,dir));
-          real angle0=acos(-dot(vec1,vec2));
-          real angle1=acos(-dot(vec2,vec0));
+
+          real angle(triple u, triple v) {
+            real Dot=-dot(u,v);
+            return Dot > 1 ? 0 : Dot < -1 ? pi : acos(Dot);
+          }
+
+          real angle0=angle(vec1,vec2);
+          real angle1=angle(vec2,vec0);
           pts[0].normal=normal*angle0;
           pts[1].normal=normal*angle1;
           pts[2].normal=normal*(pi-angle0-angle1);
@@ -206,7 +212,7 @@
             weighted[] points=obj.pts;
             object obj1;
             object obj2;
-            obj1.active=true; 
+            obj1.active=true;
             obj2.active=true;
             obj1.pts=new weighted[] {points[0],points[1],points[2]};
             obj2.pts=new weighted[] {points[1],points[2],points[3]};
@@ -220,7 +226,7 @@
           }
         }
 
-        weighted setupweighted(triple va, triple vb, real da, real db, 
+        weighted setupweighted(triple va, triple vb, real da, real db,
                                int[] kpa, int[] kpb) {
           weighted w;
           real ratio=abs(da/(db-da));
@@ -318,7 +324,7 @@
         static int[] pm4={0,1,1};
         static int[] pm5={1,1,2};
         static int[] pmc={1,1,1};
- 
+
         check4pyr(p000,p010,p110,p100,mc,m0,
                   vdat0,vdat2,vdat6,vdat4,vdat14,vdat8,
                   pp000,pp010,pp110,pp100,pmc,pm0);
@@ -378,14 +384,14 @@
     ret.normal=normal*2/count;
     return ret;
   }
-  
+
   // Prepare return value.
   vertex[][] g;
-  
+
   for(int q=0; q < objects.length; ++q) {
     object p=objects[q];
     g.push(new vertex[] {preparevertex(p.pts[0]),preparevertex(p.pts[1]),
-          preparevertex(p.pts[2])});
+                           preparevertex(p.pts[2])});
   }
   return g;
 }
@@ -454,7 +460,7 @@
         datij[k]=f(x,y,z);
         if(i == nx || j == ny || k == nz) continue;
         int k2p1=2k+1;
-        midpointi2p1j2p1[2k]=f(x2,y2,z); 
+        midpointi2p1j2p1[2k]=f(x2,y2,z);
         midpointi2p1j2p1[k2p1]=f(x2,y2,z2);
         midpointi2p1j2[k2p1]=f(x2,y,z2);
         midpointi2j2p1[k2p1]=f(x,y2,z2);

Modified: trunk/Build/source/utils/asymptote/base/embed.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/embed.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/embed.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -7,23 +7,23 @@
 // For documentation of the options see
 // http://mirror.ctan.org/macros/latex/contrib/media9/doc/media9.pdf
 
-// Embed PRC or SWF content in pdf file 
+// Embed PRC or SWF content in pdf file
 string embedplayer(string name, string text="", string options="",
                    real width=0, real height=0)
 {
-  if(width != 0) options += ",width="+(string) (width/pt)+"pt"; 
-  if(height != 0) options += ",height="+(string) (height/pt)+"pt"; 
+  if(width != 0) options += ",width="+(string) (width/pt)+"pt";
+  if(height != 0) options += ",height="+(string) (height/pt)+"pt";
   return "%
 \includemedia[noplaybutton,"+options+"]{"+text+"}{"+name+"}";
 }
 
-// Embed media in pdf file 
+// Embed media in pdf file
 string embed(string name, string text="", string options="",
              real width=0, real height=0)
 {
   return embedplayer("VPlayer.swf",text,"label="+name+
                      ",activate=pageopen,addresource="+name+
-                      ",flashvars={source="+name+"&scaleMode=letterbox},"+
+                     ",flashvars={source="+name+"&scaleMode=letterbox},"+
                      options,width,height);
 }
 

Modified: trunk/Build/source/utils/asymptote/base/external.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/external.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/external.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -20,8 +20,8 @@
       atexit(exitfunction);
     }
   }
-  if(width != 0) options += ", width="+(string) (width/pt)+"pt"; 
-  if(height != 0) options +=", height="+(string) (height/pt)+"pt"; 
+  if(width != 0) options += ", width="+(string) (width/pt)+"pt";
+  if(height != 0) options +=", height="+(string) (height/pt)+"pt";
   return "\href{run:"+name+"}{"+graphic(image,options)+"}";
 }
 

Modified: trunk/Build/source/utils/asymptote/base/feynman.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/feynman.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/feynman.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -10,12 +10,12 @@
 
 // default ratio of width (distance between two loops) to amplitude for a gluon
 // line. The gluon function uses this ratio, if the width parameter is
-// negative. 
+// negative.
 real gluonratio;
 
 // default ratio of width (distance between two crests) to amplitude for a
 // photon  line. The photon function uses this ratio, if the width parameter is
-// negative. 
+// negative.
 real photonratio;
 
 // default gluon amplitude
@@ -337,7 +337,7 @@
                real vertexangle = minvertexangle,
                real margin = linemargin)
 {
-  if(erasebg) do_overpaint(pic, p, bgpen, 
+  if(erasebg) do_overpaint(pic, p, bgpen,
                            linewidth(fgpen)+margin, vertexangle);
   draw(pic, p, fgpen, arrow);
 }
@@ -358,7 +358,7 @@
                     real vertexangle = minvertexangle,
                     real margin = linemargin)
 {
-  if(erasebg) do_overpaint(pic, p, bgpen, 
+  if(erasebg) do_overpaint(pic, p, bgpen,
                            linewidth(fgpen)+margin, vertexangle);
 
   real htw = linewidth(fgpen)+dlspacing/2;
@@ -466,7 +466,7 @@
                  pen fgpen = vertexpen)
 {
   draw(pic, shift(xy)*scale(r)*((-1,-1)--(1,1)), fgpen);
-  draw(pic, shift(xy)*scale(r)*((1,-1)--(-1,1)), fgpen);    
+  draw(pic, shift(xy)*scale(r)*((1,-1)--(-1,1)), fgpen);
 }
 
 // draw a circle with an X in the middle on picture pic, at position xy with
@@ -508,7 +508,7 @@
 }
 
 // draw a momentum arrow on picture pic, along path p, at position position
-// (use one of the predefined pairs left or right), with an offset offset 
+// (use one of the predefined pairs left or right), with an offset offset
 // from the path, a length length, a pen fgpen and an arrowhead arrow. Making
 // adjust nonzero shifts the momentum arrow along the path. If erasebg is true,
 // the background is erased inside a margin margin around the momentum arrow.
@@ -527,7 +527,7 @@
                   real margin = momarrowmargin)
 {
   path momarrow = momArrowPath(p, align, pos, offset, length);
-  if(erasebg) do_overpaint(pic, momarrow, bgpen, 
+  if(erasebg) do_overpaint(pic, momarrow, bgpen,
                            linewidth(fgpen)+margin, 90);
   draw(pic, momarrow, fgpen, arrow);
 }
@@ -540,7 +540,7 @@
 // (essentially, currentpen, arrowfactor and dotfactor). After customising the
 // default parameters of plain.asy, you may call fmdefaults to adjust the
 // parameters of feynman.asy.
-void fmdefaults() 
+void fmdefaults()
 {
   real arrowsize=arrowsize(currentpen);
   real linewidth=linewidth(currentpen);

Modified: trunk/Build/source/utils/asymptote/base/flowchart.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/flowchart.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/flowchart.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -57,29 +57,29 @@
   // in absolute coordinates.
   pair top(transform t=identity()) {
     return shift(t)+f_top;
-  } 
+  }
   pair bottom(transform t=identity()) {
     return shift(t)+f_bottom;
-  } 
+  }
   pair left(transform t=identity()) {
     return shift(t)+f_left;
-  } 
+  }
   pair right(transform t=identity()) {
     return shift(t)+f_right;
-  } 
+  }
   pair topleft(transform t=identity()) {
     return shift(t)+f_topleft;
-  } 
+  }
   pair topright(transform t=identity()) {
     return shift(t)+f_topright;
-  } 
+  }
   pair bottomleft(transform t=identity()) {
     return shift(t)+f_bottomleft;
-  } 
+  }
   pair bottomright(transform t=identity()) {
     return shift(t)+f_bottomright;
-  } 
-  
+  }
+
   // Return a frame representing the block.
   frame draw(pen p=currentpen);
 
@@ -118,25 +118,25 @@
 
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shift(0,z1.y)*box((0,0),z0),headerpen,drawpen);
-    add(block,shift(-0.5*(Mheader+mheader))*fheader,(0,z1.y)+0.5z0);
-    filldraw(block,box((0,0),z1),bodypen,drawpen);
-    add(block,shift(-0.5*(Mbody+mbody))*fbody,0.5z1);
-    return block;
+                               frame block;
+                               filldraw(block,shift(0,z1.y)*box((0,0),z0),headerpen,drawpen);
+                               add(block,shift(-0.5*(Mheader+mheader))*fheader,(0,z1.y)+0.5z0);
+                               filldraw(block,box((0,0),z1),bodypen,drawpen);
+                               add(block,shift(-0.5*(Mbody+mbody))*fbody,0.5z1);
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=interp(point(shape,0),point(shape,3),0.5);
-  block.f_bottomleft=point(shape,0); 
-  block.f_bottom=point(shape,5.5); 
-  block.f_bottomright=point(shape,5); 
-  block.f_right=point(shape,4.5); 
-  block.f_topright=point(shape,3); 
-  block.f_top=point(shape,2.5); 
-  block.f_topleft=point(shape,2); 
-  block.f_left=point(shape,0.5); 
+  block.f_bottomleft=point(shape,0);
+  block.f_bottom=point(shape,5.5);
+  block.f_bottomright=point(shape,5);
+  block.f_right=point(shape,4.5);
+  block.f_topright=point(shape,3);
+  block.f_top=point(shape,2.5);
+  block.f_topleft=point(shape,2);
+  block.f_left=point(shape,0.5);
   block.center=center;
   block.size=point(shape,3);
   return block;
@@ -156,25 +156,25 @@
 
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,0.5z);
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,0.5z);
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=0.5*z;
   block.center=center;
   block.size=z;
   block.f_bottomleft=point(shape,0);
-  block.f_bottom=point(shape,0.5); 
-  block.f_bottomright=point(shape,1); 
-  block.f_right=point(shape,1.5); 
-  block.f_topright=point(shape,2); 
-  block.f_top=point(shape,2.5); 
-  block.f_topleft=point(shape,3); 
-  block.f_left=point(shape,3.5); 
+  block.f_bottom=point(shape,0.5);
+  block.f_bottomright=point(shape,1);
+  block.f_right=point(shape,1.5);
+  block.f_topright=point(shape,2);
+  block.f_top=point(shape,2.5);
+  block.f_topleft=point(shape,3);
+  block.f_left=point(shape,3.5);
   return block;
 }
 
@@ -197,13 +197,13 @@
 
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,((a+skew)/2,b/2));
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,((a+skew)/2,b/2));
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=((a+skew)/2,b/2);
   block.center=center;
@@ -229,7 +229,7 @@
   pair m=min(f);
   pair M=max(f);
   pair bound=maxbound(M-m,(minwidth,minheight));
-  
+
   real e=ds;
   real a=0.5bound.x-dw;
   real b=0.5bound.y;
@@ -244,25 +244,25 @@
 
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,(d,c));
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,(d,c));
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=(point(shape,1).x,point(shape,0).y);
   block.center=center;
   block.size=(point(shape,0).x,point(shape,1).y);
-  block.f_bottomleft=point(shape,2.5); 
-  block.f_bottom=point(shape,3); 
-  block.f_bottomright=point(shape,3.5); 
-  block.f_right=point(shape,0); 
-  block.f_topright=point(shape,0.5); 
-  block.f_top=point(shape,1); 
-  block.f_topleft=point(shape,1.5); 
-  block.f_left=point(shape,2); 
+  block.f_bottomleft=point(shape,2.5);
+  block.f_bottom=point(shape,3);
+  block.f_bottomright=point(shape,3.5);
+  block.f_right=point(shape,0);
+  block.f_topright=point(shape,0.5);
+  block.f_top=point(shape,1);
+  block.f_topleft=point(shape,1.5);
+  block.f_left=point(shape,2);
   return block;
 }
 
@@ -274,30 +274,30 @@
   pair m=min(f);
   pair M=max(f);
   real r=max(0.5length(M-m)+dr,0.5mindiameter);
-  
+
   path shape=(0,r)..(r,2r)..(2r,r)..(r,0)..cycle;
-  
+
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,(r,r));
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,(r,r));
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=(r,r);
   block.center=center;
   block.size=(2r,2r);
   block.f_left=point(shape,0);
-  block.f_topleft=point(shape,0.5); 
-  block.f_top=point(shape,1); 
-  block.f_topright=point(shape,1.5); 
-  block.f_right=point(shape,2); 
-  block.f_bottomright=point(shape,2.5); 
-  block.f_bottom=point(shape,3); 
-  block.f_bottomleft=point(shape,3.5); 
+  block.f_topleft=point(shape,0.5);
+  block.f_top=point(shape,1);
+  block.f_topright=point(shape,1.5);
+  block.f_right=point(shape,2);
+  block.f_bottomright=point(shape,2.5);
+  block.f_bottom=point(shape,3);
+  block.f_bottomleft=point(shape,3.5);
   return block;
 }
 
@@ -313,33 +313,33 @@
 
   real a=bound.x;
   real b=bound.y;
-  
+
   path shape=(0,ds+dw)--(0,ds+b-dw){up}..{right}
   (ds+dw,2ds+b)--(ds+a-dw,2ds+b){right}..{down}
   (2ds+a,ds+b-dw)--(2ds+a,ds+dw){down}..{left}
   (ds+a-dw,0)--(ds+dw,0){left}..{up}cycle;
-  
+
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,(ds,ds)+0.5bound);
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,(ds,ds)+0.5bound);
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=(ds+0.5a,ds+0.5b);
   block.center=center;
   block.size=(2ds+a,2ds+b);
-  block.f_bottomleft=point(shape,7.5); 
-  block.f_bottom=point(shape,6.5); 
-  block.f_bottomright=point(shape,5.5); 
-  block.f_right=point(shape,4.5); 
-  block.f_topright=point(shape,3.5); 
-  block.f_top=point(shape,2.5); 
-  block.f_topleft=point(shape,1.5); 
-  block.f_left=point(shape,0.5); 
+  block.f_bottomleft=point(shape,7.5);
+  block.f_bottom=point(shape,6.5);
+  block.f_bottomright=point(shape,5.5);
+  block.f_right=point(shape,4.5);
+  block.f_topright=point(shape,3.5);
+  block.f_top=point(shape,2.5);
+  block.f_topleft=point(shape,1.5);
+  block.f_left=point(shape,0.5);
   return block;
 }
 
@@ -359,25 +359,25 @@
     (dw+a,0)--cycle;
   block block;
   block.draw=new frame(pen p) {
-    frame block;
-    filldraw(block,shape,fillpen,drawpen);
-    add(block,shift(-0.5*(M+m))*f,(0.5bound+(dw,dh)));
-    return block;
+                               frame block;
+                               filldraw(block,shape,fillpen,drawpen);
+                               add(block,shift(-0.5*(M+m))*f,(0.5bound+(dw,dh)));
+                               return block;
   };
   block.f_position=new pair(real x) {
-    return point(shape,x);
+                                     return point(shape,x);
   };
   block.f_center=(dw+0.5a,dh+b);
   block.center=center;
   block.size=(2dw+a,2dh+2b);
-  block.f_bottomleft=point(shape,4); 
-  block.f_bottom=point(shape,4.5); 
-  block.f_bottomright=point(shape,5); 
-  block.f_right=point(shape,0); 
-  block.f_topright=point(shape,1); 
-  block.f_top=point(shape,1.5); 
-  block.f_topleft=point(shape,2); 
-  block.f_left=point(shape,3); 
+  block.f_bottomleft=point(shape,4);
+  block.f_bottom=point(shape,4.5);
+  block.f_bottomright=point(shape,5);
+  block.f_right=point(shape,0);
+  block.f_topright=point(shape,1);
+  block.f_top=point(shape,1.5);
+  block.f_topleft=point(shape,2);
+  block.f_left=point(shape,3);
   return block;
 }
 
@@ -388,14 +388,14 @@
   for(int i=1; i < point.length; ++i) {
     if(i-1 >= dir.length || dir[i-1] == Horizontal)
       current=(point[i].x,point[i-1].y);
-    else 
+    else
       current=(point[i-1].x,point[i].y);
-    
+
     if(current != prev) {
       line=line--current;
       prev=current;
     }
-    
+
     current=point[i];
     if(current != prev) {
       line=line--current;

Modified: trunk/Build/source/utils/asymptote/base/geometry.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/geometry.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/geometry.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -40,7 +40,7 @@
   real angle=degrees(dir);
   if(angle > 90 && angle < 270) angle -= 180;
   return rotate(angle);
-} 
+}
 
 // *=======================================================*
 // *........................HEADER.........................*
@@ -165,7 +165,7 @@
   ed = ea - 6 * eb;
   ee = ed + ec + ec;
   return 3 * sum + fac * (1.0 + ed * (-C1 + C5 * ed - C6 * delz * ee)
-                    +delz * (C2 * ee + delz * (-C3 * ec + delz * C4 * ea)))/(ave * sqrt(ave));
+                          +delz * (C2 * ee + delz * (-C3 * ec + delz * C4 * ea)))/(ave * sqrt(ave));
 }
 
 /*<asyxml><function type="real" signature="elle(real,real)"><code></asyxml>*/
@@ -258,10 +258,10 @@
 {/*<asyxml></code><documentation>This structure represents a coordinate system in the plane.</documentation></asyxml>*/
   /*<asyxml><method type = "pair" signature="relativetodefault(pair)"><code></asyxml>*/
   restricted convert relativetodefault = new pair(pair m){return m;};/*<asyxml></code><documentation>Convert a pair given relatively to this coordinate system to
-                                                                     the pair relatively to the default coordinate system.</documentation></method></asyxml>*/
+                                                                       the pair relatively to the default coordinate system.</documentation></method></asyxml>*/
   /*<asyxml><method type = "pair" signature="defaulttorelativet(pair)"><code></asyxml>*/
   restricted convert defaulttorelative = new pair(pair m){return m;};/*<asyxml></code><documentation>Convert a pair given relatively to the default coordinate system to
-                                                                     the pair relatively to this coordinate system.</documentation></method></asyxml>*/
+                                                                       the pair relatively to this coordinate system.</documentation></method></asyxml>*/
   /*<asyxml><method type = "real" signature="dot(pair,pair)"><code></asyxml>*/
   restricted dot dot = new real(pair m, pair n){return dot(m, n);};/*<asyxml></code><documentation>Return the dot product of this coordinate system.</documentation></method></asyxml>*/
   /*<asyxml><method type = "real" signature="abs(pair)"><code></asyxml>*/
@@ -287,50 +287,50 @@
 
 /*<asyxml><operator type = "bool" signature="==(coordsys,coordsys)"><code></asyxml>*/
 bool operator ==(coordsys c1, coordsys c2)
-{/*<asyxml></code><documentation>Return true iff the coordinate system have the same origin and units vector.</documentation></operator></asyxml>*/
-  return c1.O == c2.O && c1.i == c2.i && c1.j == c2.j;
-}
+  {/*<asyxml></code><documentation>Return true iff the coordinate system have the same origin and units vector.</documentation></operator></asyxml>*/
+   return c1.O == c2.O && c1.i == c2.i && c1.j == c2.j;
+  }
 
 /*<asyxml><function type="coordsys" signature="cartesiansystem(pair,pair,pair)"><code></asyxml>*/
 coordsys cartesiansystem(pair O = (0, 0), pair i, pair j)
 {/*<asyxml></code><documentation>Return the Cartesian coordinate system (O, i, j).</documentation></function></asyxml>*/
-  coordsys R;
-  real[][] P = {{0, 0}, {0, 0}};
-  real[][] iP;
-  P[0][0] = i.x;
-  P[0][1] = j.x;
-  P[1][0] = i.y;
-  P[1][1] = j.y;
-  iP = inverse(P);
-  real ni = abs(i);
-  real nj = abs(j);
-  real ij = angle(j) - angle(i);
+ coordsys R;
+ real[][] P = {{0, 0}, {0, 0}};
+ real[][] iP;
+ P[0][0] = i.x;
+ P[0][1] = j.x;
+ P[1][0] = i.y;
+ P[1][1] = j.y;
+ iP = inverse(P);
+ real ni = abs(i);
+ real nj = abs(j);
+ real ij = angle(j) - angle(i);
 
-  pair rtd(pair m)
-  {
-    return O + (P[0][0] * m.x + P[0][1] * m.y, P[1][0] * m.x + P[1][1] * m.y);
-  }
+ pair rtd(pair m)
+ {
+   return O + (P[0][0] * m.x + P[0][1] * m.y, P[1][0] * m.x + P[1][1] * m.y);
+ }
 
-  pair dtr(pair m)
-  {
-    m-=O;
-    return (iP[0][0] * m.x + iP[0][1] * m.y, iP[1][0] * m.x + iP[1][1] * m.y);
-  }
+ pair dtr(pair m)
+ {
+   m-=O;
+   return (iP[0][0] * m.x + iP[0][1] * m.y, iP[1][0] * m.x + iP[1][1] * m.y);
+ }
 
-  pair polar(real r, real a)
-  {
-    real ca = sin(ij - a)/(ni * sin(ij));
-    real sa = sin(a)/(nj * sin(ij));
-    return r * (ca, sa);
-  }
+ pair polar(real r, real a)
+ {
+   real ca = sin(ij - a)/(ni * sin(ij));
+   real sa = sin(a)/(nj * sin(ij));
+   return r * (ca, sa);
+ }
 
-  real tdot(pair m, pair n)
-  {
-    return m.x * n.x * ni^2 + m.y * n.y * nj^2 + (m.x * n.y + n.x * m.y) * dot(i, j);
-  }
+ real tdot(pair m, pair n)
+ {
+   return m.x * n.x * ni^2 + m.y * n.y * nj^2 + (m.x * n.y + n.x * m.y) * dot(i, j);
+ }
 
-  R.init(rtd, dtr, polar, tdot);
-  return R;
+ R.init(rtd, dtr, polar, tdot);
+ return R;
 }
 
 
@@ -344,19 +344,19 @@
           pen jpen = ipen,
           arrowbar arrow = Arrow)
 {/*<asyxml></code><documentation>Draw the components (O, i, j, x - axis, y - axis) of 'R'.</documentation></function></asyxml>*/
-  unravel R;
-  dot(pic, O, dotpen);
-  drawline(pic, O, O + i, xpen);
-  drawline(pic, O, O + j, ypen);
-  draw(pic, li, O--(O + i), ipen, arrow);
-  Label lj = lj.copy();
-  lj.align(lj.align, unit(I * j));
-  draw(pic, lj, O--(O + j), jpen, arrow);
-  draw(pic, lj, O--(O + j), jpen, arrow);
-  Label lo = lo.copy();
-  lo.align(lo.align, -2 * dir(O--O + i, O--O + j));
-  lo.p(dotpen);
-  label(pic, lo, O);
+ unravel R;
+ dot(pic, O, dotpen);
+ drawline(pic, O, O + i, xpen);
+ drawline(pic, O, O + j, ypen);
+ draw(pic, li, O--(O + i), ipen, arrow);
+ Label lj = lj.copy();
+ lj.align(lj.align, unit(I * j));
+ draw(pic, lj, O--(O + j), jpen, arrow);
+ draw(pic, lj, O--(O + j), jpen, arrow);
+ Label lo = lo.copy();
+ lo.align(lo.align, -2 * dir(O--O + i, O--O + j));
+ lo.p(dotpen);
+ label(pic, lo, O);
 }
 
 /*<asyxml><operator type = "pair" signature="/(pair,coordsys)"><code></asyxml>*/
@@ -364,7 +364,7 @@
 {/*<asyxml></code><documentation>Return the xy - coordinates of 'p' relatively to
    the coordinate system 'R'.
    For example, if R = cartesiansystem((1, 2), (1, 0), (0, 1)), (0, 0)/R is (-1, -2).</documentation></operator></asyxml>*/
-  return R.defaulttorelative(p);
+ return R.defaulttorelative(p);
 }
 
 /*<asyxml><operator type = "pair" signature="*(coordsys,pair)"><code></asyxml>*/
@@ -372,25 +372,25 @@
 {/*<asyxml></code><documentation>Return the coordinates of 'p' given in the
    xy - coordinates 'R'.
    For example, if R = cartesiansystem((1, 2), (1, 0), (0, 1)), R * (0, 0) is (1, 2).</documentation></operator></asyxml>*/
-  return R.relativetodefault(p);
+ return R.relativetodefault(p);
 }
 
 /*<asyxml><operator type = "path" signature="*(coordsys,path)"><code></asyxml>*/
 path operator *(coordsys R, path g)
 {/*<asyxml></code><documentation>Return the reconstructed path applying R * pair to each node, pre and post control point of 'g'.</documentation></operator></asyxml>*/
-  guide og = R * point(g, 0);
-  real l = length(g);
-  for(int i = 1; i <= l; ++i)
-    {
-      pair P = R * point(g, i);
-      pair post = R * postcontrol(g, i - 1);
-      pair pre = R * precontrol(g, i);
-      if(i == l && (cyclic(g)))
-        og = og..controls post and pre..cycle;
-      else
-        og = og..controls post and pre..P;
-    }
-  return og;
+ guide og = R * point(g, 0);
+ real l = length(g);
+ for(int i = 1; i <= l; ++i)
+   {
+     pair P = R * point(g, i);
+     pair post = R * postcontrol(g, i - 1);
+     pair pre = R * precontrol(g, i);
+     if(i == l && (cyclic(g)))
+       og = og..controls post and pre..cycle;
+     else
+       og = og..controls post and pre..P;
+   }
+ return og;
 }
 
 /*<asyxml><operator type = "coordsys" signature="*(transform,coordsys)"><code></asyxml>*/
@@ -397,9 +397,9 @@
 coordsys operator *(transform t,coordsys R)
 {/*<asyxml></code><documentation>Provide transform * coordsys.
    Note that shiftless(t) is applied to R.i and R.j.</documentation></operator></asyxml>*/
-  coordsys oc;
-  oc = cartesiansystem(t * R.O, shiftless(t) * R.i, shiftless(t) * R.j);
-  return oc;
+ coordsys oc;
+ oc = cartesiansystem(t * R.O, shiftless(t) * R.i, shiftless(t) * R.j);
+ return oc;
 }
 
 /*<asyxml><constant type = "coordsys" signature="defaultcoordsys"><code></asyxml>*/
@@ -651,26 +651,26 @@
 
 /*<asyxml><operator type = "bool" signature="==(explicit point,explicit point)"><code></asyxml>*/
 bool operator ==(explicit point M, explicit point N)
-{/*<asyxml></code><documentation>Provide the test 'M == N' wish returns true iff MN < EPS</documentation></operator></asyxml>*/
-  return abs(locate(M) - locate(N)) < EPS;
-}
+  {/*<asyxml></code><documentation>Provide the test 'M == N' wish returns true iff MN < EPS</documentation></operator></asyxml>*/
+   return abs(locate(M) - locate(N)) < EPS;
+  }
 
 /*<asyxml><operator type = "bool" signature="!=(explicit point,explicit point)"><code></asyxml>*/
 bool operator !=(explicit point M, explicit point N)
 {/*<asyxml></code><documentation>Provide the test 'M != N' wish return true iff MN >= EPS</documentation></operator></asyxml>*/
-  return !(M == N);
+ return !(M == N);
 }
 
 /*<asyxml><operator type = "guide" signature="cast(point)"><code></asyxml>*/
 guide operator cast(point p)
 {/*<asyxml></code><documentation>Cast point to guide.</documentation></operator></asyxml>*/
-  return locate(p);
+ return locate(p);
 }
 
 /*<asyxml><operator type = "path" signature="cast(point)"><code></asyxml>*/
 path operator cast(point p)
 {/*<asyxml></code><documentation>Cast point to path.</documentation></operator></asyxml>*/
-  return locate(p);
+ return locate(p);
 }
 
 /*<asyxml><function type="void" signature="dot(picture,Label,explicit point,align,string,pen)"><code></asyxml>*/
@@ -678,70 +678,70 @@
          align align = NoAlign,
          string format = defaultformat, pen p = currentpen)
 {/*<asyxml></code><documentation></documentation></function></asyxml>*/
-  Label L = L.copy();
-  L.position(locate(Z));
-  if(L.s == "") {
-    if(format == "") format = defaultformat;
-    L.s = "("+format(format, Z.x)+", "+format(format, Z.y)+")";
-  }
-  L.align(align, E);
-  L.p(p);
-  dot(pic, locate(Z), p);
-  add(pic, L);
+ Label L = L.copy();
+ L.position(locate(Z));
+ if(L.s == "") {
+   if(format == "") format = defaultformat;
+   L.s = "("+format(format, Z.x)+", "+format(format, Z.y)+")";
+ }
+ L.align(align, E);
+ L.p(p);
+ dot(pic, locate(Z), p);
+ add(pic, L);
 }
 
 /*<asyxml><function type="real" signature="abs(coordsys,pair)"><code></asyxml>*/
 real abs(coordsys R, pair m)
 {/*<asyxml></code><documentation>Return the modulus |m| in the coordinate system 'R'.</documentation></function></asyxml>*/
-  return R.abs(m);
+ return R.abs(m);
 }
 
 /*<asyxml><function type="real" signature="abs(explicit point)"><code></asyxml>*/
 real abs(explicit point M)
 {/*<asyxml></code><documentation>Return the modulus |M| in its coordinate system.</documentation></function></asyxml>*/
-  return M.coordsys.abs(M.coordinates);
+ return M.coordsys.abs(M.coordinates);
 }
 
 /*<asyxml><function type="real" signature="length(explicit point)"><code></asyxml>*/
 real length(explicit point M)
 {/*<asyxml></code><documentation>Return the modulus |M| in its coordinate system (same as 'abs').</documentation></function></asyxml>*/
-  return M.coordsys.abs(M.coordinates);
+ return M.coordsys.abs(M.coordinates);
 }
 
 /*<asyxml><function type="point" signature="conj(explicit point)"><code></asyxml>*/
 point conj(explicit point M)
 {/*<asyxml></code><documentation>Conjugate.</documentation></function></asyxml>*/
-  return point(M.coordsys, conj(M.coordinates), M.m);
+ return point(M.coordsys, conj(M.coordinates), M.m);
 }
 
 /*<asyxml><function type="real" signature="degrees(explicit point,coordsys,bool)"><code></asyxml>*/
 real degrees(explicit point M, coordsys R = M.coordsys, bool warn = true)
 {/*<asyxml></code><documentation>Return the angle of M (in degrees) relatively to 'R'.</documentation></function></asyxml>*/
-  return (degrees(locate(M) - R.O, warn) - degrees(R.i))%360;
+ return (degrees(locate(M) - R.O, warn) - degrees(R.i))%360;
 }
 
 /*<asyxml><function type="real" signature="angle(explicit point,coordsys,bool)"><code></asyxml>*/
 real angle(explicit point M, coordsys R = M.coordsys, bool warn = true)
 {/*<asyxml></code><documentation>Return the angle of M (in radians) relatively to 'R'.</documentation></function></asyxml>*/
-  return radians(degrees(M, R, warn));
+ return radians(degrees(M, R, warn));
 }
 
 bool Finite(explicit point z)
 {
-  return abs(z.x) < Infinity && abs(z.y) < Infinity;
+ return abs(z.x) < Infinity && abs(z.y) < Infinity;
 }
 
 /*<asyxml><function type="bool" signature="finite(explicit point)"><code></asyxml>*/
 bool finite(explicit point p)
 {/*<asyxml></code><documentation>Avoid to compute 'finite((pair)(infinite_point))'.</documentation></function></asyxml>*/
-  return finite(p.coordinates);
+ return finite(p.coordinates);
 }
 
 /*<asyxml><function type="real" signature="dot(point,point)"><code></asyxml>*/
 real dot(point A, point B)
 {/*<asyxml></code><documentation>Return the dot product in the coordinate system of 'A'.</documentation></function></asyxml>*/
-  point[] P = standardizecoordsys(A.coordsys, A, B);
-  return P[0].coordsys.dot(P[0].coordinates, P[1].coordinates);
+ point[] P = standardizecoordsys(A.coordsys, A, B);
+ return P[0].coordsys.dot(P[0].coordinates, P[1].coordinates);
 }
 
 /*<asyxml><function type="real" signature="dot(point,explicit pair)"><code></asyxml>*/
@@ -748,33 +748,33 @@
 real dot(point A, explicit pair B)
 {/*<asyxml></code><documentation>Return the dot product in the default coordinate system.
    dot(explicit pair, point) is also defined.</documentation></function></asyxml>*/
-  return dot(locate(A), B);
+ return dot(locate(A), B);
 }
 real dot(explicit pair A, point B)
 {
-  return dot(A, locate(B));
+ return dot(A, locate(B));
 }
 
 /*<asyxml><function type="transforms" signature="rotateO(real)"><code></asyxml>*/
 transform rotateO(real a)
 {/*<asyxml></code><documentation>Rotation around the origin of the current coordinate system.</documentation></function></asyxml>*/
-  return rotate(a, currentcoordsys.O);
+ return rotate(a, currentcoordsys.O);
 }
 
 /*<asyxml><function type="transform" signature="projection(point,point)"><code></asyxml>*/
 transform projection(point A, point B)
 {/*<asyxml></code><documentation>Return the orthogonal projection on the line (AB).</documentation></function></asyxml>*/
-  pair dir = unit(locate(A) - locate(B));
-  pair a = locate(A);
-  real cof = dir.x * a.x + dir.y * a.y;
-  real tx = a.x - dir.x * cof;
-  real txx = dir.x^2;
-  real txy = dir.x * dir.y;
-  real ty = a.y - dir.y * cof;
-  real tyx = txy;
-  real tyy = dir.y^2;
-  transform t = (tx, ty, txx, txy, tyx, tyy);
-  return t;
+ pair dir = unit(locate(A) - locate(B));
+ pair a = locate(A);
+ real cof = dir.x * a.x + dir.y * a.y;
+ real tx = a.x - dir.x * cof;
+ real txx = dir.x^2;
+ real txy = dir.x * dir.y;
+ real ty = a.y - dir.y * cof;
+ real tyx = txy;
+ real tyy = dir.y^2;
+ transform t = (tx, ty, txx, txy, tyx, tyy);
+ return t;
 }
 
 /*<asyxml><function type="transform" signature="projection(point,point,point,point,bool)"><code></asyxml>*/
@@ -782,45 +782,45 @@
 {/*<asyxml></code><documentation>Return the (CD) parallel projection on (AB).
    If 'safe = true' and (AB)//(CD) return the identity.
    If 'safe = false' and (AB)//(CD) return an infinity scaling.</documentation></function></asyxml>*/
-  pair a = locate(A);
-  pair u = unit(locate(B) - locate(A));
-  pair v = unit(locate(D) - locate(C));
-  real c = u.x * a.y - u.y * a.x;
-  real d = (conj(u) * v).y;
-  if (abs(d) < epsgeo) {
-    return safe ? identity() : scale(infinity);
-  }
-  real tx = c * v.x/d;
-  real ty = c * v.y/d;
-  real txx = u.x * v.y/d;
-  real txy = -u.x * v.x/d;
-  real tyx = u.y * v.y/d;
-  real tyy = -u.y * v.x/d;
-  transform t = (tx, ty, txx, txy, tyx, tyy);
-  return t;
+ pair a = locate(A);
+ pair u = unit(locate(B) - locate(A));
+ pair v = unit(locate(D) - locate(C));
+ real c = u.x * a.y - u.y * a.x;
+ real d = (conj(u) * v).y;
+ if (abs(d) < epsgeo) {
+   return safe ? identity() : scale(infinity);
+ }
+ real tx = c * v.x/d;
+ real ty = c * v.y/d;
+ real txx = u.x * v.y/d;
+ real txy = -u.x * v.x/d;
+ real tyx = u.y * v.y/d;
+ real tyy = -u.y * v.x/d;
+ transform t = (tx, ty, txx, txy, tyx, tyy);
+ return t;
 }
 
 /*<asyxml><function type="transform" signature="scale(real,point)"><code></asyxml>*/
 transform scale(real k, point M)
 {/*<asyxml></code><documentation>Homothety.</documentation></function></asyxml>*/
-  pair P = locate(M);
-  return shift(P) * scale(k) * shift(-P);
+ pair P = locate(M);
+ return shift(P) * scale(k) * shift(-P);
 }
 
 /*<asyxml><function type="transform" signature="xscale(real,point)"><code></asyxml>*/
 transform xscale(real k, point M)
 {/*<asyxml></code><documentation>xscale from 'M' relatively to the x - axis of the coordinate system of 'M'.</documentation></function></asyxml>*/
-  pair P = locate(M);
-  real a = degrees(M.coordsys.i);
-  return (shift(P) * rotate(a)) * xscale(k) * (rotate(-a) * shift(-P));
+ pair P = locate(M);
+ real a = degrees(M.coordsys.i);
+ return (shift(P) * rotate(a)) * xscale(k) * (rotate(-a) * shift(-P));
 }
 
 /*<asyxml><function type="transform" signature="yscale(real,point)"><code></asyxml>*/
 transform yscale(real k, point M)
 {/*<asyxml></code><documentation>yscale from 'M' relatively to the y - axis of the coordinate system of 'M'.</documentation></function></asyxml>*/
-  pair P = locate(M);
-  real a = degrees(M.coordsys.j) - 90;
-  return (shift(P) * rotate(a)) * yscale(k) * (rotate(-a) * shift(-P));
+ pair P = locate(M);
+ real a = degrees(M.coordsys.j) - 90;
+ return (shift(P) * rotate(a)) * yscale(k) * (rotate(-a) * shift(-P));
 }
 
 /*<asyxml><function type="transform" signature="scale(real,point,point,point,point,bool)"><code></asyxml>*/
@@ -829,41 +829,41 @@
    (help me for English translation...)
    If 'safe = true' and (AB)//(CD) return the identity.
    If 'safe = false' and (AB)//(CD) return a infinity scaling.</documentation></function></asyxml>*/
-  pair a = locate(A);
-  pair u = unit(locate(B) - locate(A));
-  pair v = unit(locate(D) - locate(C));
-  real c = u.x * a.y - u.y * a.x;
-  real d = (conj(u) * v).y;
-  real d = (conj(u) * v).y;
-  if (abs(d) < epsgeo) {
-    return safe ? identity() : scale(infinity);
-  }
-  real tx = (1 - k) * c * v.x/d;
-  real ty = (1 - k) * c * v.y/d;
-  real txx = (1 - k) * u.x * v.y/d + k;
-  real txy = (k - 1) * u.x * v.x/d;
-  real tyx = (1 - k) * u.y * v.y/d;
-  real tyy = (k - 1) * u.y * v.x/d + k;
-  transform t = (tx, ty, txx, txy, tyx, tyy);
-  return t;
+ pair a = locate(A);
+ pair u = unit(locate(B) - locate(A));
+ pair v = unit(locate(D) - locate(C));
+ real c = u.x * a.y - u.y * a.x;
+ real d = (conj(u) * v).y;
+ real d = (conj(u) * v).y;
+ if (abs(d) < epsgeo) {
+   return safe ? identity() : scale(infinity);
+ }
+ real tx = (1 - k) * c * v.x/d;
+ real ty = (1 - k) * c * v.y/d;
+ real txx = (1 - k) * u.x * v.y/d + k;
+ real txy = (k - 1) * u.x * v.x/d;
+ real tyx = (1 - k) * u.y * v.y/d;
+ real tyy = (k - 1) * u.y * v.x/d + k;
+ transform t = (tx, ty, txx, txy, tyx, tyy);
+ return t;
 }
 
 /*<asyxml><function type="transform" signature="scaleO(real)"><code></asyxml>*/
 transform scaleO(real x)
 {/*<asyxml></code><documentation>Homothety from the origin of the current coordinate system.</documentation></function></asyxml>*/
-  return scale(x, (0, 0));
+ return scale(x, (0, 0));
 }
 
 /*<asyxml><function type="transform" signature="xscaleO(real)"><code></asyxml>*/
 transform xscaleO(real x)
 {/*<asyxml></code><documentation>xscale from the origin and relatively to the current coordinate system.</documentation></function></asyxml>*/
-  return scale(x, (0, 0), (0, 1), (0, 0), (1, 0));
+ return scale(x, (0, 0), (0, 1), (0, 0), (1, 0));
 }
 
 /*<asyxml><function type="transform" signature="yscaleO(real)"><code></asyxml>*/
 transform yscaleO(real x)
 {/*<asyxml></code><documentation>yscale from the origin and relatively to the current coordinate system.</documentation></function></asyxml>*/
-  return scale(x, (0, 0), (1, 0), (0, 0), (0, 1));
+ return scale(x, (0, 0), (1, 0), (0, 0), (0, 1));
 }
 
 /*<asyxml><struct signature="vector"><code></asyxml>*/
@@ -876,7 +876,7 @@
 /*<asyxml><operator type = "point" signature="cast(vector)"><code></asyxml>*/
 point operator cast(vector v)
 {/*<asyxml></code><documentation>Cast vector 'v' to point 'M' so that OM = v.</documentation></operator></asyxml>*/
-  return v.v;
+ return v.v;
 }
 
 /*<asyxml><operator type = "vector" signature="cast(pair)"><code></asyxml>*/
@@ -883,9 +883,9 @@
 vector operator cast(pair v)
 {/*<asyxml></code><documentation>Cast pair to vector relatively to the current coordinate
    system 'currentcoordsys'.</documentation></operator></asyxml>*/
-  vector ov;
-  ov.v = point(currentcoordsys, v);
-  return ov;
+ vector ov;
+ ov.v = point(currentcoordsys, v);
+ return ov;
 }
 
 /*<asyxml><operator type = "vector" signature="cast(explicit point)"><code></asyxml>*/
@@ -892,29 +892,29 @@
 vector operator cast(explicit point v)
 {/*<asyxml></code><documentation>A point can be interpreted like a vector using the code
    '(vector)a_point'.</documentation></operator></asyxml>*/
-  vector ov;
-  ov.v = v;
-  return ov;
+ vector ov;
+ ov.v = v;
+ return ov;
 }
 
 /*<asyxml><operator type = "pair" signature="cast(explicit vector)"><code></asyxml>*/
 pair operator cast(explicit vector v)
 {/*<asyxml></code><documentation>Cast vector to pair (the coordinates of 'v' in the default coordinate system).</documentation></operator></asyxml>*/
-  return locate(v.v) - v.v.coordsys.O;
+ return locate(v.v) - v.v.coordsys.O;
 }
 
 /*<asyxml><operator type = "align" signature="cast(vector)"><code></asyxml>*/
 align operator cast(vector v)
 {/*<asyxml></code><documentation>Cast vector to align.</documentation></operator></asyxml>*/
-  return (pair)v;
+ return (pair)v;
 }
 
 /*<asyxml><function type="vector" signature="vector(coordsys, pair)"><code></asyxml>*/
 vector vector(coordsys R = currentcoordsys, pair v)
 {/*<asyxml></code><documentation>Return the vector of 'R' which has the coordinates 'v'.</documentation></function></asyxml>*/
-  vector ov;
-  ov.v = point(R, v);
-  return ov;
+ vector ov;
+ ov.v = point(R, v);
+ return ov;
 }
 
 /*<asyxml><function type="vector" signature="vector(point)"><code></asyxml>*/
@@ -921,76 +921,76 @@
 vector vector(point M)
 {/*<asyxml></code><documentation>Return the vector OM, where O is the origin of the coordinate system of 'M'.
    Useful to write 'vector(P - M);' instead of '(vector)(P - M)'.</documentation></function></asyxml>*/
-  return M;
+ return M;
 }
 
 /*<asyxml><function type="point" signature="point(explicit vector)"><code></asyxml>*/
 point point(explicit vector u)
 {/*<asyxml></code><documentation>Return the point M so that OM = u, where O is the origin of the coordinate system of 'u'.</documentation></function></asyxml>*/
-  return u.v;
+ return u.v;
 }
 
 /*<asyxml><function type="pair" signature="locate(explicit vector)"><code></asyxml>*/
 pair locate(explicit vector v)
 {/*<asyxml></code><documentation>Return the coordinates of 'v' in the default coordinate system (like casting vector to pair).</documentation></function></asyxml>*/
-  return (pair)v;
+ return (pair)v;
 }
 
 /*<asyxml><function type="void" signature="show(Label,pen,arrowbar)"><code></asyxml>*/
 void show(Label L, vector v, pen p = currentpen, arrowbar arrow = Arrow)
 {/*<asyxml></code><documentation>Draw the vector v (from the origin of its coordinate system).</documentation></function></asyxml>*/
-  coordsys R = v.v.coordsys;
-  draw(L, R.O--v.v, p, arrow);
+ coordsys R = v.v.coordsys;
+ draw(L, R.O--v.v, p, arrow);
 }
 
 /*<asyxml><function type="vector" signature="changecoordsys(coordsys,vector)"><code></asyxml>*/
 vector changecoordsys(coordsys R, vector v)
 {/*<asyxml></code><documentation>Return the vector 'v' relatively to coordinate system 'R'.</documentation></function></asyxml>*/
-  vector ov;
-  ov.v = point(R, (locate(v) + R.O)/R);
-  return ov;
+ vector ov;
+ ov.v = point(R, (locate(v) + R.O)/R);
+ return ov;
 }
 
 /*<asyxml><operator type = "vector" signature="*(real,explicit vector)"><code></asyxml>*/
 vector operator *(real x, explicit vector v)
 {/*<asyxml></code><documentation>Provide real * vector.</documentation></operator></asyxml>*/
-  return x * v.v;
+ return x * v.v;
 }
 
 /*<asyxml><operator type = "vector" signature="/(explicit vector,real)"><code></asyxml>*/
 vector operator /(explicit vector v, real x)
 {/*<asyxml></code><documentation>Provide vector/real</documentation></operator></asyxml>*/
-  return v.v/x;
+ return v.v/x;
 }
 
 /*<asyxml><operator type = "vector" signature="*(transform t,explicit vector)"><code></asyxml>*/
 vector operator *(transform t, explicit vector v)
 {/*<asyxml></code><documentation>Provide transform * vector.</documentation></operator></asyxml>*/
-  return t * v.v;
+ return t * v.v;
 }
 
 /*<asyxml><operator type = "vector" signature="*(explicit point,explicit vector)"><code></asyxml>*/
 vector operator *(explicit point M, explicit vector v)
 {/*<asyxml></code><documentation>Provide point * vector</documentation></operator></asyxml>*/
-  return M * v.v;
+ return M * v.v;
 }
 
 /*<asyxml><operator type = "point" signature="+(explicit point,explicit vector)"><code></asyxml>*/
 point operator +(point M, explicit vector v)
 {/*<asyxml></code><documentation>Return 'M' shifted by 'v'.</documentation></operator></asyxml>*/
-  return shift(locate(v)) * M;
+ return shift(locate(v)) * M;
 }
 
 /*<asyxml><operator type = "point" signature="-(explicit point,explicit vector)"><code></asyxml>*/
 point operator -(point M, explicit vector v)
 {/*<asyxml></code><documentation>Return 'M' shifted by '-v'.</documentation></operator></asyxml>*/
-  return shift(-locate(v)) * M;
+ return shift(-locate(v)) * M;
 }
 
 /*<asyxml><operator type = "vector" signature="-(explicit vector)"><code></asyxml>*/
 vector operator -(explicit vector v)
 {/*<asyxml></code><documentation>Provide -v.</documentation></operator></asyxml>*/
-  return -v.v;
+ return -v.v;
 }
 
 /*<asyxml><operator type = "point" signature="+(explicit pair,explicit vector)"><code></asyxml>*/
@@ -998,7 +998,7 @@
 {/*<asyxml></code><documentation>The pair 'm' is supposed to be the coordinates of
    a point in the current coordinates system 'currentcoordsys'.
    Return this point shifted by the vector 'v'.</documentation></operator></asyxml>*/
-  return locate(m) + v;
+ return locate(m) + v;
 }
 
 /*<asyxml><operator type = "point" signature="-(explicit pair,explicit vector)"><code></asyxml>*/
@@ -1006,7 +1006,7 @@
 {/*<asyxml></code><documentation>The pair 'm' is supposed to be the coordinates of
    a point in the current coordinates system 'currentcoordsys'.
    Return this point shifted by the vector '-v'.</documentation></operator></asyxml>*/
-  return m + (-v);
+ return m + (-v);
 }
 
 /*<asyxml><operator type = "vector" signature="+(explicit vector,explicit vector)"><code></asyxml>*/
@@ -1014,9 +1014,9 @@
 {/*<asyxml></code><documentation>Provide vector + vector.
    If the two vector haven't the same coordinate system, the returned
    vector is relative to the default coordinate system (without warning).</documentation></operator></asyxml>*/
-  coordsys R = v1.v.coordsys;
-  if(samecoordsys(false, v1, v2)){R = defaultcoordsys;}
-  return vector(R, (locate(v1) + locate(v2))/R);
+ coordsys R = v1.v.coordsys;
+ if(samecoordsys(false, v1, v2)){R = defaultcoordsys;}
+ return vector(R, (locate(v1) + locate(v2))/R);
 }
 
 /*<asyxml><operator type = "vector" signature="-(explicit vector, explicit vector)"><code></asyxml>*/
@@ -1024,31 +1024,31 @@
 {/*<asyxml></code><documentation>Provide vector - vector.
    If the two vector haven't the same coordinate system, the returned
    vector is relative to the default coordinate system (without warning).</documentation></operator></asyxml>*/
-  return v1 + (-v2);
+ return v1 + (-v2);
 }
 
 /*<asyxml><operator type = "bool" signature="==(explicit vector,explicit vector)"><code></asyxml>*/
 bool operator ==(explicit vector u, explicit vector v)
-{/*<asyxml></code><documentation>Return true iff |u - v|<EPS.</documentation></operator></asyxml>*/
-  return abs(u - v) < EPS;
-}
+  {/*<asyxml></code><documentation>Return true iff |u - v|<EPS.</documentation></operator></asyxml>*/
+   return abs(u - v) < EPS;
+  }
 
 /*<asyxml><function type="bool" signature="collinear(vector,vector)"><code></asyxml>*/
 bool collinear(vector u, vector v)
 {/*<asyxml></code><documentation>Return 'true' iff the vectors 'u' and 'v' are collinear.</documentation></function></asyxml>*/
-  return abs(ypart((conj((pair)u) * (pair)v))) < EPS;
+ return abs(ypart((conj((pair)u) * (pair)v))) < EPS;
 }
 
 /*<asyxml><function type="vector" signature="unit(point)"><code></asyxml>*/
 vector unit(point M)
 {/*<asyxml></code><documentation>Return the unit vector according to the modulus of its coordinate system.</documentation></function></asyxml>*/
-  return M/abs(M);
+ return M/abs(M);
 }
 
 /*<asyxml><function type="vector" signature="unit(vector)"><code></asyxml>*/
 vector unit(vector u)
 {/*<asyxml></code><documentation>Return the unit vector according to the modulus of its coordinate system.</documentation></function></asyxml>*/
-  return u.v/abs(u.v);
+ return u.v/abs(u.v);
 }
 
 /*<asyxml><function type="real" signature="degrees(vector,coordsys,bool)"><code></asyxml>*/
@@ -1056,7 +1056,7 @@
              coordsys R = v.v.coordsys,
              bool warn = true)
 {/*<asyxml></code><documentation>Return the angle of 'v' (in degrees) relatively to 'R'.</documentation></function></asyxml>*/
-  return (degrees(locate(v), warn) - degrees(R.i))%360;
+ return (degrees(locate(v), warn) - degrees(R.i))%360;
 }
 
 /*<asyxml><function type="real" signature="angle(vector,coordsys,bool)"><code></asyxml>*/
@@ -1064,13 +1064,13 @@
            coordsys R = v.v.coordsys,
            bool warn = true)
 {/*<asyxml></code><documentation>Return the angle of 'v' (in radians) relatively to 'R'.</documentation></function></asyxml>*/
-  return radians(degrees(v, R, warn));
+ return radians(degrees(v, R, warn));
 }
 
 /*<asyxml><function type="vector" signature="conj(explicit vector)"><code></asyxml>*/
 vector conj(explicit vector u)
 {/*<asyxml></code><documentation>Conjugate.</documentation></function></asyxml>*/
-  return conj(u.v);
+ return conj(u.v);
 }
 
 /*<asyxml><function type="transform" signature="rotate(explicit vector)"><code></asyxml>*/
@@ -1079,7 +1079,7 @@
    This is useful for rotating text along a line in the direction dir.
    rotate(explicit point dir) is also defined.
    </documentation></function></asyxml>*/
-  return rotate(locate(dir));
+ return rotate(locate(dir));
 }
 transform rotate(explicit point dir){return rotate(locate(vector(dir)));}
 // *......................COORDINATES......................*
@@ -1311,7 +1311,7 @@
   g = margin(g, p).g;
   draw(apic, g, p);
   if(filltype != NoFill) filltype.fill(apic, (relpoint(g, 0) - relpoint(g, 0.5)+
-                                             relpoint(g, 1))--g--cycle, p + solid);
+                                              relpoint(g, 1))--g--cycle, p + solid);
   add(pic, apic, locate(z));
 }
 
@@ -1360,7 +1360,7 @@
   pair Ap = A, Bp = B, Op = O;
   pair dir = Ap - Op;
   real a1 = degrees(dir);
-  pair align = rotate(-a1) * unit(dir(Op--Ap, Op--Bp));
+  pair align = rotate(-a1) * dir(Op--Ap, Op--Bp);
   perpendicularmark(pic = pic, z = O, align = align,
                     dir = dir, size = size, p = p,
                     margin = margin, filltype = filltype);
@@ -1700,16 +1700,16 @@
 
 /*<asyxml><operator type = "bool" signature="==(line,line)"><code></asyxml>*/
 bool operator ==(line l1, line l2)
-{/*<asyxml></code><documentation>Provide the test 'line == line'.</documentation></operator></asyxml>*/
-  return (collinear(l1.u, l2.u) &&
-          abs(ypart((locate(l1.A) - locate(l1.B))/(locate(l1.A) - locate(l2.B)))) < epsgeo &&
-          l1.extendA == l2.extendA && l1.extendB == l2.extendB);
-}
+  {/*<asyxml></code><documentation>Provide the test 'line == line'.</documentation></operator></asyxml>*/
+   return (collinear(l1.u, l2.u) &&
+           abs(ypart((locate(l1.A) - locate(l1.B))/(locate(l1.A) - locate(l2.B)))) < epsgeo &&
+           l1.extendA == l2.extendA && l1.extendB == l2.extendB);
+  }
 
 /*<asyxml><operator type = "bool" signature="!=(line,line)"><code></asyxml>*/
 bool operator !=(line l1, line l2)
 {/*<asyxml></code><documentation>Provide the test 'line != line'.</documentation></operator></asyxml>*/
-  return !(l1 == l2);
+ return !(l1 == l2);
 }
 
 /*<asyxml><operator type = "bool" signature="@(point,line)"><code></asyxml>*/
@@ -1716,33 +1716,33 @@
 bool operator @(point m, line l)
 {/*<asyxml></code><documentation>Provide the test 'point @ line'.
    Return true iff 'm' is on the 'l'.</documentation></operator></asyxml>*/
-  point M = changecoordsys(l.A.coordsys, m);
-  if (abs(l.a * M.x + l.b * M.y + l.c) >= epsgeo) return false;
-  if (l.extendA && l.extendB) return true;
-  if (!l.extendA && !l.extendB) return between(l.A, M, l.B);
-  if (l.extendA) return sameside(M, l.A, l.B);
-  return sameside(M, l.B, l.A);
+ point M = changecoordsys(l.A.coordsys, m);
+ if (abs(l.a * M.x + l.b * M.y + l.c) >= epsgeo) return false;
+ if (l.extendA && l.extendB) return true;
+ if (!l.extendA && !l.extendB) return between(l.A, M, l.B);
+ if (l.extendA) return sameside(M, l.A, l.B);
+ return sameside(M, l.B, l.A);
 }
 
 /*<asyxml><function type="coordsys" signature="coordsys(line)"><code></asyxml>*/
 coordsys coordsys(line l)
 {/*<asyxml></code><documentation>Return the coordinate system in which 'l' is defined.</documentation></function></asyxml>*/
-  return l.A.coordsys;
+ return l.A.coordsys;
 }
 
 /*<asyxml><function type="line" signature="reverse(line)"><code></asyxml>*/
 line reverse(line l)
 {/*<asyxml></code><documentation>Permute the points 'A' and 'B' of 'l' and so its orientation.</documentation></function></asyxml>*/
-  return line(l.B, l.extendB, l.A, l.extendA);
+ return line(l.B, l.extendB, l.A, l.extendA);
 }
 
 /*<asyxml><function type="line" signature="extend(line)"><code></asyxml>*/
 line extend(line l)
 {/*<asyxml></code><documentation>Return the infinite line passing through 'l.A' and 'l.B'.</documentation></function></asyxml>*/
-  line ol = l.copy();
-  ol.extendA = true;
-  ol.extendB = true;
-  return ol;
+ line ol = l.copy();
+ ol.extendA = true;
+ ol.extendB = true;
+ return ol;
 }
 
 /*<asyxml><function type="line" signature="complementary(explicit line)"><code></asyxml>*/
@@ -1749,31 +1749,31 @@
 line complementary(explicit line l)
 {/*<asyxml></code><documentation>Return the complementary of a half-line with respect of
    the full line 'l'.</documentation></function></asyxml>*/
-  if (l.extendA && l.extendB)
-    abort("complementary: the parameter is not a half-line.");
-  point origin = l.extendA ? l.B : l.A;
-  point ptdir = l.extendA ?
-    rotate(180, l.B) * l.A : rotate(180, l.A) * l.B;
-  return line(origin, false, ptdir);
+ if (l.extendA && l.extendB)
+   abort("complementary: the parameter is not a half-line.");
+ point origin = l.extendA ? l.B : l.A;
+ point ptdir = l.extendA ?
+ rotate(180, l.B) * l.A : rotate(180, l.A) * l.B;
+ return line(origin, false, ptdir);
 }
 
 /*<asyxml><function type="line[]" signature="complementary(explicit segment)"><code></asyxml>*/
 line[] complementary(explicit segment s)
 {/*<asyxml></code><documentation>Return the two half-lines of origin 's.A' and 's.B' respectively.</documentation></function></asyxml>*/
-  line[] ol = new line[2];
-  ol[0] = complementary(line(s.A, false, s.B));
-  ol[1] = complementary(line(s.A, s.B, false));
-  return ol;
+ line[] ol = new line[2];
+ ol[0] = complementary(line(s.A, false, s.B));
+ ol[1] = complementary(line(s.A, s.B, false));
+ return ol;
 }
 
 /*<asyxml><function type="line" signature="Ox(coordsys)"><code></asyxml>*/
 line Ox(coordsys R = currentcoordsys)
 {/*<asyxml></code><documentation>Return the x-axis of 'R'.</documentation></function></asyxml>*/
-  return line(point(R, (0, 0)), point(R, E));
+ return line(point(R, (0, 0)), point(R, E));
 }
 /*<asyxml><constant type = "line" signature="Ox"><code></asyxml>*/
 restricted line Ox = Ox();/*<asyxml></code><documentation>the x-axis of
-                          the default coordinate system.</documentation></constant></asyxml>*/
+                            the default coordinate system.</documentation></constant></asyxml>*/
 
 /*<asyxml><function type="line" signature="Oy(coordsys)"><code></asyxml>*/
 line Oy(coordsys R = currentcoordsys)
@@ -1782,7 +1782,7 @@
 }
 /*<asyxml><constant type = "line" signature="Oy"><code></asyxml>*/
 restricted line Oy = Oy();/*<asyxml></code><documentation>the y-axis of
-                          the default coordinate system.</documentation></constant></asyxml>*/
+                            the default coordinate system.</documentation></constant></asyxml>*/
 
 /*<asyxml><function type="line" signature="line(real,point)"><code></asyxml>*/
 line line(real a, point A = point(currentcoordsys, (0, 0)))
@@ -1826,7 +1826,7 @@
 }
 /*<asyxml><constant type = "line" signature="vline"><code></asyxml>*/
 restricted line vline = vline();/*<asyxml></code><documentation>The vertical line in the current coordinate system passing
-                                through the origin of this system.</documentation></constant></asyxml>*/
+                                  through the origin of this system.</documentation></constant></asyxml>*/
 
 /*<asyxml><function type="line" signature="hline(coordsys)"><code></asyxml>*/
 line hline(coordsys R = currentcoordsys)
@@ -1837,7 +1837,7 @@
 }
 /*<asyxml><constant type = "line" signature="hline"><code></asyxml>*/
 line hline = hline();/*<asyxml></code><documentation>The horizontal line in the current coordinate system passing
-                     through the origin of this system.</documentation></constant></asyxml>*/
+                       through the origin of this system.</documentation></constant></asyxml>*/
 
 /*<asyxml><function type="line" signature="changecoordsys(coordsys,line)"><code></asyxml>*/
 line changecoordsys(coordsys R, line l)
@@ -2358,11 +2358,11 @@
 bqe changecoordsys(coordsys R, bqe bqe)
 {/*<asyxml></code><documentation>Returns the bivariate quadratic equation relatively to 'R'.</documentation></function></asyxml>*/
   pair i = coordinates(changecoordsys(R, vector(defaultcoordsys,
-                                             bqe.coordsys.i)));
+                                                bqe.coordsys.i)));
   pair j = coordinates(changecoordsys(R, vector(defaultcoordsys,
-                                             bqe.coordsys.j)));
+                                                bqe.coordsys.j)));
   pair O = coordinates(changecoordsys(R, point(defaultcoordsys,
-                                            bqe.coordsys.O)));
+                                               bqe.coordsys.O)));
   real a = bqe.a[0], b = bqe.a[1], c = bqe.a[2], d = bqe.a[3], f = bqe.a[4], g = bqe.a[5];
   real ux = i.x, uy = i.y;
   real vx = j.x, vy = j.y;
@@ -2372,14 +2372,14 @@
   real bpp = (-2 * a * vx * vy + b * ux * vy + b * uy * vx - 2 * c * ux * uy)/D^2;
   real cp = (a * vx^2 - b * ux * vx + c * ux^2)/D^2;
   real dp = (-2a * ox * vy^2 + 2a * oy * vx * vy + 2b * ox * uy * vy-
-           b * oy * ux * vy - b * oy * uy * vx - 2c * ox * uy^2 + 2c * oy * uy * ux)/D^2+
+             b * oy * ux * vy - b * oy * uy * vx - 2c * ox * uy^2 + 2c * oy * uy * ux)/D^2+
     (d * vy - f * uy)/D;
   real fp = (2a * ox * vx * vy - b * ox * ux * vy - 2a * oy * vx^2-
-           b * ox * uy * vx + 2 * b * oy * ux * vx + 2c * ox * ux * uy - 2c * oy * ux^2)/D^2+
+             b * ox * uy * vx + 2 * b * oy * ux * vx + 2c * ox * ux * uy - 2c * oy * ux^2)/D^2+
     (f * ux - d * vx)/D;
   g = (a * ox^2 * vy^2 - 2a * ox * oy * vx * vy - b * ox^2 * uy * vy + b * ox * oy * ux * vy+
-     a * oy^2 * vx^2 + b * ox * oy * uy * vx - b * oy^2 * ux * vx + c * ox^2 * uy^2-
-     2 * c * ox * oy * ux * uy + c * oy^2 * ux^2)/D^2+
+       a * oy^2 * vx^2 + b * ox * oy * uy * vx - b * oy^2 * ux * vx + c * ox^2 * uy^2-
+       2 * c * ox * oy * ux * uy + c * oy^2 * ux^2)/D^2+
     (d * oy * vx + f * ox * uy - d * ox * vy - f * oy * ux)/D + g;
   bqe obqe;
   obqe.a = approximate(new real[] {ap, bpp, cp, dp, fp, g});
@@ -2636,7 +2636,7 @@
     this.b = a * sqrt(this.e^2 - 1);
     this.p = a * (this.e^2 - 1);
     point A = this.C + (a^2/this.c) * unit(P[0]-this.C);
-    this.D1 = line(A, A + rotateO(90) * unit(A - this.C));
+    this.D1 = line(A, A + rotate(90,this.C.coordsys.O) * unit(A - this.C));
     this.D2 = reverse(rotate(180, C) * D1);
     this.V1 = C + a * unit(F1 - C);
     this.V2 = C + a * unit(F2 - C);
@@ -3073,8 +3073,8 @@
   real gle = degrees(l);
   coordsys Rp = cartesiansystem(R.O, rotate(gle) * R.i, rotate(gle) * R.j);
   pts = new pair[] {coordinates(changecoordsys(Rp, M1)),
-                  coordinates(changecoordsys(Rp, M2)),
-                  coordinates(changecoordsys(Rp, M3))};
+                    coordinates(changecoordsys(Rp, M2)),
+                    coordinates(changecoordsys(Rp, M3))};
   real[][] M;
   real[] x;
   for (int i = 0; i < 3; ++i) {
@@ -3560,10 +3560,10 @@
   path g;
   if(co.e < 1)
     g = arcfromcenter((ellipse)co, angle1,
-                    angle2, direction, n);
+                      angle2, direction, n);
   else if(co.e > 1)
     g = arcfromcenter((hyperbola)co, angle1,
-                    angle2, n, direction);
+                      angle2, n, direction);
   else abort("arcfromcenter: does not exist for a parabola.");
   return g;
 }
@@ -3590,8 +3590,8 @@
   }
   real[] coef = solve(M, x);
   bqe bqe = changecoordsys(coordsys(el),
-                         bqe(defaultcoordsys,
-                             1, coef[0], coef[1], coef[2], coef[3], coef[4]));
+                           bqe(defaultcoordsys,
+                               1, coef[0], coef[1], coef[2], coef[3], coef[4]));
   bqe.a = approximate(bqe.a);
   return bqe;
 }
@@ -4038,8 +4038,8 @@
     // given form the center of the ellipse.
     real gle = atan(el.a * tan(radians(a))/el.b)+
       pi * (((a%90 == 0 && a != 0) ? floor(a/90) - 1 : floor(a/90)) -
-          ((a%180 == 0) ? 0 : floor(a/180)) -
-          (a%360 == 0 ? floor(a/(360)) : 0));
+            ((a%180 == 0) ? 0 : floor(a/180)) -
+            (a%360 == 0 ? floor(a/(360)) : 0));
     /* // Uncomment to visualize the used branches
        unitsize(2cm, 1cm);
        import graph;
@@ -4076,7 +4076,7 @@
 {/*<asyxml></code><documentation>Return the arclength from 180 to 'angle' given from focus in the
    canonical coordinate system of 'p'.</documentation></function></asyxml>*/
   real a = p.a; /* In canonicalcartesiansystem(p) the equation of p
-                 is x = y^2/(4a) */
+                   is x = y^2/(4a) */
   // integrate(sqrt(1 + (x/(2 * a))^2), x);
   real S(real t){return 0.5 * t * sqrt(1 + t^2/(4 * a^2)) + a * asinh(t/(2 * a));}
   real R(real gle){return 2 * a/(1 - Cos(gle));}
@@ -4110,7 +4110,7 @@
   real x;/*<asyxml></code><documentation>The abscissa value.</documentation></property><property type = "int" signature="system"><code></asyxml>*/
   int system;/*<asyxml></code><documentation>0 = relativesystem; 1 = curvilinearsystem; 2 = angularsystem; 3 = nodesystem</documentation></property><property type = "polarconicroutine" signature="polarconicroutine"><code></asyxml>*/
   polarconicroutine polarconicroutine = fromCenter;/*<asyxml></code><documentation>The routine used with angular system and two foci conic section.
-                                                   Possible values are 'formCenter' and 'formFocus'.</documentation></property></asyxml>*/
+                                                     Possible values are 'formCenter' and 'formFocus'.</documentation></property></asyxml>*/
   /*<asyxml><method type = "abscissa" signature="copy()"><code></asyxml>*/
   abscissa copy()
   {/*<asyxml></code><documentation>Return a copy of this abscissa.</documentation></method></asyxml>*/
@@ -4800,7 +4800,7 @@
   restricted  real angle1, angle2;/*<asyxml></code><documentation>Values (in degrees) in ]-360, 360[.</documentation></property><property type = "bool" signature="direction"><code></asyxml>*/
   bool direction = CCW;/*<asyxml></code><documentation>The arc will be drawn from 'angle1' to 'angle2' rotating in the direction 'direction'.</documentation></property><property type = "polarconicroutine" signature="polarconicroutine"><code></asyxml>*/
   polarconicroutine polarconicroutine = currentpolarconicroutine;/*<asyxml></code><documentation>The routine to which the angles refer.
-                                                                 If 'el' is a circle 'fromCenter' is always used.</documentation></property></asyxml>*/
+                                                                   If 'el' is a circle 'fromCenter' is always used.</documentation></property></asyxml>*/
 
   /*<asyxml><method type = "void" signature="setangles(real,real,real)"><code></asyxml>*/
   void setangles(real a0, real a1, real a2)
@@ -6478,7 +6478,7 @@
     coordsys Rc = cartesiansystem(c.C, (1, 0), (0, 1));
     line ll = changecoordsys(Rc, l);
     pair[] P = intersectionpoints(ll.A.coordinates, ll.B.coordinates,
-                                1, 0, 1, 0, 0, -c.r^2);
+                                  1, 0, 1, 0, 0, -c.r^2);
     for (int i = 0; i < P.length; ++i) {
       point inter = changecoordsys(R, point(Rc, P[i]));
       if(inter @ l) op.push(inter);
@@ -6518,7 +6518,7 @@
     coordsys Rc = canonicalcartesiansystem(el);
     line ll = changecoordsys(Rc, l);
     pair[] P = intersectionpoints(ll.A.coordinates, ll.B.coordinates,
-                                1/el.a^2, 0, 1/el.b^2, 0, 0, -1);
+                                  1/el.a^2, 0, 1/el.b^2, 0, 0, -1);
     for (int i = 0; i < P.length; ++i) {
       point inter = changecoordsys(R, point(Rc, P[i]));
       if(inter @ l) op.push(inter);
@@ -6575,7 +6575,7 @@
   point[] op;
   coordsys R = coordsys(h);
   point A = intersectionpoint(l, h.A1), B = intersectionpoint(l, h.A2);
-  point M = midpoint(segment(A, B));
+  point M = 0.5*(A + B);
   bool tgt = Finite(M) ? M @ h : false;
   if(tgt) {
     if(M @ l) op.push(M);
@@ -6644,7 +6644,7 @@
     if(abs(b[4]) > e) {
       real D=b[4]^2;
       c=new real[] {(a[0]*b[4]^2+a[2]*b[3]^2+
-                       (-2*a[2]*a[3])*b[3]+a[2]*a[3]^2)/D,
+                     (-2*a[2]*a[3])*b[3]+a[2]*a[3]^2)/D,
                     -((-2*a[2]*b[3]+2*a[2]*a[3])*b[5]-a[3]*b[4]^2+
                       (2*a[2]*a[5])*b[3])/D,a[2]*(a[5]-b[5])^2/D+a[5]};
       x=quadraticroots(c[0],c[1],c[2]);

Modified: trunk/Build/source/utils/asymptote/base/graph.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/graph.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/graph.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -42,14 +42,14 @@
     return x-skip;
   }
   real Tinv(real x) {
-    if(x <= a) return x; 
-    return x+skip; 
+    if(x <= a) return x;
+    return x+skip;
   }
   return scaleT(T,Tinv,logarithmic=false,automin,automax);
 }
 
 // A "broken" logarithmic axis omitting the segment [a,b], where a and b are
-// automatically rounded to the nearest integral power of the base.  
+// automatically rounded to the nearest integral power of the base.
 scaleT BrokenLog(real a, real b, bool automin=false, bool automax=automin)
 {
   real A=round(Log.T(a));
@@ -92,7 +92,7 @@
         Linear(zautoscale,zautoscale));
 }
 
-struct scientific 
+struct scientific
 {
   int sign;
   real mantissa;
@@ -108,7 +108,7 @@
 }
 
 // Convert x to scientific notation
-scientific scientific(real x) 
+scientific scientific(real x)
 {
   scientific s;
   s.sign=sgn(x);
@@ -154,7 +154,7 @@
 
 real upscale(real b, real a)
 {
-  if(b <= 5) b=5; 
+  if(b <= 5) b=5;
   else if (b > 10 && a >= 0 && b <= 12) b=12;
   else if (b > 10 && (a >= 0 || 15 % -a == 0) && b <= 15) b=15;
   else b=ceil(b/10)*10;
@@ -182,7 +182,7 @@
     if(Min > 0) {Min=0; Max *= 2;}
     else {Min *= 2; Max=0;}
   }
-  
+
   int sign;
   if(Min < 0 && Max <= 0) {real temp=-Min; Min=-Max; Max=temp; sign=-1;}
   else sign=1;
@@ -203,7 +203,7 @@
 
   while((b-a)*10.0^exp > 10*(Max-Min))
     zoom();
-  
+
   real bsave=b;
   if(b-a > (a >= 0 ? 8 : 6)) {
     b=upscale(b,a);
@@ -211,11 +211,11 @@
       if(a <= 5) a=0; else a=floor(a/10)*10;
     } else a=-upscale(-a,-1);
   }
-  
+
   // Redo b in case the value of a has changed
   if(bsave-a > (a >= 0 ? 8 : 6))
     b=upscale(bsave,a);
-  
+
   if(sign == -1) {real temp=-a; a=-b; b=temp;}
   real Scale=10.0^exp;
   m.min=scale.T(a*Scale);
@@ -266,7 +266,7 @@
 
 ticklabel LogFormat=LogFormat(10);
 ticklabel DefaultLogFormat=DefaultLogFormat(10);
-  
+
 // The default direction specifier.
 pair zero(real) {return 0;}
 
@@ -275,7 +275,7 @@
   autoscaleT S;        // Autoscaling transformation.
   pair dir(real t);    // Absolute 2D tick direction.
   triple dir3(real t); // Absolute 3D tick direction.
-  real time(real v);   // Returns the time corresponding to the value v. 
+  real time(real v);   // Returns the time corresponding to the value v.
   ticklocate copy() {
     ticklocate T=new ticklocate;
     T.a=a;
@@ -289,7 +289,7 @@
 }
 
 autoscaleT defaultS;
-  
+
 typedef real valuetime(real);
 
 valuetime linear(scalefcn S=identity, real Min, real Max)
@@ -300,7 +300,7 @@
 
 ticklocate ticklocate(real a, real b, autoscaleT S=defaultS,
                       real tickmin=-infinity, real tickmax=infinity,
-                      real time(real)=null, pair dir(real)=zero) 
+                      real time(real)=null, pair dir(real)=zero)
 {
   if((valuetime) time == null) time=linear(S.T(),a,b);
   ticklocate locate;
@@ -313,13 +313,13 @@
   locate.dir=dir;
   return locate;
 }
-                             
+
 private struct locateT {
   real t;       // tick location time
   pair Z;       // tick location in frame coordinates
   pair pathdir; // path direction in frame coordinates
   pair dir;     // tick direction in frame coordinates
-  
+
   void dir(transform T, path g, ticklocate locate, real t) {
     pathdir=unit(shiftless(T)*dir(g,t));
     pair Dir=locate.dir(t);
@@ -333,7 +333,7 @@
   }
 }
 
-pair ticklabelshift(pair align, pen p=currentpen) 
+pair ticklabelshift(pair align, pen p=currentpen)
 {
   return 0.25*unit(align)*labelmargin(p);
 }
@@ -347,7 +347,7 @@
     locate2.calc(T,g2,locate,val);
     draw(f,locate1.Z--locate2.Z,p);
   } else
-    if(sign == 0) 
+    if(sign == 0)
       draw(f,locate1.Z-Size*locate1.dir--locate1.Z+Size*locate1.dir,p);
     else
       draw(f,locate1.Z--locate1.Z+Size*sign*locate1.dir,p);
@@ -388,10 +388,10 @@
     label(d,F.T*baseline(s,baselinetemplate),locate1.Z+shift,align,F.p,
           F.filltype);
   return locate1.pathdir;
-}  
+}
 
 // Add axis label L to frame f.
-void labelaxis(frame f, transform T, Label L, path g, 
+void labelaxis(frame f, transform T, Label L, path g,
                ticklocate locate=null, int sign=1, bool ticklabels=false)
 {
   Label L0=L.copy();
@@ -403,7 +403,7 @@
     locateT locate1;
     locate1.dir(T,g,locate,t);
     L0.align(L0.align,unit(-sgn(dot(sign*locate1.dir,perp))*perp));
-  }                  
+  }
   pair align=L0.align.dir;
   if(L0.align.relative) align *= -perp;
   pair alignperp=dot(align,perp)*perp;
@@ -477,7 +477,7 @@
 
 // Check the tick coverage of a logarithmic axis.
 bool logaxiscoverage(int N, transform T, path g, ticklocate locate, pair side,
-                     int sign, real Size, Label F, ticklabel ticklabel, 
+                     int sign, real Size, Label F, ticklabel ticklabel,
                      real limit, int first, int last)
 {
   bool loop=cyclic(g);
@@ -525,7 +525,7 @@
   int n=0;
 
   bool Fixed=find(a >= 1e4-epsilon | (a > 0 & a <= 1e-4-epsilon)) < 0;
-  
+
   string Format=defaultformat(4,fixed=Fixed);
 
   if(Fixed && n < 4) {
@@ -576,13 +576,13 @@
   if(size == 0) size=ticksize;
   F=F.copy();
   F.p(p);
-    
+
   if(F.align.dir != 0) side=F.align.dir;
   else if(side == 0) side=((sign == 1) ? left : right);
-    
+
   bool ticklabels=false;
   path G=T*g;
-    
+
   if(!locate.S.scale.logarithmic) {
     real a=locate.S.Tinv(locate.a);
     real b=locate.S.Tinv(locate.b);
@@ -594,15 +594,15 @@
     if(a > b) {real temp=a; a=b; b=temp;}
 
     if(b-a < 100.0*epsilon*norm) b=a;
-      
+
     bool autotick=Step == 0 && N == 0;
-    
-    real tickmin=finite(locate.S.tickMin) && (autotick || locate.S.automin) ? 
+
+    real tickmin=finite(locate.S.tickMin) && (autotick || locate.S.automin) ?
       locate.S.Tinv(locate.S.tickMin) : a;
     real tickmax=finite(locate.S.tickMax) && (autotick || locate.S.automax) ?
       locate.S.Tinv(locate.S.tickMax) : b;
     if(tickmin > tickmax) {real temp=tickmin; tickmin=tickmax; tickmax=temp;}
-      
+
     real inStep=Step;
 
     bool calcStep=true;
@@ -630,7 +630,7 @@
                 // Try using 2 ticks (otherwise 1);
                 int div=divisor[d+1];
                 Step=quotient(div,2)*len/div;
-                calcStep=false; 
+                calcStep=false;
                 if(axiscoverage(2,T,g,locate,Step,side,sign,Size,F,ticklabel,
                                 norm,limit)) N=2;
                 else Step=len;
@@ -650,7 +650,7 @@
         }
       }
     }
-      
+
     if(inStep != 0 && !locate.S.automin) {
       tickmin=floor(tickmin/Step)*Step;
       len=tickmax-tickmin;
@@ -661,13 +661,13 @@
       if(N == 0) N=(int) (len/Step);
       else Step=len/N;
     }
-    
+
     if(n == 0) {
       if(step != 0) n=ceil(Step/step);
     } else step=Step/n;
-      
+
     b += epsilon*norm;
-      
+
     if(Size > 0) {
       for(int i=0; i <= N; ++i) {
         real val=tickmin+i*Step;
@@ -684,7 +684,7 @@
         }
       }
     }
-    
+
   } else { // Logarithmic
     string format=F.s;
     if(F.s == "%") F.s="";
@@ -691,15 +691,15 @@
 
     int base=round(locate.S.scale.Tinv(1));
 
-    if(ticklabel == null) 
+    if(ticklabel == null)
       ticklabel=format == "%" ? Format("") : DefaultLogFormat(base);
     real a=locate.S.postscale.Tinv(locate.a);
     real b=locate.S.postscale.Tinv(locate.b);
     if(a > b) {real temp=a; a=b; b=temp;}
-      
+
     int first=floor(a-epsilon);
     int last=ceil(b+epsilon);
-      
+
     if(N == 0) {
       N=1;
       while(N <= last-first) {
@@ -708,10 +708,10 @@
         ++N;
       }
     }
-      
+
     if(N <= 2 && n == 0) n=base;
     tickvalues.N=N;
-      
+
     if(N > 0) {
       for(int i=first-1; i <= last+1; ++i) {
         if(i >= a && i <= b)
@@ -725,7 +725,7 @@
         }
       }
     }
-  }     
+  }
   return tickvalues;
 }
 
@@ -732,7 +732,7 @@
 // Signature of routines that draw labelled paths with ticks and tick labels.
 typedef void ticks(frame, transform, Label, pair, path, path, pen,
                    arrowbar, margin, ticklocate, int[], bool opposite=false);
-                                          
+
 // Tick construction routine for a user-specified array of tick values.
 ticks Ticks(int sign, Label F="", ticklabel ticklabel=null,
             bool beginlabel=true, bool endlabel=true,
@@ -741,7 +741,7 @@
             real Size=0, real size=0, bool extend=false,
             pen pTick=nullpen, pen ptick=nullpen)
 {
-  return new void(frame f, transform t, Label L, pair side, path g, path g2, 
+  return new void(frame f, transform t, Label L, pair side, path g, path g2,
                   pen p, arrowbar arrow, margin margin, ticklocate locate,
                   int[] divisor, bool opposite) {
     // Use local copy of context variables:
@@ -749,12 +749,12 @@
     pen pTick=pTick;
     pen ptick=ptick;
     ticklabel ticklabel=ticklabel;
-    
+
     real Size=Size;
     real size=size;
     if(Size == 0) Size=Ticksize;
     if(size == 0) size=ticksize;
-    
+
     Label L=L.copy();
     Label F=F.copy();
     L.p(p);
@@ -761,16 +761,16 @@
     F.p(p);
     if(pTick == nullpen) pTick=p;
     if(ptick == nullpen) ptick=pTick;
-    
+
     if(F.align.dir != 0) side=F.align.dir;
     else if(side == 0) side=F.T*((sign == 1) ? left : right);
-    
+
     bool ticklabels=false;
     path G=t*g;
     path G2=t*g2;
-    
+
     scalefcn T;
-    
+
     real a,b;
     if(locate.S.scale.logarithmic) {
       a=locate.S.postscale.Tinv(locate.a);
@@ -781,11 +781,11 @@
       b=locate.S.Tinv(locate.b);
       T=identity;
     }
-    
+
     if(a > b) {real temp=a; a=b; b=temp;}
 
     real norm=max(abs(a),abs(b));
-    
+
     string format=autoformat(F.s,norm...Ticks);
     if(F.s == "%") F.s="";
     if(ticklabel == null) {
@@ -809,7 +809,7 @@
         drawtick(f,t,g,g2,locate,val,size,sign,ptick,extend);
     }
     endgroup(f);
-    
+
     if(N == 0) N=1;
     if(Size > 0 && !opposite) {
       for(int i=(beginlabel ? 0 : 1);
@@ -821,7 +821,7 @@
         }
       }
     }
-    if(L.s != "" && !opposite) 
+    if(L.s != "" && !opposite)
       labelaxis(f,t,L,G,locate,sign,ticklabels);
   };
 }
@@ -832,7 +832,7 @@
 
 // Tickmodifier that removes all ticks in the intervals [a[i],b[i]].
 tickmodifier OmitTickIntervals(real[] a, real[] b) {
-  return new tickvalues(tickvalues v) { 
+  return new tickvalues(tickvalues v) {
     if(a.length != b.length) abort(differentlengths);
     void omit(real[] A) {
       if(A.length != 0) {
@@ -939,8 +939,8 @@
                begin,end,modify,Size,size,extend,pTick,ptick);
 }
 
-ticks LeftTicks(Label format="", ticklabel ticklabel=null, 
-                bool beginlabel=true, bool endlabel=true, 
+ticks LeftTicks(Label format="", ticklabel ticklabel=null,
+                bool beginlabel=true, bool endlabel=true,
                 real[] Ticks, real[] ticks=new real[],
                 real Size=0, real size=0, bool extend=false,
                 pen pTick=nullpen, pen ptick=nullpen)
@@ -949,8 +949,8 @@
                Ticks,ticks,Size,size,extend,pTick,ptick);
 }
 
-ticks RightTicks(Label format="", ticklabel ticklabel=null, 
-                 bool beginlabel=true, bool endlabel=true, 
+ticks RightTicks(Label format="", ticklabel ticklabel=null,
+                 bool beginlabel=true, bool endlabel=true,
                  real[] Ticks, real[] ticks=new real[],
                  real Size=0, real size=0, bool extend=false,
                  pen pTick=nullpen, pen ptick=nullpen)
@@ -959,8 +959,8 @@
                Ticks,ticks,Size,size,extend,pTick,ptick);
 }
 
-ticks Ticks(Label format="", ticklabel ticklabel=null, 
-            bool beginlabel=true, bool endlabel=true, 
+ticks Ticks(Label format="", ticklabel ticklabel=null,
+            bool beginlabel=true, bool endlabel=true,
             real[] Ticks, real[] ticks=new real[],
             real Size=0, real size=0, bool extend=false,
             pen pTick=nullpen, pen ptick=nullpen)
@@ -978,18 +978,18 @@
 {
   return minbound(pic.userMin(),(pic.scale.x.tickMin,pic.scale.y.tickMin));
 }
-  
+
 pair tickMax(picture pic)
 {
   return maxbound(pic.userMax(),(pic.scale.x.tickMax,pic.scale.y.tickMax));
 }
-                                               
+
 int Min=-1;
 int Value=0;
 int Max=1;
 int Both=2;
 
-// Structure used to communicate axis and autoscale settings to tick routines. 
+// Structure used to communicate axis and autoscale settings to tick routines.
 struct axisT {
   int type;        // -1 = min, 0 = given value, 1 = max, 2 = min/max
   int type2;       // for 3D axis
@@ -1062,7 +1062,7 @@
   };
 }
 
-axis LeftRight(bool extend=false) 
+axis LeftRight(bool extend=false)
 {
   return new void(picture pic, axisT axis) {
     axis.type=Both;
@@ -1134,7 +1134,7 @@
 void axis(picture pic=currentpicture, Label L="", path g, path g2=nullpath,
           pen p=currentpen, ticks ticks, ticklocate locate,
           arrowbar arrow=None, margin margin=NoMargin,
-          int[] divisor=new int[], bool above=false, bool opposite=false) 
+          int[] divisor=new int[], bool above=false, bool opposite=false)
 {
   Label L=L.copy();
   real t=reltime(g,0.5);
@@ -1146,9 +1146,9 @@
       ticks(d,t,L,0,g,g2,p,arrow,margin,locate,divisor,opposite);
       (above ? add : prepend)(f,t*T*inverse(t)*d);
     });
-  
+
   pic.addPath(g,p);
-  
+
   if(L.s != "") {
     frame f;
     Label L0=L.copy();
@@ -1195,7 +1195,7 @@
         pic.scale.x.tickMax=mx.max;
         divisor=mx.divisor;
       }
-      
+
       real fuzz=epsilon*max(abs(a.x),abs(b.x));
       a -= (fuzz,0);
       b += (fuzz,0);
@@ -1211,8 +1211,8 @@
       y2=pic.scale.y.automax() ? tickMax(pic).y : pic.userMax().y;
       y=opposite ? y2 :
         (pic.scale.y.automin() ? tickMin(pic).y : pic.userMin().y);
-    } 
-    else if(type == Min) 
+    }
+    else if(type == Min)
       y=pic.scale.y.automin() ? tickMin(pic).y : pic.userMin().y;
     else if(type == Max)
       y=pic.scale.y.automax() ? tickMax(pic).y : pic.userMax().y;
@@ -1229,7 +1229,7 @@
       pic.addPoint(a,min(p));
       pic.addPoint(a,max(p));
     }
-  
+
     if(finite(b)) {
       pic.addPoint(b,min(p));
       pic.addPoint(b,max(p));
@@ -1299,13 +1299,13 @@
             ticklocate(a.y,b.y,pic.scale.y),divisor,opposite);
       (above ? add : prepend)(f,t*T*tinv*d);
     });
-  
+
   void bounds() {
     if(type == Both) {
       x2=pic.scale.x.automax() ? tickMax(pic).x : pic.userMax().x;
-      x=opposite ? x2 : 
+      x=opposite ? x2 :
         (pic.scale.x.automin() ? tickMin(pic).x : pic.userMin().x);
-    } else if(type == Min) 
+    } else if(type == Min)
       x=pic.scale.x.automin() ? tickMin(pic).x : pic.userMin().x;
     else if(type == Max)
       x=pic.scale.x.automax() ? tickMax(pic).x : pic.userMax().x;
@@ -1317,17 +1317,17 @@
     pair b=(x,Ymax);
     pair a2=(x2,Ymin);
     pair b2=(x2,Ymax);
-  
+
     if(finite(a)) {
       pic.addPoint(a,min(p));
       pic.addPoint(a,max(p));
     }
-  
+
     if(finite(b)) {
       pic.addPoint(b,min(p));
       pic.addPoint(b,max(p));
     }
-  
+
     if(finite(a) && finite(b)) {
       frame d;
       ticks(d,pic.scaling(warn=false),L,side,
@@ -1361,32 +1361,32 @@
              bool crop=NoCrop)
 {
   if(min > max) return;
-  
+
   pic.scale.x.automin=min <= -infinity;
   pic.scale.x.automax=max >= infinity;
-  
+
   bounds mx;
   if(pic.scale.x.automin() || pic.scale.x.automax())
     mx=autoscale(pic.userMin().x,pic.userMax().x,pic.scale.x.scale);
-  
+
   if(pic.scale.x.automin) {
     if(pic.scale.x.automin()) pic.userMinx(mx.min);
   } else pic.userMinx(min(pic.scale.x.T(min),pic.scale.x.T(max)));
-  
+
   if(pic.scale.x.automax) {
     if(pic.scale.x.automax()) pic.userMaxx(mx.max);
   } else pic.userMaxx(max(pic.scale.x.T(min),pic.scale.x.T(max)));
-  
+
   if(crop) {
     pair userMin=pic.userMin();
     pair userMax=pic.userMax();
     pic.bounds.xclip(userMin.x,userMax.x);
     pic.clip(userMin, userMax,
-      new void (frame f, transform t, transform T, pair, pair) {
-        frame Tinvf=T == identity() ? f : t*inverse(T)*inverse(t)*f;
-        clip(f,T*box(((t*userMin).x,(min(Tinvf)).y),
-                     ((t*userMax).x,(max(Tinvf)).y)));
-      });
+             new void (frame f, transform t, transform T, pair, pair) {
+               frame Tinvf=T == identity() ? f : t*inverse(T)*inverse(t)*f;
+               clip(f,T*box(((t*userMin).x,(min(Tinvf)).y),
+                            ((t*userMax).x,(max(Tinvf)).y)));
+             });
   }
 }
 
@@ -1395,37 +1395,37 @@
              bool crop=NoCrop)
 {
   if(min > max) return;
-  
+
   pic.scale.y.automin=min <= -infinity;
   pic.scale.y.automax=max >= infinity;
-  
+
   bounds my;
   if(pic.scale.y.automin() || pic.scale.y.automax())
     my=autoscale(pic.userMin().y,pic.userMax().y,pic.scale.y.scale);
-  
+
   if(pic.scale.y.automin) {
     if(pic.scale.y.automin()) pic.userMiny(my.min);
   } else pic.userMiny(min(pic.scale.y.T(min),pic.scale.y.T(max)));
-  
+
   if(pic.scale.y.automax) {
     if(pic.scale.y.automax()) pic.userMaxy(my.max);
   } else pic.userMaxy(max(pic.scale.y.T(min),pic.scale.y.T(max)));
-  
+
   if(crop) {
     pair userMin=pic.userMin();
     pair userMax=pic.userMax();
     pic.bounds.yclip(userMin.y,userMax.y);
-    pic.clip(userMin, userMax, 
-      new void (frame f, transform t, transform T, pair, pair) {
-        frame Tinvf=T == identity() ? f : t*inverse(T)*inverse(t)*f;
-        clip(f,T*box(((min(Tinvf)).x,(t*userMin).y),
-                     ((max(Tinvf)).x,(t*userMax).y)));
-      });
+    pic.clip(userMin, userMax,
+             new void (frame f, transform t, transform T, pair, pair) {
+               frame Tinvf=T == identity() ? f : t*inverse(T)*inverse(t)*f;
+               clip(f,T*box(((min(Tinvf)).x,(t*userMin).y),
+                            ((max(Tinvf)).x,(t*userMax).y)));
+             });
   }
 }
 
 // Crop a picture to the current user-space picture limits.
-void crop(picture pic=currentpicture) 
+void crop(picture pic=currentpicture)
 {
   xlimits(pic,false);
   ylimits(pic,false);
@@ -1441,7 +1441,7 @@
   if(crop && pic.userSetx() && pic.userSety())
     clip(pic,box(pic.userMin(),pic.userMax()));
 }
-  
+
 // Internal routine to autoscale the user limits of a picture.
 void autoscale(picture pic=currentpicture, axis axis)
 {
@@ -1448,7 +1448,7 @@
   if(!pic.scale.set) {
     bounds mx,my;
     pic.scale.set=true;
-    
+
     if(pic.userSetx()) {
       mx=autoscale(pic.userMin().x,pic.userMax().x,pic.scale.x.scale);
       if(pic.scale.x.scale.logarithmic &&
@@ -1459,7 +1459,7 @@
           pic.userMaxx2(ceil(pic.userMax().x));
       }
     } else {mx.min=mx.max=0; pic.scale.set=false;}
-    
+
     if(pic.userSety()) {
       my=autoscale(pic.userMin().y,pic.userMax().y,pic.scale.y.scale);
       if(pic.scale.y.scale.logarithmic &&
@@ -1470,7 +1470,7 @@
           pic.userMaxy2(ceil(pic.userMax().y));
       }
     } else {my.min=my.max=0; pic.scale.set=false;}
-    
+
     pic.scale.x.tickMin=mx.min;
     pic.scale.x.tickMax=mx.max;
     pic.scale.y.tickMin=my.min;
@@ -1487,7 +1487,7 @@
            bool above=false)
 {
   if(xmin > xmax) return;
-  
+
   if(pic.scale.x.automin && xmin > -infinity) pic.scale.x.automin=false;
   if(pic.scale.x.automax && xmax < infinity) pic.scale.x.automax=false;
 
@@ -1495,20 +1495,20 @@
     axis(pic,axis);
     autoscale(pic,axis);
   }
-  
+
   Label L=L.copy();
   bool newticks=false;
-  
+
   if(xmin != -infinity) {
     xmin=pic.scale.x.T(xmin);
     newticks=true;
   }
-  
+
   if(xmax != infinity) {
     xmax=pic.scale.x.T(xmax);
     newticks=true;
   }
-  
+
   if(newticks && pic.userSetx() && ticks != NoTicks) {
     if(xmin == -infinity) xmin=pic.userMin().x;
     if(xmax == infinity) xmax=pic.userMax().x;
@@ -1517,9 +1517,9 @@
     pic.scale.x.tickMax=mx.max;
     axis.xdivisor=mx.divisor;
   }
-  
+
   axis(pic,axis);
-  
+
   if(xmin == -infinity && !axis.extend) {
     if(pic.scale.set)
       xmin=pic.scale.x.automin() ? pic.scale.x.tickMin :
@@ -1526,7 +1526,7 @@
         max(pic.scale.x.tickMin,pic.userMin().x);
     else xmin=pic.userMin().x;
   }
-  
+
   if(xmax == infinity && !axis.extend) {
     if(pic.scale.set)
       xmax=pic.scale.x.automax() ? pic.scale.x.tickMax :
@@ -1536,7 +1536,7 @@
 
   if(L.defaultposition) L.position(axis.position);
   L.align(L.align,axis.align);
-  
+
   xaxisAt(pic,L,axis,xmin,xmax,p,ticks,arrow,margin,above);
   if(axis.type == Both)
     xaxisAt(pic,L,axis,xmin,xmax,p,ticks,arrow,margin,above,true);
@@ -1552,25 +1552,25 @@
 
   if(pic.scale.y.automin && ymin > -infinity) pic.scale.y.automin=false;
   if(pic.scale.y.automax && ymax < infinity) pic.scale.y.automax=false;
-  
+
   if(!pic.scale.set) {
     axis(pic,axis);
     autoscale(pic,axis);
   }
-  
+
   Label L=L.copy();
   bool newticks=false;
-  
+
   if(ymin != -infinity) {
     ymin=pic.scale.y.T(ymin);
     newticks=true;
   }
-  
+
   if(ymax != infinity) {
     ymax=pic.scale.y.T(ymax);
     newticks=true;
   }
-  
+
   if(newticks && pic.userSety() && ticks != NoTicks) {
     if(ymin == -infinity) ymin=pic.userMin().y;
     if(ymax == infinity) ymax=pic.userMax().y;
@@ -1579,9 +1579,9 @@
     pic.scale.y.tickMax=my.max;
     axis.ydivisor=my.divisor;
   }
-  
+
   axis(pic,axis);
-  
+
   if(ymin == -infinity && !axis.extend) {
     if(pic.scale.set)
       ymin=pic.scale.y.automin() ? pic.scale.y.tickMin :
@@ -1588,8 +1588,8 @@
         max(pic.scale.y.tickMin,pic.userMin().y);
     else ymin=pic.userMin().y;
   }
-  
-  
+
+
   if(ymax == infinity && !axis.extend) {
     if(pic.scale.set)
       ymax=pic.scale.y.automax() ? pic.scale.y.tickMax :
@@ -1599,14 +1599,14 @@
 
   if(L.defaultposition) L.position(axis.position);
   L.align(L.align,axis.align);
-  
+
   if(autorotate && L.defaulttransform) {
     frame f;
     add(f,Label(L.s,(0,0),L.p));
-    if(length(max(f)-min(f)) > ylabelwidth*fontsize(L.p)) 
+    if(length(max(f)-min(f)) > ylabelwidth*fontsize(L.p))
       L.transform(rotate(90));
   }
-  
+
   yaxisAt(pic,L,axis,ymin,ymax,p,ticks,arrow,margin,above);
   if(axis.type == Both)
     yaxisAt(pic,L,axis,ymin,ymax,p,ticks,arrow,margin,above,true);
@@ -1627,7 +1627,7 @@
 void xequals(picture pic=currentpicture, Label L="", real x,
              bool extend=false, real ymin=-infinity, real ymax=infinity,
              pen p=currentpen, ticks ticks=NoTicks,
-             arrowbar arrow=None, margin margin=NoMargin, bool above=true) 
+             arrowbar arrow=None, margin margin=NoMargin, bool above=true)
 {
   yaxis(pic,L,XEquals(x,extend),ymin,ymax,p,ticks,arrow,margin,above);
 }
@@ -1682,7 +1682,7 @@
 }
 
 void ytick(picture pic=currentpicture, explicit pair z, pair dir=E,
-           real size=Ticksize, pen p=currentpen) 
+           real size=Ticksize, pen p=currentpen)
 {
   tick(pic,z,dir,size,p);
 }
@@ -1799,7 +1799,7 @@
   bounds a=autoscale(pic.userMin().x,pic.userMax().x,pic.scale.x.scale);
   real bmin=pic.scale.x.automin() ? a.min : pic.userMin().x;
   real bmax=pic.scale.x.automax() ? a.max : pic.userMax().x;
-  
+
   real denom=bmax-bmin;
   if(denom != 0) {
     pic.erase();
@@ -1849,7 +1849,7 @@
 
 typedef guide graph(pair f(real), real, real, int);
 typedef guide[] multigraph(pair f(real), real, real, int);
-                       
+
 graph graph(interpolate join)
 {
   return new guide(pair f(real), real a, real b, int n) {
@@ -2055,7 +2055,7 @@
 }
 
 // Connect points in z into segments corresponding to consecutive true elements
-// of b using interpolation operator join. 
+// of b using interpolation operator join.
 path[] segment(pair[] z, bool[] cond, interpolate join=operator --)
 {
   checkconditionlength(cond.length,z.length);
@@ -2102,7 +2102,7 @@
   if(dmy != dpy) draw(pic,Scale(pic,z+(0,dmy))--Scale(pic,z+(0,dpy)),p,
                       Bars(size));
 }
-  
+
 void errorbars(picture pic=currentpicture, pair[] z, pair[] dp, pair[] dm={},
                bool[] cond={}, pen p=currentpen, real size=0)
 {
@@ -2157,13 +2157,13 @@
     real x=(n == 1) ? 0.5 : i/(n-1);
     if(truesize)
       draw(relpoint(g,x),pic,vector(x),p,arrow);
-    else 
+    else
       draw(pic,shift(relpoint(g,x))*vector(x),p,arrow,margin);
   }
   return pic;
 }
 
-real maxlength(pair a, pair b, int nx, int ny) 
+real maxlength(pair a, pair b, int nx, int ny)
 {
   return min((b.x-a.x)/nx,(b.y-a.y)/ny);
 }

Modified: trunk/Build/source/utils/asymptote/base/graph3.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/graph3.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/graph3.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -9,7 +9,7 @@
 
 ticklocate ticklocate(real a, real b, autoscaleT S=defaultS,
                       real tickmin=-infinity, real tickmax=infinity,
-                      real time(real)=null, direction3 dir) 
+                      real time(real)=null, direction3 dir)
 {
   if((valuetime) time == null) time=linear(S.T(),a,b);
   ticklocate locate;
@@ -23,13 +23,13 @@
   locate.dir3=dir;
   return locate;
 }
-                             
+
 private struct locateT {
   real t;         // tick location time
   triple V;       // tick location in frame coordinates
   triple pathdir; // path direction in frame coordinates
   triple dir;     // tick direction in frame coordinates
-  
+
   void dir(transform3 T, path3 g, ticklocate locate, real t) {
     pathdir=unit(shiftless(T)*dir(g,t));
     triple Dir=locate.dir3(t);
@@ -60,7 +60,7 @@
   draw(pic,G,p,name="tick");
 }
 
-triple ticklabelshift(triple align, pen p=currentpen) 
+triple ticklabelshift(triple align, pen p=currentpen)
 {
   return 0.25*unit(align)*labelmargin(p);
 }
@@ -100,10 +100,10 @@
   if(s != "")
     label(pic,F.defaulttransform3 ? baseline(s,baselinetemplate) : F.T3*s,v,
           align,F.p);
-}  
+}
 
 // Add axis label L to frame f.
-void labelaxis(picture pic, transform3 T, Label L, path3 g, 
+void labelaxis(picture pic, transform3 T, Label L, path3 g,
                ticklocate locate=null, int sign=1, bool ticklabels=false)
 {
   triple m=pic.min(identity4);
@@ -118,7 +118,7 @@
       picture F;
       if(L.align.dir3 == O)
         align=unit(invert(L.align.dir,v,P))*abs(L.align.dir);
-      
+
       if(ticklabels && locate != null && piecewisestraight(g)) {
         locateT locate1;
         locate1.dir(T,g,locate,t);
@@ -171,12 +171,12 @@
     pen pTick=pTick;
     pen ptick=ptick;
     ticklabel ticklabel=ticklabel;
-    
+
     real Size=Size;
     real size=size;
     if(Size == 0) Size=Ticksize;
     if(size == 0) size=ticksize;
-    
+
     Label L=L.copy();
     Label F=F.copy();
     L.p(p);
@@ -183,13 +183,13 @@
     F.p(p);
     if(pTick == nullpen) pTick=p;
     if(ptick == nullpen) ptick=pTick;
-    
+
     bool ticklabels=false;
     path3 G=t*g;
     path3 G2=t*g2;
-    
+
     scalefcn T;
-    
+
     real a,b;
     if(locate.S.scale.logarithmic) {
       a=locate.S.postscale.Tinv(locate.a);
@@ -200,11 +200,11 @@
       b=locate.S.Tinv(locate.b);
       T=identity;
     }
-    
+
     if(a > b) {real temp=a; a=b; b=temp;}
 
     real norm=max(abs(a),abs(b));
-    
+
     string format=autoformat(F.s,norm...Ticks);
     if(F.s == "%") F.s="";
     if(ticklabel == null) {
@@ -324,8 +324,8 @@
                 begin,end,modify,Size,size,extend,pTick,ptick);
 }
 
-ticks3 InTicks(Label format="", ticklabel ticklabel=null, 
-               bool beginlabel=true, bool endlabel=true, 
+ticks3 InTicks(Label format="", ticklabel ticklabel=null,
+               bool beginlabel=true, bool endlabel=true,
                real[] Ticks, real[] ticks=new real[],
                real Size=0, real size=0, bool extend=false,
                pen pTick=nullpen, pen ptick=nullpen)
@@ -334,8 +334,8 @@
                 Ticks,ticks,Size,size,extend,pTick,ptick);
 }
 
-ticks3 OutTicks(Label format="", ticklabel ticklabel=null, 
-                bool beginlabel=true, bool endlabel=true, 
+ticks3 OutTicks(Label format="", ticklabel ticklabel=null,
+                bool beginlabel=true, bool endlabel=true,
                 real[] Ticks, real[] ticks=new real[],
                 real Size=0, real size=0, bool extend=false,
                 pen pTick=nullpen, pen ptick=nullpen)
@@ -344,8 +344,8 @@
                 Ticks,ticks,Size,size,extend,pTick,ptick);
 }
 
-ticks3 InOutTicks(Label format="", ticklabel ticklabel=null, 
-                  bool beginlabel=true, bool endlabel=true, 
+ticks3 InOutTicks(Label format="", ticklabel ticklabel=null,
+                  bool beginlabel=true, bool endlabel=true,
                   real[] Ticks, real[] ticks=new real[],
                   real Size=0, real size=0, bool extend=false,
                   pen pTick=nullpen, pen ptick=nullpen)
@@ -362,15 +362,15 @@
 triple tickMin3(picture pic)
 {
   return minbound(pic.userMin(),(pic.scale.x.tickMin,pic.scale.y.tickMin,
-                                  pic.scale.z.tickMin));
+                                 pic.scale.z.tickMin));
 }
-  
+
 triple tickMax3(picture pic)
 {
   return maxbound(pic.userMax(),(pic.scale.x.tickMax,pic.scale.y.tickMax,
-                                  pic.scale.z.tickMax));
+                                 pic.scale.z.tickMax));
 }
-                                               
+
 axis Bounds(int type=Both, int type2=Both, triple align=O, bool extend=false)
 {
   return new void(picture pic, axisT axis) {
@@ -470,7 +470,7 @@
 void axis(picture pic=currentpicture, Label L="", path3 g, path3 g2=nullpath3,
           pen p=currentpen, ticks3 ticks, ticklocate locate,
           arrowbar3 arrow=None, margin3 margin=NoMargin3,
-          int[] divisor=new int[], bool above=false, bool opposite=false) 
+          int[] divisor=new int[], bool above=false, bool opposite=false)
 {
   Label L=L.copy();
   real t=reltime(g,0.5);
@@ -477,15 +477,15 @@
   if(L.defaultposition) L.position(t);
   divisor=copy(divisor);
   locate=locate.copy();
-  
+
   pic.add(new void (picture f, transform3 t, transform3 T, triple, triple) {
       picture d;
       ticks(d,t,L,g,g2,p,arrow,margin,locate,divisor,opposite,true);
       add(f,t*T*inverse(t)*d);
     },above=above);
-  
+
   addPath(pic,g,p);
-  
+
   if(L.s != "") {
     frame f;
     Label L0=L.copy();
@@ -552,7 +552,7 @@
               y0=y2;
               z0=z;
             }
-            
+
             triple a2=xmin == -infinity ? tinv*(lb.x-min3(p).x,ytrans(t,y0),
                                                 ztrans(t,z0)) : (xmin,y0,z0);
             triple b2=xmax == infinity ? tinv*(rt.x-max3(p).x,ytrans(t,y0),
@@ -564,7 +564,7 @@
               pic.scale.x.tickMax=mx.max;
               divisor=mx.divisor;
             }
-      
+
             triple fuzz=X*epsilon*max(abs(a.x),abs(b.x));
             a -= fuzz;
             b += fuzz;
@@ -584,7 +584,7 @@
       y=pic.scale.y.automax() ? tickMax3(pic).y : pic.userMax().y;
     else if(type == Both) {
       y2=pic.scale.y.automax() ? tickMax3(pic).y : pic.userMax().y;
-      y=opposite ? y2 : 
+      y=opposite ? y2 :
         (pic.scale.y.automin() ? tickMin3(pic).y : pic.userMin().y);
     }
 
@@ -594,7 +594,7 @@
       z=pic.scale.z.automax() ? tickMax3(pic).z : pic.userMax().z;
     else if(type2 == Both) {
       z2=pic.scale.z.automax() ? tickMax3(pic).z : pic.userMax().z;
-      z=opposite2 ? z2 : 
+      z=opposite2 ? z2 :
         (pic.scale.z.automin() ? tickMin3(pic).z : pic.userMin().z);
     }
 
@@ -610,7 +610,7 @@
       pic.addPoint(a,min3(p));
       pic.addPoint(a,max3(p));
     }
-  
+
     if(finite(b)) {
       pic.addPoint(b,min3(p));
       pic.addPoint(b,max3(p));
@@ -650,7 +650,7 @@
   pic.scale.x.bound.push(bounds);
 }
 
-// An internal routine to draw an x axis at a particular y value.
+// An internal routine to draw a y axis at a particular value.
 void yaxis3At(picture pic=currentpicture, Label L="", axis axis,
               real ymin=-infinity, real ymax=infinity, pen p=currentpen,
               ticks3 ticks=NoTicks3,
@@ -685,12 +685,12 @@
               x0=x2;
               z0=z;
             }
-            
+
             triple a2=ymin == -infinity ? tinv*(xtrans(t,x0),lb.y-min3(p).y,
                                                 ztrans(t,z0)) : (x0,ymin,z0);
             triple b2=ymax == infinity ? tinv*(xtrans(t,x0),rt.y-max3(p).y,
                                                ztrans(t,z0)) : (x0,ymax,z0);
- 
+
             if(ymin == -infinity || ymax == infinity) {
               bounds my=autoscale(a.y,b.y,pic.scale.y.scale);
               pic.scale.y.tickMin=my.min;
@@ -697,7 +697,7 @@
               pic.scale.y.tickMax=my.max;
               divisor=my.divisor;
             }
-      
+
             triple fuzz=Y*epsilon*max(abs(a.y),abs(b.y));
             a -= fuzz;
             b += fuzz;
@@ -717,7 +717,7 @@
       x=pic.scale.x.automax() ? tickMax3(pic).x : pic.userMax().x;
     else if(type == Both) {
       x2=pic.scale.x.automax() ? tickMax3(pic).x : pic.userMax().x;
-      x=opposite ? x2 : 
+      x=opposite ? x2 :
         (pic.scale.x.automin() ? tickMin3(pic).x : pic.userMin().x);
     }
 
@@ -727,7 +727,7 @@
       z=pic.scale.z.automax() ? tickMax3(pic).z : pic.userMax().z;
     else if(type2 == Both) {
       z2=pic.scale.z.automax() ? tickMax3(pic).z : pic.userMax().z;
-      z=opposite2 ? z2 : 
+      z=opposite2 ? z2 :
         (pic.scale.z.automin() ? tickMin3(pic).z : pic.userMin().z);
     }
 
@@ -743,7 +743,7 @@
       pic.addPoint(a,min3(p));
       pic.addPoint(a,max3(p));
     }
-  
+
     if(finite(b)) {
       pic.addPoint(b,min3(p));
       pic.addPoint(b,max3(p));
@@ -783,7 +783,7 @@
   pic.scale.y.bound.push(bounds);
 }
 
-// An internal routine to draw an x axis at a particular y value.
+// An internal routine to draw a z axis at a particular value.
 void zaxis3At(picture pic=currentpicture, Label L="", axis axis,
               real zmin=-infinity, real zmax=infinity, pen p=currentpen,
               ticks3 ticks=NoTicks3,
@@ -818,7 +818,7 @@
               x0=x2;
               y0=y;
             }
-            
+
             triple a2=zmin == -infinity ? tinv*(xtrans(t,x0),ytrans(t,y0),
                                                 lb.z-min3(p).z) : (x0,y0,zmin);
             triple b2=zmax == infinity ? tinv*(xtrans(t,x0),ytrans(t,y0),
@@ -830,7 +830,7 @@
               pic.scale.z.tickMax=mz.max;
               divisor=mz.divisor;
             }
-      
+
             triple fuzz=Z*epsilon*max(abs(a.z),abs(b.z));
             a -= fuzz;
             b += fuzz;
@@ -850,7 +850,7 @@
       x=pic.scale.x.automax() ? tickMax3(pic).x : pic.userMax().x;
     else if(type == Both) {
       x2=pic.scale.x.automax() ? tickMax3(pic).x : pic.userMax().x;
-      x=opposite ? x2 : 
+      x=opposite ? x2 :
         (pic.scale.x.automin() ? tickMin3(pic).x : pic.userMin().x);
     }
 
@@ -860,7 +860,7 @@
       y=pic.scale.y.automax() ? tickMax3(pic).y : pic.userMax().y;
     else if(type2 == Both) {
       y2=pic.scale.y.automax() ? tickMax3(pic).y : pic.userMax().y;
-      y=opposite2 ? y2 : 
+      y=opposite2 ? y2 :
         (pic.scale.y.automin() ? tickMin3(pic).y : pic.userMin().y);
     }
 
@@ -876,7 +876,7 @@
       pic.addPoint(a,min3(p));
       pic.addPoint(a,max3(p));
     }
-  
+
     if(finite(b)) {
       pic.addPoint(b,min3(p));
       pic.addPoint(b,max3(p));
@@ -934,7 +934,7 @@
           pic.userMaxz3(ceil(pic.userMax().z));
       }
     } else {mz.min=mz.max=0; pic.scale.set=false;}
-    
+
     pic.scale.z.tickMin=mz.min;
     pic.scale.z.tickMax=mz.max;
     axis.zdivisor=mz.divisor;
@@ -948,7 +948,7 @@
             arrowbar3 arrow=None, margin3 margin=NoMargin3, bool above=false)
 {
   if(xmin > xmax) return;
-  
+
   if(pic.scale.x.automin && xmin > -infinity) pic.scale.x.automin=false;
   if(pic.scale.x.automax && xmax < infinity) pic.scale.x.automax=false;
 
@@ -956,19 +956,19 @@
     axis(pic,axis);
     autoscale3(pic,axis);
   }
-  
+
   bool newticks=false;
-  
+
   if(xmin != -infinity) {
     xmin=pic.scale.x.T(xmin);
     newticks=true;
   }
-  
+
   if(xmax != infinity) {
     xmax=pic.scale.x.T(xmax);
     newticks=true;
   }
-  
+
   if(newticks && pic.userSetx() && ticks != NoTicks3) {
     if(xmin == -infinity) xmin=pic.userMin().x;
     if(xmax == infinity) xmax=pic.userMax().x;
@@ -977,9 +977,9 @@
     pic.scale.x.tickMax=mx.max;
     axis.xdivisor=mx.divisor;
   }
-  
+
   axis(pic,axis);
-  
+
   if(xmin == -infinity && !axis.extend) {
     if(pic.scale.set)
       xmin=pic.scale.x.automin() ? pic.scale.x.tickMin :
@@ -986,7 +986,7 @@
         max(pic.scale.x.tickMin,pic.userMin().x);
     else xmin=pic.userMin().x;
   }
-  
+
   if(xmax == infinity && !axis.extend) {
     if(pic.scale.set)
       xmax=pic.scale.x.automax() ? pic.scale.x.tickMax :
@@ -998,7 +998,7 @@
     L=L.copy();
     L.position(axis.position);
   }
-  
+
   bool back=false;
   if(axis.type == Both) {
     triple v=currentprojection.normal;
@@ -1025,24 +1025,24 @@
 
   if(pic.scale.y.automin && ymin > -infinity) pic.scale.y.automin=false;
   if(pic.scale.y.automax && ymax < infinity) pic.scale.y.automax=false;
-  
+
   if(!pic.scale.set) {
     axis(pic,axis);
     autoscale3(pic,axis);
   }
-  
+
   bool newticks=false;
-  
+
   if(ymin != -infinity) {
     ymin=pic.scale.y.T(ymin);
     newticks=true;
   }
-  
+
   if(ymax != infinity) {
     ymax=pic.scale.y.T(ymax);
     newticks=true;
   }
-  
+
   if(newticks && pic.userSety() && ticks != NoTicks3) {
     if(ymin == -infinity) ymin=pic.userMin().y;
     if(ymax == infinity) ymax=pic.userMax().y;
@@ -1051,9 +1051,9 @@
     pic.scale.y.tickMax=my.max;
     axis.ydivisor=my.divisor;
   }
-  
+
   axis(pic,axis);
-  
+
   if(ymin == -infinity && !axis.extend) {
     if(pic.scale.set)
       ymin=pic.scale.y.automin() ? pic.scale.y.tickMin :
@@ -1060,8 +1060,8 @@
         max(pic.scale.y.tickMin,pic.userMin().y);
     else ymin=pic.userMin().y;
   }
-  
-  
+
+
   if(ymax == infinity && !axis.extend) {
     if(pic.scale.set)
       ymax=pic.scale.y.automax() ? pic.scale.y.tickMax :
@@ -1073,7 +1073,7 @@
     L=L.copy();
     L.position(axis.position);
   }
-  
+
   bool back=false;
   if(axis.type == Both) {
     triple v=currentprojection.normal;
@@ -1100,24 +1100,24 @@
 
   if(pic.scale.z.automin && zmin > -infinity) pic.scale.z.automin=false;
   if(pic.scale.z.automax && zmax < infinity) pic.scale.z.automax=false;
-  
+
   if(!pic.scale.set) {
     axis(pic,axis);
     autoscale3(pic,axis);
   }
-  
+
   bool newticks=false;
-  
+
   if(zmin != -infinity) {
     zmin=pic.scale.z.T(zmin);
     newticks=true;
   }
-  
+
   if(zmax != infinity) {
     zmax=pic.scale.z.T(zmax);
     newticks=true;
   }
-  
+
   if(newticks && pic.userSetz() && ticks != NoTicks3) {
     if(zmin == -infinity) zmin=pic.userMin().z;
     if(zmax == infinity) zmax=pic.userMax().z;
@@ -1126,9 +1126,9 @@
     pic.scale.z.tickMax=mz.max;
     axis.zdivisor=mz.divisor;
   }
-  
+
   axis(pic,axis);
-  
+
   if(zmin == -infinity && !axis.extend) {
     if(pic.scale.set)
       zmin=pic.scale.z.automin() ? pic.scale.z.tickMin :
@@ -1135,7 +1135,7 @@
         max(pic.scale.z.tickMin,pic.userMin().z);
     else zmin=pic.userMin().z;
   }
-  
+
   if(zmax == infinity && !axis.extend) {
     if(pic.scale.set)
       zmax=pic.scale.z.automax() ? pic.scale.z.tickMax :
@@ -1147,7 +1147,7 @@
     L=L.copy();
     L.position(axis.position);
   }
-  
+
   bool back=false;
   if(axis.type == Both) {
     triple v=currentprojection.vector();
@@ -1169,18 +1169,18 @@
              bool crop=NoCrop)
 {
   if(min > max) return;
-  
+
   pic.scale.z.automin=min <= -infinity;
   pic.scale.z.automax=max >= infinity;
-  
+
   bounds mz;
   if(pic.scale.z.automin() || pic.scale.z.automax())
     mz=autoscale(pic.userMin().z,pic.userMax().z,pic.scale.z.scale);
-  
+
   if(pic.scale.z.automin) {
     if(pic.scale.z.automin()) pic.userMinz(mz.min);
   } else pic.userMinz(min(pic.scale.z.T(min),pic.scale.z.T(max)));
-  
+
   if(pic.scale.z.automax) {
     if(pic.scale.z.automax()) pic.userMaxz(mz.max);
   } else pic.userMaxz(max(pic.scale.z.T(min),pic.scale.z.T(max)));
@@ -1193,10 +1193,10 @@
   ylimits(pic,min.y,max.y);
   zlimits(pic,min.z,max.z);
 }
-  
+
 // Draw x, y and z axes.
 void axes3(picture pic=currentpicture,
-           Label xlabel="", Label ylabel="", Label zlabel="", 
+           Label xlabel="", Label ylabel="", Label zlabel="",
            bool extend=false,
            triple min=(-infinity,-infinity,-infinity),
            triple max=(infinity,infinity,infinity),
@@ -1212,11 +1212,50 @@
   return (pic.scale.x.T(v.x),pic.scale.y.T(v.y),pic.scale.z.T(v.z));
 }
 
+triple[][] Scale(picture pic=currentpicture, triple[][] P)
+{
+  triple[][] Q=new triple[P.length][];
+  for(int i=0; i < P.length; ++i) {
+    triple[] Pi=P[i];
+    Q[i]=new triple[Pi.length];
+    for(int j=0; j < Pi.length; ++j)
+      Q[i][j]=Scale(pic,Pi[j]);
+  }
+  return Q;
+}
+
+real ScaleX(picture pic=currentpicture, real x)
+{
+  return pic.scale.x.T(x);
+}
+
+real ScaleY(picture pic=currentpicture, real y)
+{
+  return pic.scale.y.T(y);
+}
+
 real ScaleZ(picture pic=currentpicture, real z)
 {
   return pic.scale.z.T(z);
 }
 
+real[][] ScaleZ(picture pic=currentpicture, real[][] P)
+{
+  real[][] Q=new real[P.length][];
+  for(int i=0; i < P.length; ++i) {
+    real[] Pi=P[i];
+    Q[i]=new real[Pi.length];
+    for(int j=0; j < Pi.length; ++j)
+      Q[i][j]=ScaleZ(pic,Pi[j]);
+  }
+  return Q;
+}
+
+real[] uniform(real T(real x), real Tinv(real x), real a, real b, int n)
+{
+  return map(Tinv,uniform(T(a),T(b),n));
+}
+
 // Draw a tick of length size at triple v in direction dir using pen p.
 void tick(picture pic=currentpicture, triple v, triple dir, real size=Ticksize,
           pen p=currentpen)
@@ -1240,11 +1279,11 @@
             real size=Ticksize, pen p=currentpen)
 {
   tick(pic,(x,pic.scale.y.scale.logarithmic ? 1 : 0,
-             pic.scale.z.scale.logarithmic ? 1 : 0),dir,size,p);
+            pic.scale.z.scale.logarithmic ? 1 : 0),dir,size,p);
 }
 
 void ytick(picture pic=currentpicture, triple v, triple dir=X,
-           real size=Ticksize, pen p=currentpen) 
+           real size=Ticksize, pen p=currentpen)
 {
   tick(pic,v,dir,size,p);
 }
@@ -1257,7 +1296,7 @@
 }
 
 void ztick(picture pic=currentpicture, triple v, triple dir=X,
-           real size=Ticksize, pen p=currentpen) 
+           real size=Ticksize, pen p=currentpen)
 {
   xtick(pic,v,dir,size,p);
 }
@@ -1294,7 +1333,7 @@
             string format="", real size=Ticksize, pen p=currentpen)
 {
   xtick(pic,L,(x,pic.scale.y.scale.logarithmic ? 1 : 0,
-              pic.scale.z.scale.logarithmic ? 1 : 0),dir,size,p);
+               pic.scale.z.scale.logarithmic ? 1 : 0),dir,size,p);
 }
 
 void ytick(picture pic=currentpicture, Label L, triple v, triple dir=X,
@@ -1307,7 +1346,7 @@
             string format="", real size=Ticksize, pen p=currentpen)
 {
   xtick(pic,L,(pic.scale.x.scale.logarithmic ? 1 : 0,y,
-              pic.scale.z.scale.logarithmic ? 1 : 0),dir,format,size,p);
+               pic.scale.z.scale.logarithmic ? 1 : 0),dir,format,size,p);
 }
 
 void ztick(picture pic=currentpicture, Label L, triple v, triple dir=X,
@@ -1320,7 +1359,7 @@
             string format="", real size=Ticksize, pen p=currentpen)
 {
   xtick(pic,L,(pic.scale.x.scale.logarithmic ? 1 : 0,
-              pic.scale.z.scale.logarithmic ? 1 : 0,z),dir,format,size,p);
+               pic.scale.z.scale.logarithmic ? 1 : 0,z),dir,format,size,p);
 }
 
 private void label(picture pic, Label L, triple v, real x, align align,
@@ -1416,7 +1455,7 @@
 
 guide3 Straight(... guide3[])=operator --;
 guide3 Spline(... guide3[])=operator ..;
-                       
+
 guide3 graph(picture pic=currentpicture, real x(real), real y(real),
              real z(real), real a, real b, int n=ngraph,
              interpolate3 join=operator --)
@@ -1519,12 +1558,12 @@
 
 guide3 graph(triple F(pair), path p, int n=1, interpolate3 join=operator --)
 {
-  return graph(new triple(path p, real position) 
+  return graph(new triple(path p, real position)
                {return F(point(p,position));},p,n,join);
 }
 
 guide3 graph(picture pic=currentpicture, real f(pair), path p, int n=1,
-             interpolate3 join=operator --) 
+             interpolate3 join=operator --)
 {
   return graph(new triple(pair z) {return Scale(pic,(z.x,z.y,f(z)));},p,n,
                join);
@@ -1538,7 +1577,7 @@
 }
 
 // Connect points in v into segments corresponding to consecutive true elements
-// of b using interpolation operator join. 
+// of b using interpolation operator join.
 path3[] segment(triple[] v, bool[] cond, interpolate3 join=operator --)
 {
   checkconditionlength(cond.length,v.length);
@@ -1596,13 +1635,13 @@
 }
 
 // return the surface described by a matrix f
-surface surface(triple[][] f, bool[][] cond={})
+surface surface(picture pic=currentpicture, triple[][] f, bool[][] cond={})
 {
   if(!rectangular(f)) abort("matrix is not rectangular");
-  
+
   int nx=f.length-1;
   int ny=nx > 0 ? f[0].length-1 : 0;
-  
+
   bool all=cond.length == 0;
 
   int count;
@@ -1632,7 +1671,11 @@
     int[] indexi=s.index[i];
     for(int j=0; j < ny; ++j) {
       if(all || (condi[j] && condi[j+1] && condp[j] && condp[j+1]))
-        s.s[++k]=patch(new triple[] {fi[j],fp[j],fp[j+1],fi[j+1]});
+        s.s[++k]=patch(new triple[] {
+            Scale(pic,fi[j]),
+              Scale(pic,fp[j]),
+              Scale(pic,fp[j+1]),
+              Scale(pic,fi[j+1])});
       indexi[j]=k;
     }
   }
@@ -1708,14 +1751,15 @@
         real zppmppp=zpp-hx*pp[jp];
         real zijqij=zij+hy*qi[j];
         real zpjqpj=zpj+hy*qp[j];
-        
+
         s.s[k]=patch(new triple[][] {
-          {(xi,yj,zij),(xi,y1,zijqij),(xi,y2,zip-qip),(xi,yp,zip)},
-          {(x1,yj,zij+pij),(x1,y1,zijqij+pij+hxy*ri[j]),
-           (x1,y2,zippip-qip-hxy*ri[jp]),(x1,yp,zippip)},
-          {(x2,yj,zpj-ppj),(x2,y1,zpjqpj-ppj-hxy*rp[j]),
-           (x2,y2,zppmppp-qpp+hxy*rp[jp]),(x2,yp,zppmppp)},
-          {(xp,yj,zpj),(xp,y1,zpjqpj),(xp,y2,zpp-qpp),(xp,yp,zpp)}},copy=false);
+            {(xi,yj,zij),(xi,y1,zijqij),(xi,y2,zip-qip),(xi,yp,zip)},
+              {(x1,yj,zij+pij),(x1,y1,zijqij+pij+hxy*ri[j]),
+                  (x1,y2,zippip-qip-hxy*ri[jp]),(x1,yp,zippip)},
+                {(x2,yj,zpj-ppj),(x2,y1,zpjqpj-ppj-hxy*rp[j]),
+                    (x2,y2,zppmppp-qpp+hxy*rp[jp]),(x2,yp,zppmppp)},
+                  {(xp,yj,zpj),(xp,y1,zpjqpj),(xp,y2,zpp-qpp),(xp,yp,zpp)}},
+          copy=false);
         indexi[j]=k;
         ++k;
       }
@@ -1787,11 +1831,11 @@
         real zpjqpj=zpj+hy*qp[j];
 
         s[k]=new real[][] {{zij,zijqij,zip-qip,zip},
-                           {zij+pij,zijqij+pij+hxy*ri[j],
-                            zippip-qip-hxy*ri[jp],zippip},
-                           {zpj-ppj,zpjqpj-ppj-hxy*rp[j],
-                            zppmppp-qpp+hxy*rp[jp],zppmppp},
-                           {zpj,zpjqpj,zpp-qpp,zpp}};
+                                        {zij+pij,zijqij+pij+hxy*ri[j],
+                                            zippip-qip-hxy*ri[jp],zippip},
+                                          {zpj-ppj,zpjqpj-ppj-hxy*rp[j],
+                                              zppmppp-qpp+hxy*rp[jp],zppmppp},
+                                            {zpj,zpjqpj,zpp-qpp,zpp}};
         ++k;
       }
     }
@@ -1831,10 +1875,15 @@
 
 // return the surface described by a real matrix f, interpolated with
 // xsplinetype and ysplinetype.
-surface surface(real[][] f, real[] x, real[] y,
-                splinetype xsplinetype=null, splinetype ysplinetype=xsplinetype,
+surface surface(picture pic=currentpicture, real[][] f, real[] x, real[] y,
+                splinetype xsplinetype=null,
+                splinetype ysplinetype=xsplinetype,
                 bool[][] cond={})
 {
+  real[][] f=ScaleZ(pic,f);
+  real[] x=map(pic.scale.x.T,x);
+  real[] y=map(pic.scale.y.T,y);
+
   real epsilon=sqrtEpsilon*norm(y);
   if(xsplinetype == null)
     xsplinetype=(abs(x[0]-x[x.length-1]) <= epsilon) ? periodic : notaknot;
@@ -1863,8 +1912,9 @@
 
 // return the surface described by a real matrix f, interpolated with
 // xsplinetype and ysplinetype.
-surface surface(real[][] f, pair a, pair b, splinetype xsplinetype,
-                splinetype ysplinetype=xsplinetype, bool[][] cond={})
+surface surface(picture pic=currentpicture, real[][] f, pair a, pair b,
+                splinetype xsplinetype, splinetype ysplinetype=xsplinetype,
+                bool[][] cond={})
 {
   if(!rectangular(f)) abort("matrix is not rectangular");
 
@@ -1873,13 +1923,14 @@
 
   if(nx == 0 || ny == 0) return nullsurface;
 
-  real[] x=uniform(a.x,b.x,nx);
-  real[] y=uniform(a.y,b.y,ny);
-  return surface(f,x,y,xsplinetype,ysplinetype,cond);
+  real[] x=uniform(pic.scale.x.T,pic.scale.x.Tinv,a.x,b.x,nx);
+  real[] y=uniform(pic.scale.y.T,pic.scale.y.Tinv,a.y,b.y,ny);
+  return surface(pic,f,x,y,xsplinetype,ysplinetype,cond);
 }
 
 // return the surface described by a real matrix f, interpolated linearly.
-surface surface(real[][] f, pair a, pair b, bool[][] cond={})
+surface surface(picture pic=currentpicture, real[][] f, pair a, pair b,
+                bool[][] cond={})
 {
   if(!rectangular(f)) abort("matrix is not rectangular");
 
@@ -1891,22 +1942,25 @@
   bool all=cond.length == 0;
 
   triple[][] v=new triple[nx+1][ny+1];
+
+  pair a=Scale(pic,a);
+  pair b=Scale(pic,b);
   for(int i=0; i <= nx; ++i) {
-    real x=interp(a.x,b.x,i/nx);
+    real x=pic.scale.x.Tinv(interp(a.x,b.x,i/nx));
     bool[] condi=all ? null : cond[i];
     triple[] vi=v[i];
     real[] fi=f[i];
     for(int j=0; j <= ny; ++j)
       if(all || condi[j])
-        vi[j]=(x,interp(a.y,b.y,j/ny),fi[j]);
+        vi[j]=(x,pic.scale.y.Tinv(interp(a.y,b.y,j/ny)),fi[j]);
   }
-  return surface(v,cond);
+  return surface(pic,v,cond);
 }
 
 // return the surface described by a parametric function f over box(a,b),
 // interpolated linearly.
-surface surface(triple f(pair z), pair a, pair b, int nu=nmesh, int nv=nu,
-                bool cond(pair z)=null)
+surface surface(picture pic=currentpicture, triple f(pair z), pair a, pair b,
+                int nu=nmesh, int nv=nu, bool cond(pair z)=null)
 {
   if(nu <= 0 || nv <= 0) return nullsurface;
 
@@ -1921,23 +1975,25 @@
 
   triple[][] v=new triple[nu+1][nv+1];
 
+  pair a=Scale(pic,a);
+  pair b=Scale(pic,b);
   for(int i=0; i <= nu; ++i) {
-    real x=interp(a.x,b.x,i*du);
+    real x=pic.scale.x.Tinv(interp(a.x,b.x,i*du));
     bool[] activei=all ? null : active[i];
     triple[] vi=v[i];
     for(int j=0; j <= nv; ++j) {
-      pair z=(x,interp(a.y,b.y,j*dv));
+      pair z=(x,pic.scale.y.Tinv(interp(a.y,b.y,j*dv)));
       if(all || (activei[j]=cond(z))) vi[j]=f(z);
     }
   }
-  return surface(v,active);
+  return surface(pic,v,active);
 }
-  
+
 // return the surface described by a parametric function f evaluated at u and v
 // and interpolated with usplinetype and vsplinetype.
-surface surface(triple f(pair z), real[] u, real[] v,
-                splinetype[] usplinetype, splinetype[] vsplinetype=Spline,
-                bool cond(pair z)=null)
+surface surface(picture pic=currentpicture, triple f(pair z),
+                real[] u, real[] v, splinetype[] usplinetype,
+                splinetype[] vsplinetype=Spline, bool cond(pair z)=null)
 {
   int nu=u.length-1;
   int nv=v.length-1;
@@ -1960,7 +2016,7 @@
     for(int j=0; j <= nv; ++j) {
       pair z=(ui,v[j]);
       if(!all) activei[j]=cond(z);
-      triple f=f(z);
+      triple f=Scale(pic,f(z));
       fxi[j]=f.x;
       fyi[j]=f.y;
       fzi[j]=f.z;
@@ -2020,27 +2076,30 @@
 
 // return the surface described by a parametric function f over box(a,b),
 // interpolated with usplinetype and vsplinetype.
-surface surface(triple f(pair z), pair a, pair b, int nu=nmesh, int nv=nu,
+surface surface(picture pic=currentpicture, triple f(pair z), pair a, pair b,
+                int nu=nmesh, int nv=nu,
                 splinetype[] usplinetype, splinetype[] vsplinetype=Spline,
                 bool cond(pair z)=null)
 {
-  return surface(f,uniform(a.x,b.x,nu),uniform(a.y,b.y,nv),
-                 usplinetype,vsplinetype,cond);
+  real[] x=uniform(pic.scale.x.T,pic.scale.x.Tinv,a.x,b.x,nu);
+  real[] y=uniform(pic.scale.y.T,pic.scale.y.Tinv,a.y,b.y,nv);
+  return surface(pic,f,x,y,usplinetype,vsplinetype,cond);
 }
 
 // return the surface described by a real function f over box(a,b),
 // interpolated linearly.
-surface surface(real f(pair z), pair a, pair b, int nx=nmesh, int ny=nx,
-                bool cond(pair z)=null)
+surface surface(picture pic=currentpicture, real f(pair z), pair a, pair b,
+                int nx=nmesh, int ny=nx, bool cond(pair z)=null)
 {
-  return surface(new triple(pair z) {return (z.x,z.y,f(z));},a,b,nx,ny,cond);
+  return surface(pic,new triple(pair z) {return (z.x,z.y,f(z));},a,b,nx,ny,
+                 cond);
 }
 
 // return the surface described by a real function f over box(a,b),
 // interpolated with xsplinetype and ysplinetype.
-surface surface(real f(pair z), pair a, pair b, int nx=nmesh, int ny=nx,
-                splinetype xsplinetype, splinetype ysplinetype=xsplinetype,
-                bool cond(pair z)=null)
+surface surface(picture pic=currentpicture, real f(pair z), pair a, pair b,
+                int nx=nmesh, int ny=nx, splinetype xsplinetype,
+                splinetype ysplinetype=xsplinetype, bool cond(pair z)=null)
 {
   bool[][] active;
   bool all=cond == null;
@@ -2052,8 +2111,8 @@
   pair dz=(dx,dy);
 
   real[][] F=new real[nx+1][ny+1];
-  real[] x=uniform(a.x,b.x,nx);
-  real[] y=uniform(a.y,b.y,ny);
+  real[] x=uniform(pic.scale.x.T,pic.scale.x.Tinv,a.x,b.x,nx);
+  real[] y=uniform(pic.scale.y.T,pic.scale.y.Tinv,a.y,b.y,ny);
   for(int i=0; i <= nx; ++i) {
     bool[] activei=all ? null : active[i];
     real[] Fi=F[i];
@@ -2064,7 +2123,7 @@
       if(!all) activei[j]=cond(z);
     }
   }
-  return surface(F,x,y,xsplinetype,ysplinetype,active);
+  return surface(pic,F,x,y,xsplinetype,ysplinetype,active);
 }
 
 guide3[][] lift(real f(real x, real y), guide[][] g,
@@ -2128,7 +2187,7 @@
        render,interaction);
 }
 
-real maxlength(triple f(pair z), pair a, pair b, int nu, int nv) 
+real maxlength(triple f(pair z), pair a, pair b, int nu, int nv)
 {
   return min(abs(f((b.x,a.y))-f(a))/nu,abs(f((a.x,b.y))-f(a))/nv);
 }

Modified: trunk/Build/source/utils/asymptote/base/graph_splinetype.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/graph_splinetype.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/graph_splinetype.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -13,7 +13,7 @@
     abort(text+": "+string(x)+" != "+string(y));
 }
 
-void checkincreasing(real[] x) 
+void checkincreasing(real[] x)
 {
   if(!increasing(x,true))
     abort("strictly increasing array expected");
@@ -114,7 +114,7 @@
 // Standard cubic spline interpolation with the natural condition
 // s''(a)=s''(b)=0.
 // if n=2, linear interpolation is returned
-// Don't use the natural type unless the underlying function 
+// Don't use the natural type unless the underlying function
 // has zero second end points derivatives.
 real[] natural(real[] x, real[] y)
 {
@@ -186,25 +186,25 @@
 
 // Piecewise Cubic Hermite Interpolating Polynomial (PCHIP)
 // Modified MATLAB code
-// [1] Fritsch, F. N. and R. E. Carlson, 
-//      "Monotone Piecewise Cubic Interpolation," 
+// [1] Fritsch, F. N. and R. E. Carlson,
+//      "Monotone Piecewise Cubic Interpolation,"
 //      SIAM J. Numerical Analysis, Vol. 17, 1980, pp.238-246.
-// [2] Kahaner, David, Cleve Moler, Stephen Nash, 
+// [2] Kahaner, David, Cleve Moler, Stephen Nash,
 //      Numerical Methods and Software, Prentice Hall, 1988.
-real[] monotonic(real[] x, real[] y) 
+real[] monotonic(real[] x, real[] y)
 {
-  int n=x.length; 
+  int n=x.length;
   checklengths(n,y.length);
   checkincreasing(x);
-  real[] d=new real[n]; 
+  real[] d=new real[n];
   if(n > 2) {
     real[] h=new real[n-1];
     real[] del=new real[n-1];
     for(int i=0; i < n-1; ++i) {
-      h[i]=x[i+1]-x[i]; 
-      del[i]=(y[i+1]-y[i])/h[i]; 
-    } 
-    int j=0; 
+      h[i]=x[i+1]-x[i];
+      del[i]=(y[i+1]-y[i])/h[i];
+    }
+    int j=0;
     int k[]=new int[];
     for(int i=0; i < n-2; ++i)
       if((sgn(del[i])*sgn(del[i+1])) > 0) {k[j]=i; j=j+1;}
@@ -220,10 +220,10 @@
       w2[i]=(h[k[i]+1]+hs[i])/(3*hs[i]);
       dmax[i]=max(abs(del[k[i]]),abs(del[k[i]+1]));
       dmin[i]=min(abs(del[k[i]]),abs(del[k[i]+1]));
-    } 
+    }
     for(int i=0; i < n; ++i) d[i]=0;
     for(int i=0; i < j; ++i)
-      d[k[i]+1]=dmin[i]/(w1[i]*(del[k[i]]/dmax[i])+w2[i]*(del[k[i]+1]/dmax[i])); 
+      d[k[i]+1]=dmin[i]/(w1[i]*(del[k[i]]/dmax[i])+w2[i]*(del[k[i]+1]/dmax[i]));
     d[0]=((2*h[0]+h[1])*del[0]-h[0]*del[1])/(h[0]+h[1]);
     if(sgn(d[0]) != sgn(del[0])) {d[0]=0;}
     else if((sgn(del[0]) != sgn(del[1])) && (abs(d[0]) > abs(3*del[0])))
@@ -238,7 +238,7 @@
     d[0]=d[1]=(y[1]-y[0])/(x[1]-x[0]);
   } else abort(morepoints);
   return d;
-} 
+}
 
 // Return standard cubic spline interpolation as a guide
 guide hermite(real[] x, real[] y, splinetype splinetype=null)

Modified: trunk/Build/source/utils/asymptote/base/grid3.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/grid3.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/grid3.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -259,7 +259,7 @@
                        N,n,Step,step,begin,end,
                        Size,size,false,pTick,ptick);
       otg.grid3=new void(picture pic, bool above) {
-        grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
+                                                   grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
       };
       return otg;
     };
@@ -280,7 +280,7 @@
       otg.ticks=Ticks3(-1,F,ticklabel,beginlabel,endlabel,N,n,Step,step,
                        begin,end,Size,size,false,pTick,ptick);
       otg.grid3=new void(picture pic, bool above) {
-        grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
+                                                   grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
       };
       return otg;
     };
@@ -301,7 +301,7 @@
       otg.ticks=Ticks3(1,F,ticklabel,beginlabel,endlabel,N,n,Step,step,
                        begin,end,Size,size,false,pTick,ptick);
       otg.grid3=new void(picture pic, bool above) {
-        grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
+                                                   grid3(pic,gridroutine,N,n,Step,step,begin,end,pGrid,pgrid,above);
       };
       return otg;
     };

Modified: trunk/Build/source/utils/asymptote/base/interpolate.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/interpolate.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/interpolate.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -7,8 +7,8 @@
 // and values y_0,...,y_n in the array y,
 
 // hdiffdiv(x,y,dyp) computes Newton's Divided Difference for
-// Hermite interpolation where dyp={dy_0,...,dy_n}. 
-// 
+// Hermite interpolation where dyp={dy_0,...,dy_n}.
+//
 // fhorner(x,coeff) uses Horner's rule to compute the polynomial
 // a_0+a_1(x-x_0)+a_2(x-x_0)(x-x_1)+...+a_n(x-x_0)..(x-x_{n-1}),
 // where coeff={a_0,a_1,...,a_n}.
@@ -54,7 +54,7 @@
     return s;
   };
 }
-      
+
 // Newton's Divided Difference method: n(n-1)/2 divisions, n(n-1) additions.
 horner diffdiv(real[] x, real[] y)
 {
@@ -136,5 +136,5 @@
   real[] dy=splinetype(x,y);
   return new real(real t) {
     return pwhermite(x,y,dy)(t);
-  }; 
+  };
 }

Modified: trunk/Build/source/utils/asymptote/base/labelpath3.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/labelpath3.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/labelpath3.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -21,7 +21,7 @@
 }
 
 // Modification of the bishop frame construction contained in
-// space_tube.asy (from Philippe Ivaldi's modules). 
+// space_tube.asy (from Philippe Ivaldi's modules).
 // For noncyclic path3s only
 triple[] nextframe(path3 p, real reltimestart, triple[] start, real
                    reltimeend, int subdiv=20)
@@ -40,7 +40,7 @@
   }
   return bf[subdiv];
 }
-  
+
 surface labelpath(string s, path3 p, real angle=90, triple optional=O)
 {
   real Cos=Cos(angle);
@@ -48,10 +48,10 @@
   path[] text=texpath(Label(s,(0,0),Align,basealign));
   text=scale(1/(max(text).x-min(text).x))*text;
   path[][] decompose=containmentTree(text);
-        
+
   real[][] xpos=new real[decompose.length][2];
   surface sf;
-  for(int i=0; i < decompose.length; ++i) {// Identify positions along x-axis   
+  for(int i=0; i < decompose.length; ++i) {// Identify positions along x-axis
     xpos[i][1]=i;
     real pos0=0.5(max(decompose[i]).x+min(decompose[i]).x);
     xpos[i][0]=pos0;

Deleted: trunk/Build/source/utils/asymptote/base/latin1.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/latin1.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/latin1.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1,2 +0,0 @@
-usepackage("fontenc","T1");
-usepackage("inputenc","latin1");

Modified: trunk/Build/source/utils/asymptote/base/lmfit.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/lmfit.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/lmfit.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -58,31 +58,31 @@
 private real LM_USERTOL = 30 * LM_MACHEP;
 
 restricted string lm_infmsg[] = {
-  "improper input parameters",
-  "the relative error in the sum of squares is at most tol",
-  "the relative error between x and the solution is at most tol",
-  "both errors are at most tol",
-  "fvec is orthogonal to the columns of the jacobian to machine precision",
-  "number of calls to fcn has reached or exceeded maxcall*(n+1)",
-  "ftol is too small: no further reduction in the sum of squares is possible",
-  "xtol too small: no further improvement in approximate solution x possible",
-  "gtol too small: no further improvement in approximate solution x possible",
-  "not enough memory",
-  "break requested within function evaluation"
+                                 "improper input parameters",
+                                 "the relative error in the sum of squares is at most tol",
+                                 "the relative error between x and the solution is at most tol",
+                                 "both errors are at most tol",
+                                 "fvec is orthogonal to the columns of the jacobian to machine precision",
+                                 "number of calls to fcn has reached or exceeded maxcall*(n+1)",
+                                 "ftol is too small: no further reduction in the sum of squares is possible",
+                                 "xtol too small: no further improvement in approximate solution x possible",
+                                 "gtol too small: no further improvement in approximate solution x possible",
+                                 "not enough memory",
+                                 "break requested within function evaluation"
 };
 
 restricted string lm_shortmsg[] = {
-  "invalid input",
-  "success (f)",
-  "success (p)",
-  "success (f,p)",
-  "degenerate",
-  "call limit",
-  "failed (f)",
-  "failed (p)",
-  "failed (o)",
-  "no memory",
-  "user break"
+                                   "invalid input",
+                                   "success (f)",
+                                   "success (p)",
+                                   "success (f,p)",
+                                   "degenerate",
+                                   "call limit",
+                                   "failed (f)",
+                                   "failed (p)",
+                                   "failed (o)",
+                                   "no memory",
+                                   "user break"
 };
 
 
@@ -91,7 +91,7 @@
   real[] user_t;
   real[] user_y;
   real[] user_w;
-  real user_func(real user_t_point, real[] par);  
+  real user_func(real user_t_point, real[] par);
 };
 
 
@@ -99,7 +99,7 @@
 // the int and real types
 struct lm_int_type {
   int val;
-  
+
   void operator init(int val) {
     this.val = val;
   }
@@ -108,7 +108,7 @@
 
 struct lm_real_type {
   real val;
-  
+
   void operator init(real val) {
     this.val = val;
   }
@@ -402,7 +402,7 @@
       }
       break;
     }
-    
+
     sdiag[j] = r[j * ldr + j];
     r[j * ldr + j] = x[j];
   }
@@ -508,10 +508,10 @@
     dxnorm = lm_enorm(n, wa2);
     fp_old = fp;
     fp = dxnorm - delta;
-        
+
     if (fabs(fp) <= p1 * delta || (parl == 0.0 && fp <= fp_old && fp_old < 0.0) || iter == 10)
       break;
-        
+
     for (j = 0; j < n; ++j)
       wa1[j] = diag[ipvt[j]] * wa2[ipvt[j]] / dxnorm;
 
@@ -522,12 +522,12 @@
     }
     temp = lm_enorm(n, wa1);
     parc = fp / delta / temp / temp;
-    
+
     if (fp > 0)
       parl = max(parl, par.val);
     else if (fp < 0)
       paru = min(paru, par.val);
-    
+
     par.val = max(parl, par.val + parc);
   }
 }
@@ -540,7 +540,7 @@
   static real p25 = 0.25;
   static real p75 = 0.75;
   static real p0001 = 1.0e-4;
-  
+
   nfev.val = 0;
   int iter = 1;
   lm_real_type par = lm_real_type(0);
@@ -563,7 +563,7 @@
       }
     }
   }
-  
+
   info.val = 0;
   evaluate(x, m, fvec, data, info);
   if(printout != null) printout(n, x, m, fvec, data, 0, 0, ++nfev.val);
@@ -587,7 +587,7 @@
         fjac[j * m + i] = (wa4[i] - fvec[i]) / (x[j] - temp);
       x[j] = temp;
     }
-    
+
     lm_qrfac(m, n, fjac, true, ipvt, wa1, wa2, wa3);
 
     if (iter == 1) {
@@ -695,7 +695,7 @@
         delta = pnorm / p5;
         par.val *= p5;
       }
-      
+
       if (ratio >= p0001) {
         for (j = 0; j < n; ++j) {
           x[j] = wa2[j];
@@ -735,7 +735,7 @@
 void lm_minimize(int m_dat, int n_par, real[] par, lm_evaluate_ftype evaluate, lm_print_ftype printout, lm_data_type data, lm_control_type control) {
   int n = n_par;
   int m = m_dat;
-  
+
   real[] fvec = new real[m];
   real[] diag = new real[n];
   real[] qtf = new real[n];
@@ -838,13 +838,13 @@
   int n_par = parameters.length;
   lm_evaluate_ftype evaluate = lm_evaluate_default;
   lm_print_ftype printout = control.verbose ? lm_print_default : lm_print_quiet;
-  
+
   lm_data_type data;
   data.user_t = xdata;
   data.user_y = ydata;
   data.user_w = 1 / errors;
   data.user_func = new real(real x, real[] params) {
-    return function(params, x);
+                                                    return function(params, x);
   };
 
   lm_control_type ctrl;
@@ -856,7 +856,7 @@
   ctrl.maxcall = control.maxIterations;
 
   lm_minimize(m_dat, n_par, parameters, evaluate, printout, data, ctrl);
-  
+
   return FitResult(ctrl.fnorm, ctrl.nfev.val, ctrl.info.val);
 }
 

Added: trunk/Build/source/utils/asymptote/base/map.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/map.asy	                        (rev 0)
+++ trunk/Build/source/utils/asymptote/base/map.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -0,0 +1,40 @@
+// Create a struct <name> parameterized by types <key> and <value>,
+// that maps keys to values, defaulting to the value in <default>.
+void mapTemplate(string name, string key, string value, string default)
+{
+  type(key,"Key");
+  type(value,"Value");
+  eval("Value default="+default,true);
+
+  eval("
+  struct keyValue {
+    Key key;
+    Value T;
+    void operator init(Key key) {
+      this.key=key;
+    }
+    void operator init(Key key, Value T) {
+      this.key=key;
+      this.T=T;
+    }
+  }
+
+  struct map {
+    keyValue[] M;
+    bool operator < (keyValue a, keyValue b) {return a.key < b.key;}
+
+    void add(Key key, Value T) {
+      keyValue m=keyValue(key,T);
+      M.insert(search(M,m,operator <)+1,m);
+    }
+    Value lookup(Key key) {
+      int i=search(M,keyValue(key),operator <);
+      if(i >= 0 && M[i].key == key) return M[i].T;
+      return default;
+    }
+  }
+",true);
+
+  type("map",name);
+}
+

Modified: trunk/Build/source/utils/asymptote/base/math.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/math.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/math.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -30,7 +30,7 @@
   picture pic;
   for(int i=0; i <= Nx; ++i) draw(pic,(i,0)--(i,Ny),p);
   for(int j=0; j <= Ny; ++j) draw(pic,(0,j)--(Nx,j),p);
-  return pic; 
+  return pic;
 }
 
 bool polygon(path p)
@@ -55,7 +55,7 @@
   real denom=n.x*(Q.x-P.x)+n.y*(Q.y-P.y)+n.z*(Q.z-P.z);
   return denom == 0 ? infinity : (d-n.x*P.x-n.y*P.y-n.z*P.z)/denom;
 }
-                    
+
 // Return any point on the intersection of the two planes with normals
 // n0 and n1 passing through points P0 and P1, respectively.
 // If the planes are parallel return (infinity,infinity,infinity).
@@ -293,7 +293,7 @@
     },true);
 }
 
-real interpolate(real[] x, real[] y, real x0, int i) 
+real interpolate(real[] x, real[] y, real x0, int i)
 {
   int n=x.length;
   if(n == 0) abort("Zero data points in interpolate");
@@ -317,7 +317,7 @@
 // real[] x are listed in ascending order and return y0. Values outside the
 // available data range are linearly extrapolated using the first derivative
 // at the nearest endpoint.
-real interpolate(real[] x, real[] y, real x0) 
+real interpolate(real[] x, real[] y, real x0)
 {
   return interpolate(x,y,x0,search(x,x0));
 }
@@ -378,7 +378,7 @@
   // Remove roots at numerical infinity.
   if(abs(a) <= Fuzz*(abs(b)+Fuzz*(abs(c)+Fuzz*(abs(d)+Fuzz*abs(e)))))
     return cubicroots(b,c,d,e);
-  
+
   // Detect roots at numerical zero.
   if(abs(e) <= Fuzz*(abs(d)+Fuzz*(abs(c)+Fuzz*(abs(b)+Fuzz*abs(a)))))
     return cubicroots(a,b,c,d);
@@ -388,7 +388,7 @@
   c *= ainv;
   d *= ainv;
   e *= ainv;
-  
+
   pair[] roots;
   real[] T=cubicroots(1,-2c,c^2+b*d-4e,d^2+b^2*e-b*c*d);
   if(T.length == 0) return roots;
@@ -434,13 +434,13 @@
   real[] solution=solve(AtA(A),b*A,warn=false);
   if (solution.length == 0 && warn)
     abort("Cannot compute least-squares approximation for " +
-	  "a matrix with linearly dependent columns.");
+          "a matrix with linearly dependent columns.");
   return solution;
 }
 
 // Namespace
 struct rootfinder_settings {
-  static real roottolerance = 1e-4;
+  static real roottolerance=1e-4;
 }
 
 real findroot(real f(real), real a, real b,

Modified: trunk/Build/source/utils/asymptote/base/metapost.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/metapost.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/metapost.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -2,7 +2,7 @@
 
 path cuttings;
 
-path cutbefore(path p, path q) 
+path cutbefore(path p, path q)
 {
   slice s=firstcut(p,q);
   cuttings=s.before;
@@ -9,7 +9,7 @@
   return s.after;
 }
 
-path cutafter(path p, path q) 
+path cutafter(path p, path q)
 {
   slice s=lastcut(p,q);
   cuttings=s.after;

Modified: trunk/Build/source/utils/asymptote/base/obj.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/obj.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/obj.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1,7 +1,7 @@
 // A module for reading simple obj files with groups.
 // Authors: Jens Schwaiger and John Bowman
 //
-// Here simple means that : 
+// Here simple means that :
 //
 // 1) all vertex statements should come before the face statements;
 //

Modified: trunk/Build/source/utils/asymptote/base/ode.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/ode.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/ode.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -14,7 +14,7 @@
   int order;
   coefficients a;
   void stepDependence(real h, real c, coefficients a) {}
-   
+
   real pgrow;
   real pshrink;
   bool exponential;
@@ -54,7 +54,7 @@
   if(fabs(x) > 1) return (exp(x)-x-1)/x2;
   real x3=x2*x;
   real x5=x2*x3;
-  if(fabs(x) < 0.1) 
+  if(fabs(x) < 0.1)
     return Coeff[1]+x*Coeff[2]+x2*Coeff[3]+x3*Coeff[4]+x2*x2*Coeff[5]
       +x5*Coeff[6]+x3*x3*Coeff[7]+x5*x2*Coeff[8]+x5*x3*Coeff[9];
     else {
@@ -73,7 +73,7 @@
   real x3=x2*x;
   if(fabs(x) > 1.6) return (exp(x)-0.5*x2-x-1)/x3;
   real x5=x2*x3;
-  if(fabs(x) < 0.1) 
+  if(fabs(x) < 0.1)
     return Coeff[2]+x*Coeff[3]+x2*Coeff[4]+x3*Coeff[5]
       +x2*x2*Coeff[6]+x5*Coeff[7]+x3*x3*Coeff[8]+x5*x2*Coeff[9]
       +x5*x3*Coeff[10];
@@ -90,13 +90,13 @@
     }
 }
 
-void expfactors(real x, coefficients a) 
+void expfactors(real x, coefficients a)
 {
   for(int i=0; i < a.steps.length; ++i)
     a.factors[i]=exp(x*a.steps[i]);
   a.factors[a.steps.length]=exp(x);
 }
-      
+
 // First-Order Euler
 RKTableau Euler=RKTableau(1,new real[][], new real[] {1});
 
@@ -185,40 +185,40 @@
 
 // Fifth-Order Cash-Karp Runge-Kutta
 RKTableau RK5=RKTableau(5,new real[][] {{1/5},
-                                        {3/40,9/40},
-                                        {3/10,-9/10,6/5},
-                                        {-11/54,5/2,-70/27,35/27},
-                                        {1631/55296,175/512,575/13824,
-                                         44275/110592,253/4096}},
+                                          {3/40,9/40},
+                                            {3/10,-9/10,6/5},
+                                              {-11/54,5/2,-70/27,35/27},
+                                                {1631/55296,175/512,575/13824,
+                                                    44275/110592,253/4096}},
   new real[] {37/378,0,250/621,125/594,
-              0,512/1771},  // 5th order
+                0,512/1771},  // 5th order
   new real[] {2825/27648,0,18575/48384,13525/55296,
-              277/14336,1/4}); // 4th order
+                277/14336,1/4}); // 4th order
 
 // Fifth-Order Fehlberg Runge-Kutta
 RKTableau RK5F=RKTableau(5,new real[][] {{1/4},
-                                         {3/32,9/32},
-                                         {1932/2197,-7200/2197,7296/2197},
-                                         {439/216,-8,3680/513,-845/4104},
-                                         {-8/27,2,-3544/2565,1859/4104,
-                                          -11/40}},
+                                           {3/32,9/32},
+                                             {1932/2197,-7200/2197,7296/2197},
+                                               {439/216,-8,3680/513,-845/4104},
+                                                 {-8/27,2,-3544/2565,1859/4104,
+                                                     -11/40}},
   new real[] {16/135,0,6656/12825,28561/56430,-9/50,2/55}, // 5th order
   new real[] {25/216,0,1408/2565,2197/4104,-1/5,0}); // 4th order
 
 // Fifth-Order Dormand-Prince Runge-Kutta
 RKTableau RK5DP=RKTableau(5,new real[][] {{1/5},
-                                          {3/40,9/40},
-                                          {44/45,-56/15,32/9},
-                                          {19372/6561,-25360/2187,64448/6561,
-                                           -212/729},
-                                          {9017/3168,-355/33,46732/5247,49/176,
-                                           -5103/18656}},
+                                            {3/40,9/40},
+                                              {44/45,-56/15,32/9},
+                                                {19372/6561,-25360/2187,64448/6561,
+                                                    -212/729},
+                                                  {9017/3168,-355/33,46732/5247,49/176,
+                                                      -5103/18656}},
   new real[] {35/384,0,500/1113,125/192,-2187/6784,
-              11/84}, // 5th order
+                11/84}, // 5th order
   new real[] {5179/57600,0,7571/16695,393/640,
-              -92097/339200,187/2100,1/40}); // 4th order
+                -92097/339200,187/2100,1/40}); // 4th order
 
-real error(real error, real initial, real lowOrder, real norm, real diff) 
+real error(real error, real initial, real lowOrder, real norm, real diff)
 {
   if(initial != 0 && lowOrder != initial) {
     static real epsilon=realMin/realEpsilon;
@@ -249,7 +249,7 @@
   real[] y;
 }
 
-void write(solution S) 
+void write(solution S)
 {
   for(int i=0; i < S.t.length; ++i)
     write(S.t[i],S.y[i]);
@@ -276,7 +276,7 @@
     new real(real t, real y) {return f(t,y)-c*y;};
 
   tableau.stepDependence(h,c,tableau.a);
-      
+
   real t=a;
   real f0;
   if(tableau.a.lowOrderWeights.length == 0) dynamic=false;
@@ -293,7 +293,7 @@
       tableau.stepDependence(h,c,tableau.a);
       dt=h;
     }
- 
+
     real[] predictions={fsal ? f0 : F(t,y)};
     for(int i=0; i < tableau.a.steps.length; ++i)
       predictions.push(F(t+h*tableau.a.steps[i],
@@ -336,7 +336,7 @@
   real[][] y;
 }
 
-void write(Solution S) 
+void write(Solution S)
 {
   for(int i=0; i < S.t.length; ++i) {
     write(S.t[i],tab);
@@ -356,7 +356,7 @@
   Solution S;
   S.t=new real[] {a};
   S.y=new real[][] {copy(y)};
-      
+
   if(h == 0) {
     if(b == a) return S;
     if(n == 0) abort("Either n or h must be specified");

Modified: trunk/Build/source/utils/asymptote/base/palette.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/palette.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/palette.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -5,7 +5,7 @@
 typedef bounds range(picture pic, real min, real max);
 
 range Range(bool automin=false, real min=-infinity,
-            bool automax=false, real max=infinity) 
+            bool automax=false, real max=infinity)
 {
   return new bounds(picture pic, real dmin, real dmax) {
     // autoscale routine finds reasonable limits
@@ -45,7 +45,7 @@
 // Reduce color palette to approximate range of data relative to "display"
 // range => errors of 1/palette.length in resulting color space.
 pen[] adjust(picture pic, real min, real max, real rmin, real rmax,
-             pen[] palette) 
+             pen[] palette)
 {
   real dmin=pic.scale.z.T(min);
   real dmax=pic.scale.z.T(max);
@@ -100,7 +100,7 @@
     initial=T*initial;
     final=T*final;
   }
-        
+
   pic.add(new void(frame F, transform t) {
       _image(F,f,initial,final,palette,t*T,copy=false,antialias=antialias);
     },true);
@@ -146,7 +146,7 @@
     initial=T*initial;
     final=T*final;
   }
-        
+
   pic.add(new void(frame F, transform t) {
       _image(F,data,initial,final,t*T,copy=false,antialias=antialias);
     },true);
@@ -171,7 +171,7 @@
     initial=T*initial;
     final=T*final;
   }
-        
+
   pic.add(new void(frame F, transform t) {
       _image(F,f,width,height,initial,final,t*T,antialias=antialias);
     },true);
@@ -267,13 +267,13 @@
     return Ticks(sign,format,ticklabel,beginlabel,endlabel,N,n,Step,step,
                  true,true,extend=true,pTick,ptick);
   };
-} 
+}
 
 paletteticks PaletteTicks=PaletteTicks();
 paletteticks NoTicks=new ticks(int sign=-1) {return NoTicks;};
 
-void palette(picture pic=currentpicture, Label L="", bounds bounds, 
-             pair initial, pair final, axis axis=Right, pen[] palette, 
+void palette(picture pic=currentpicture, Label L="", bounds bounds,
+             pair initial, pair final, axis axis=Right, pen[] palette,
              pen p=currentpen, paletteticks ticks=PaletteTicks,
              bool copy=true, bool antialias=false)
 {
@@ -280,7 +280,7 @@
   real initialz=pic.scale.z.T(bounds.min);
   real finalz=pic.scale.z.T(bounds.max);
   bounds mz=autoscale(initialz,finalz,pic.scale.z.scale);
-  
+
   axisT axis;
   axis(pic,axis);
   real angle=degrees(axis.align.dir);
@@ -311,11 +311,11 @@
   if(vertical && L.defaulttransform) {
     frame f;
     add(f,Label(L.s,(0,0),L.p));
-    if(length(max(f)-min(f)) > ylabelwidth*fontsize(L.p)) 
+    if(length(max(f)-min(f)) > ylabelwidth*fontsize(L.p))
       L.transform(rotate(90));
   }
   real[][] pdata={sequence(palette.length)};
-  
+
   transform T;
   pair Tinitial,Tfinal;
   if(vertical) {
@@ -326,12 +326,12 @@
     Tinitial=initial;
     Tfinal=final;
   }
-        
+
   pic.add(new void(frame f, transform t) {
       _image(f,pdata,Tinitial,Tfinal,palette,t*T,copy=false,
              antialias=antialias);
     },true);
-  
+
   ticklocate locate=ticklocate(initialz,finalz,pic.scale.z,mz.min,mz.max);
   axis(pic,L,g,g2,p,ticks(sgn(axis.side.x*dot(lambda,par))),locate,mz.divisor,
        true);
@@ -356,13 +356,13 @@
 pen[] Wheel(int NColors=32766)
 {
   if(settings.gray) return Grayscale(NColors);
-  
+
   int nintervals=6;
   if(NColors <= nintervals) NColors=nintervals+1;
   int n=-quotient(NColors,-nintervals);
-                
+
   pen[] Palette;
-  
+
   Palette=new pen[n*nintervals];
   real ninv=1.0/n;
 
@@ -373,7 +373,7 @@
     Palette[n+i]=rgb(ininv1,0.0,1.0);
     Palette[2n+i]=rgb(0.0,ininv,1.0);
     Palette[3n+i]=rgb(0.0,1.0,ininv1);
-    Palette[4n+i]=rgb(ininv,1.0,0.0);    
+    Palette[4n+i]=rgb(ininv,1.0,0.0);
     Palette[5n+i]=rgb(1.0,ininv1,0.0);
   }
   return Palette;
@@ -383,14 +383,14 @@
 pen[] Rainbow(int NColors=32766)
 {
   if(settings.gray) return Grayscale(NColors);
-  
+
   int offset=1;
   int nintervals=5;
   if(NColors <= nintervals) NColors=nintervals+1;
   int n=-quotient(NColors-1,-nintervals);
-                
+
   pen[] Palette;
-  
+
   Palette=new pen[n*nintervals+offset];
   real ninv=1.0/n;
 
@@ -400,11 +400,11 @@
     Palette[i]=rgb(ininv1,0.0,1.0);
     Palette[n+i]=rgb(0.0,ininv,1.0);
     Palette[2n+i]=rgb(0.0,1.0,ininv1);
-    Palette[3n+i]=rgb(ininv,1.0,0.0);    
+    Palette[3n+i]=rgb(ininv,1.0,0.0);
     Palette[4n+i]=rgb(1.0,ininv1,0.0);
   }
   Palette[4n+n]=rgb(1.0,0.0,0.0);
-  
+
   return Palette;
 }
 
@@ -411,26 +411,26 @@
 private pen[] BWRainbow(int NColors, bool two)
 {
   if(settings.gray) return Grayscale(NColors);
-  
+
   int offset=1;
   int nintervals=6;
   int divisor=3;
-  
+
   if(two) nintervals += 6;
-  
+
   int Nintervals=nintervals*divisor;
   if(NColors <= Nintervals) NColors=Nintervals+1;
   int num=NColors-offset;
   int n=-quotient(num,-Nintervals)*divisor;
   NColors=n*nintervals+offset;
-                
+
   pen[] Palette;
-  
+
   Palette=new pen[NColors];
   real ninv=1.0/n;
 
   int k=0;
-  
+
   if(two) {
     for(int i=0; i < n; ++i) {
       real ininv=i*ninv;
@@ -444,9 +444,9 @@
     }
     k += 6n;
   }
-  
+
   if(two)
-    for(int i=0; i < n; ++i) 
+    for(int i=0; i < n; ++i)
       Palette[k+i]=rgb(1.0-i*ninv,0.0,1.0);
   else {
     int n3=-quotient(n,-3);
@@ -467,12 +467,12 @@
     real ininv1=1.0-ininv;
     Palette[k+i]=rgb(0.0,ininv,1.0);
     Palette[k+n+i]=rgb(0.0,1.0,ininv1);
-    Palette[k+2n+i]=rgb(ininv,1.0,0.0);    
+    Palette[k+2n+i]=rgb(ininv,1.0,0.0);
     Palette[k+3n+i]=rgb(1.0,ininv1,0.0);
     Palette[k+4n+i]=rgb(1.0,ininv,ininv);
   }
   Palette[k+5n]=rgb(1.0,1.0,1.0);
-  
+
   return Palette;
 }
 
@@ -484,7 +484,7 @@
   real step=(Palette.length-1)/(n-1);
   return sequence(new pen(int i) {
       return Palette[round(i*step)];
-    },n); 
+    },n);
 }
 
 // A rainbow palette tapering off to black/white at the spectrum ends,
@@ -507,7 +507,7 @@
 
 //A palette varying linearly over the specified array of pens, using
 // NColors in each interpolation interval.
-pen[] Gradient(int NColors=256 ... pen[] p) 
+pen[] Gradient(int NColors=256 ... pen[] p)
 {
   pen[] P;
   if(p.length < 2) abort("at least 2 colors must be specified");
@@ -522,7 +522,7 @@
   return P;
 }
 
-pen[] cmyk(pen[] Palette) 
+pen[] cmyk(pen[] Palette)
 {
   int n=Palette.length;
   for(int i=0; i < n; ++i)

Modified: trunk/Build/source/utils/asymptote/base/patterns.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/patterns.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/patterns.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -7,7 +7,7 @@
   pair pmin=min(f)-lb;
   pair pmax=max(f)+rt;
   string s="%.6f";
-  postscript(tiling,"<< /PaintType 1 /PatternType 1 /TilingType 1 
+  postscript(tiling,"<< /PaintType 1 /PatternType 1 /TilingType 1
 /BBox ["+format(s,pmin.x,"C")+" "+format(s,pmin.y,"C")+" "+
              format(s,pmax.x,"C")+" "+format(s,pmax.y,"C")+"]
 /XStep "+format(s,pmax.x-pmin.x,"C")+"
@@ -64,7 +64,7 @@
 }
 
 real hatchepsilon=1e-4;
-picture hatch(real H=5mm, pair dir=NE, pen p=currentpen) 
+picture hatch(real H=5mm, pair dir=NE, pen p=currentpen)
 {
   picture tiling;
   real theta=angle(dir);

Modified: trunk/Build/source/utils/asymptote/base/plain.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/plain.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/plain.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -18,13 +18,13 @@
 
 include plain_constants;
 
-access version;             
+access version;
 if(version.VERSION != VERSION) {
   warning("version","using possibly incompatible version "+
           version.VERSION+" of plain.asy"+'\n');
   nowarn("version");
 }
-   
+
 include plain_strings;
 include plain_pens;
 include plain_paths;
@@ -32,13 +32,15 @@
 include plain_margins;
 include plain_picture;
 include plain_Label;
-include plain_shipout;
 include plain_arcs;
 include plain_boxes;
+include plain_shipout;
 include plain_markers;
 include plain_arrows;
 include plain_debugger;
 
+real RELEASE=(real) split(VERSION,"-")[0];
+
 typedef void exitfcn();
 
 void updatefunction()
@@ -106,7 +108,7 @@
   });
 
 // Save the current state, so that restore will put things back in that state.
-restoreThunk save() 
+restoreThunk save()
 {
   return restore=buildRestoreThunk();
 }
@@ -132,7 +134,7 @@
 }
 
 // Save the current state, so that restore will put things back in that state.
-restoreThunk savedefaults() 
+restoreThunk savedefaults()
 {
   return restoredefaults=buildRestoreDefaults();
 }
@@ -145,7 +147,7 @@
   atexit(null);
 }
 
-// Return the sequence n,...m
+// Return the sequence n,...,m
 int[] sequence(int n, int m)
 {
   return sequence(new int(int x){return x;},m-n+1)+n;
@@ -180,6 +182,19 @@
   if(!embedded) restoredefaults();
 }
 
+// Associate a parametrized type with a name.
+void type(string type, string name)
+{
+  eval("typedef "+type+" "+name,true);
+}
+
+void mapArray(string From, string To)
+{
+  type(From,"From");
+  type(To,"To");
+  eval("To[] map(To f(From), From[] a) {return sequence(new To(int i) {return f(a[i]);},a.length);}",true);
+}
+
 // Evaluate user command line option.
 void usersetting()
 {
@@ -186,7 +201,7 @@
   eval(settings.user,true);
 }
 
-string stripsuffix(string f, string suffix=".asy") 
+string stripsuffix(string f, string suffix=".asy")
 {
   int n=rfind(f,suffix);
   if(n != -1) f=erase(f,n,-1);
@@ -231,6 +246,7 @@
 struct processtime {
   real user;
   real system;
+  real clock;
 }
 
 struct cputime {
@@ -239,21 +255,26 @@
   processtime change;
 }
 
-cputime cputime() 
+cputime cputime()
 {
   static processtime last;
   real [] a=_cputime();
   cputime cputime;
+  real clock=a[4];
   cputime.parent.user=a[0];
   cputime.parent.system=a[1];
+  cputime.parent.clock=clock;
   cputime.child.user=a[2];
   cputime.child.system=a[3];
-  real user=a[0]+a[2];
-  real system=a[1]+a[3];
+  cputime.child.clock=0;
+  real user=cputime.parent.user+cputime.child.user;
+  real system=cputime.parent.system+cputime.child.system;
   cputime.change.user=user-last.user;
   cputime.change.system=system-last.system;
+  cputime.change.clock=clock-last.clock;
   last.user=user;
   last.system=system;
+  last.clock=clock;
   return cputime;
 }
 
@@ -285,23 +306,3 @@
 }
 
 cputime();
-
-void nosetpagesize()
-{
-  static bool initialized=false;
-  if(!initialized && latex()) {
-    // Portably pass nosetpagesize option to graphicx package.
-    texpreamble("\usepackage{ifluatex}\ifluatex
-\ifx\pdfpagewidth\undefined\let\pdfpagewidth\paperwidth\fi
-\ifx\pdfpageheight\undefined\let\pdfpageheight\paperheight\fi\else
-\let\paperwidthsave\paperwidth\let\paperwidth\undefined
-\usepackage{graphicx}
-\let\paperwidth\paperwidthsave\fi");
-    initialized=true;
-  }
-}
-
-nosetpagesize();
-
-if(settings.tex == "luatex")
-  texpreamble("\input luatex85.sty");

Modified: trunk/Build/source/utils/asymptote/base/plain_Label.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/plain_Label.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/plain_Label.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -15,10 +15,10 @@
   real a=t.xx, b=t.xy, c=t.yx, d=t.yy;
   real arg=(a-d)^2+4b*c;
   pair delta=arg >= 0 ? sqrt(arg) : I*sqrt(-arg);
-  real trace=a+d; 
+  real trace=a+d;
   pair l1=0.5(trace+delta);
   pair l2=0.5(trace-delta);
-  
+
   if(abs(delta) < sqrtEpsilon*max(abs(l1),abs(l2))) {
     real s=abs(0.5trace);
     return (s != 0) ? scale(1/s)*t : t;
@@ -51,7 +51,7 @@
       }
     }
     return c;
-  }     
+  }
 
   pair[][] conj(pair[][] a) {
     pair[][] c=new pair[2][2];
@@ -61,7 +61,7 @@
       }
     }
     return c;
-  }     
+  }
 
   A=conj(U)*A*U;
 
@@ -70,7 +70,7 @@
     A[0][0] /= D;
     A[0][1] /= D;
   }
-  
+
   D=abs(A[1][1]);
   if(D != 0) {
     A[1][0] /= D;
@@ -155,13 +155,13 @@
   s.align=align;
   return s;
 }
-  
+
 restricted side NoSide;
 restricted side LeftSide=Relative(W);
 restricted side Center=Relative((0,0));
 restricted side RightSide=Relative(E);
 
-side operator * (real x, side s) 
+side operator * (real x, side s)
 {
   side S;
   S.align=x*s.align;
@@ -190,7 +190,7 @@
   p.relative=true;
   return p;
 }
-  
+
 restricted position BeginPoint=Relative(0);
 restricted position MidPoint=Relative(0.5);
 restricted position EndPoint=Relative(1);
@@ -227,8 +227,8 @@
   bool defaulttransform3=true;
   embed embed=Rotate; // Shift, Rotate, Slant, or Scale with embedded picture
   filltype filltype=NoFill;
-  
-  void init(string s="", string size="", position position=0, 
+
+  void init(string s="", string size="", position position=0,
             bool defaultposition=true, align align=NoAlign, pen p=nullpen,
             transform T=identity(), transform3 T3=identity4,
             bool defaulttransform=true, bool defaulttransform3=true,
@@ -246,17 +246,17 @@
     this.embed=embed;
     this.filltype=filltype;
   }
-  
+
   void initalign(string s="", string size="", align align, pen p=nullpen,
                  embed embed=Rotate, filltype filltype=NoFill) {
     init(s,size,align,p,embed,filltype);
   }
-  
+
   void transform(transform T) {
     this.T=T;
     defaulttransform=false;
   }
-  
+
   void transform3(transform3 T) {
     this.T3=copy(T);
     defaulttransform3=false;
@@ -268,12 +268,12 @@
            defaulttransform3,embed,filltype);
     return L;
   }
-  
+
   void position(position pos) {
     this.position=pos;
     defaultposition=false;
   }
-  
+
   void align(align a) {
     align.align(a);
   }
@@ -280,15 +280,15 @@
   void align(align a, align default) {
     align.align(a,default);
   }
-  
+
   void p(pen p0) {
     if(this.p == nullpen) this.p=p0;
   }
-  
+
   void filltype(filltype filltype0) {
     if(this.filltype == NoFill) this.filltype=filltype0;
   }
-  
+
   void label(frame f, transform t=identity(), pair position, pair align) {
     pen p0=p == nullpen ? currentpen : p;
     align=length(align)*unit(rotation(t)*align);
@@ -309,7 +309,7 @@
       add(f,d,filltype);
     }
   }
-  
+
   void label(picture pic=currentpicture, pair position, pair align) {
     if(s == "") return;
     pic.add(new void (frame f, transform t) {
@@ -324,7 +324,7 @@
   void out(picture pic=currentpicture) {
     label(pic,position.position,align.dir);
   }
-  
+
   void out(picture pic=currentpicture, path g) {
     bool relative=position.relative;
     real position=position.position.x;
@@ -349,7 +349,7 @@
     pair position=point(g,position);
     pic.addBox(position,position,min(f),max(f));
   }
-  
+
   void write(file file=stdout, suffix suffix=endl) {
     write(file,"\""+s+"\"");
     if(!defaultposition) write(file,", position=",position.position);
@@ -364,11 +364,11 @@
     }
     write(file,"",suffix);
   }
-  
+
   real relative() {
     return defaultposition ? 0.5 : position.position.x;
   };
-  
+
   real relative(path g) {
     return position.relative ? reltime(g,relative()) : relative();
   };
@@ -380,12 +380,12 @@
 {
   L.out(f,t);
 }
-  
+
 void add(picture pic=currentpicture, Label L)
 {
   L.out(pic);
 }
-  
+
 Label operator * (transform t, Label L)
 {
   Label tL=L.copy();
@@ -466,13 +466,13 @@
 {
   add(f,Label(L,position,align,p,filltype));
 }
-  
+
 void label(frame f, Label L, align align=NoAlign,
            pen p=currentpen, filltype filltype=NoFill)
 {
   add(f,Label(L,L.position,align,p,filltype));
 }
-  
+
 void label(picture pic=currentpicture, Label L, pair position,
            align align=NoAlign, pen p=currentpen, filltype filltype=NoFill)
 {
@@ -479,7 +479,7 @@
   Label L=Label(L,position,align,p,filltype);
   add(pic,L);
 }
-  
+
 void label(picture pic=currentpicture, Label L, align align=NoAlign,
            pen p=currentpen, filltype filltype=NoFill)
 {
@@ -494,7 +494,7 @@
   label(opic,L,L.position,align,p,filltype);
   add(pic,opic,origin);
 }
-  
+
 void label(picture pic=currentpicture, Label L, explicit path g,
            align align=NoAlign, pen p=currentpen, filltype filltype=NoFill)
 {
@@ -532,12 +532,12 @@
   return object(f);
 }
 
-object operator cast(Label L) 
+object operator cast(Label L)
 {
   return object(L);
 }
 
-object operator cast(string s) 
+object operator cast(string s)
 {
   return object(s);
 }
@@ -562,7 +562,7 @@
 }
 
 // Returns a copy of object F aligned in the direction align
-object align(object F, pair align) 
+object align(object F, pair align)
 {
   return shift(F.f,align)*F;
 }
@@ -594,7 +594,7 @@
     real fontsize;
     string font;
 
-    void operator init(Label L) 
+    void operator init(Label L)
     {
       s=replace(L.s,'\n',' ');
       fontsize=fontsize(L.p);
@@ -603,7 +603,7 @@
 
     pen pen() {return fontsize(fontsize)+fontcommand(font);}
   }
-  
+
   bool lexorder(stringfont a, stringfont b) {
     return a.s < b.s || (a.s == b.s && (a.fontsize < b.fontsize ||
                                         (a.fontsize == b.fontsize &&
@@ -615,7 +615,7 @@
 
   static stringfont[] stringlist;
   static bool adjust[];
-  
+
   path[] G;
 
   stringfont s=stringfont(L);
@@ -649,7 +649,7 @@
     label(f,L);
     return transform(box(min(f),max(f)),L);
   }
-  
+
   if(stringlist.length > 0) {
     path[][] g;
     int n=stringlist.length;
@@ -660,9 +660,9 @@
       s[i]=adjust[i] ? "."+S.s : S.s;
       p[i]=adjust[i] ? S.pen()+basealign : S.pen();
     }
-        
+
     g=tex ? _texpath(s,p) : textpath(s,p);
-      
+
     if(tex)
       for(int i=0; i < n; ++i)
         if(adjust[i]) {
@@ -670,8 +670,8 @@
           g[i].delete(0);
           g[i]=shift(0,-y)*g[i];
         }
-    
-  
+
+
     for(int i=0; i < stringlist.length; ++i) {
       stringfont s=stringlist[i];
       int j=search(stringcache,s,lexorder)+1;
@@ -686,6 +686,6 @@
 }
 
 texpath=new path[](string s, pen p, bool tex=settings.tex != "none", bool bbox=false)
-{
-  return texpath(Label(s,p));
-};
+  {
+   return texpath(Label(s,p));
+  };

Modified: trunk/Build/source/utils/asymptote/base/plain_arcs.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/plain_arcs.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/plain_arcs.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1,5 +1,5 @@
 bool CCW=true;
-bool CW=false;                                            
+bool CW=false;
 
 path circle(pair c, real r)
 {
@@ -35,7 +35,7 @@
 {
   return arc(c,c+r*dir(angle1),c+r*dir(angle2),direction);
 }
-  
+
 // return an arc centered at c with radius r > 0 from angle1 to angle2 in
 // degrees, drawing counterclockwise if angle2 >= angle1 (otherwise clockwise).
 path arc(pair c, real r, real angle1, real angle2)

Modified: trunk/Build/source/utils/asymptote/base/plain_arrows.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/plain_arrows.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/plain_arrows.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -12,7 +12,7 @@
 
 real barfactor=arrowfactor;
 
-real arrowsize(pen p=currentpen) 
+real arrowsize(pen p=currentpen)
 {
   return arrowfactor*linewidth(p);
 }
@@ -53,39 +53,39 @@
 arrowhead DefaultHead;
 DefaultHead.head=new path(path g, position position=EndPoint, pen p=currentpen,
                           real size=0, real angle=arrowangle) {
-  if(size == 0) size=DefaultHead.size(p);
-  bool relative=position.relative;
-  real position=position.position.x;
-  if(relative) position=reltime(g,position);
-  path r=subpath(g,position,0);
-  pair x=point(r,0);
-  real t=arctime(r,size);
-  pair y=point(r,t);
-  path base=arrowbase(r,y,t,size);
-  path left=rotate(-angle,x)*r;
-  path right=rotate(angle,x)*r;
-  real[] T=arrowbasepoints(base,left,right);
-  pair denom=point(right,T[1])-y;
-  real factor=denom != 0 ? length((point(left,T[0])-y)/denom) : 1;
-  path left=rotate(-angle*factor,x)*r;
-  path right=rotate(angle*factor,x)*r;
-  real[] T=arrowbasepoints(base,left,right);
-  return subpath(left,0,T[0])--subpath(right,T[1],0)&cycle;
+                                                               if(size == 0) size=DefaultHead.size(p);
+                                                               bool relative=position.relative;
+                                                               real position=position.position.x;
+                                                               if(relative) position=reltime(g,position);
+                                                               path r=subpath(g,position,0);
+                                                               pair x=point(r,0);
+                                                               real t=arctime(r,size);
+                                                               pair y=point(r,t);
+                                                               path base=arrowbase(r,y,t,size);
+                                                               path left=rotate(-angle,x)*r;
+                                                               path right=rotate(angle,x)*r;
+                                                               real[] T=arrowbasepoints(base,left,right);
+                                                               pair denom=point(right,T[1])-y;
+                                                               real factor=denom != 0 ? length((point(left,T[0])-y)/denom) : 1;
+                                                               path left=rotate(-angle*factor,x)*r;
+                                                               path right=rotate(angle*factor,x)*r;
+                                                               real[] T=arrowbasepoints(base,left,right);
+                                                               return subpath(left,0,T[0])--subpath(right,T[1],0)&cycle;
 };
 
 arrowhead SimpleHead;
 SimpleHead.head=new path(path g, position position=EndPoint, pen p=currentpen,
                          real size=0, real angle=arrowangle) {
-  if(size == 0) size=SimpleHead.size(p);
-  bool relative=position.relative;
-  real position=position.position.x;
-  if(relative) position=reltime(g,position);
-  path r=subpath(g,position,0);
-  pair x=point(r,0);
-  real t=arctime(r,size);
-  path left=rotate(-angle,x)*r;
-  path right=rotate(angle,x)*r;
-  return subpath(left,t,0)--subpath(right,0,t);
+                                                              if(size == 0) size=SimpleHead.size(p);
+                                                              bool relative=position.relative;
+                                                              real position=position.position.x;
+                                                              if(relative) position=reltime(g,position);
+                                                              path r=subpath(g,position,0);
+                                                              pair x=point(r,0);
+                                                              real t=arctime(r,size);
+                                                              path left=rotate(-angle,x)*r;
+                                                              path right=rotate(angle,x)*r;
+                                                              return subpath(left,t,0)--subpath(right,0,t);
 };
 
 arrowhead HookHead(real dir=arrowdir, real barb=arrowbarb)
@@ -94,34 +94,34 @@
   a.head=new path(path g, position position=EndPoint, pen p=currentpen,
                   real size=0, real angle=arrowangle)
     {
-      if(size == 0) size=a.size(p);
-      angle=min(angle*arrowhookfactor,45);
-      bool relative=position.relative;
-      real position=position.position.x;
-      if(relative) position=reltime(g,position);
-      path r=subpath(g,position,0);
-      pair x=point(r,0);
-      real t=arctime(r,size);
-      pair y=point(r,t);
-      path base=arrowbase(r,y,t,size);
-      path left=rotate(-angle,x)*r;
-      path right=rotate(angle,x)*r;
-      real[] T=arrowbasepoints(base,left,right,1);
-      pair denom=point(right,T[1])-y;
-      real factor=denom != 0 ? length((point(left,T[0])-y)/denom) : 1;
-      path left=rotate(-angle*factor,x)*r;
-      path right=rotate(angle*factor,x)*r;
-      real[] T=arrowbasepoints(base,left,right,1);
-      left=subpath(left,0,T[0]);
-      right=subpath(right,T[1],0);
-      pair pl0=point(left,0), pl1=relpoint(left,1);
-      pair pr0=relpoint(right,0), pr1=relpoint(right,1);
-      pair M=(pl1+pr0)/2;
-      pair v=barb*unit(M-pl0);
-      pl1=pl1+v; pr0=pr0+v;
-      left=pl0{dir(-dir+degrees(M-pl0,false))}..pl1--M;
-      right=M--pr0..pr1{dir(dir+degrees(pr1-M,false))};
-      return left--right&cycle;
+     if(size == 0) size=a.size(p);
+     angle=min(angle*arrowhookfactor,45);
+     bool relative=position.relative;
+     real position=position.position.x;
+     if(relative) position=reltime(g,position);
+     path r=subpath(g,position,0);
+     pair x=point(r,0);
+     real t=arctime(r,size);
+     pair y=point(r,t);
+     path base=arrowbase(r,y,t,size);
+     path left=rotate(-angle,x)*r;
+     path right=rotate(angle,x)*r;
+     real[] T=arrowbasepoints(base,left,right,1);
+     pair denom=point(right,T[1])-y;
+     real factor=denom != 0 ? length((point(left,T[0])-y)/denom) : 1;
+     path left=rotate(-angle*factor,x)*r;
+     path right=rotate(angle*factor,x)*r;
+     real[] T=arrowbasepoints(base,left,right,1);
+     left=subpath(left,0,T[0]);
+     right=subpath(right,T[1],0);
+     pair pl0=point(left,0), pl1=relpoint(left,1);
+     pair pr0=relpoint(right,0), pr1=relpoint(right,1);
+     pair M=(pl1+pr0)/2;
+     pair v=barb*unit(M-pl0);
+     pl1=pl1+v; pr0=pr0+v;
+     left=pl0{dir(-dir+degrees(M-pl0,false))}..pl1--M;
+     right=M--pr0..pr1{dir(dir+degrees(pr1-M,false))};
+     return left--right&cycle;
     };
   return a;
 }
@@ -129,35 +129,35 @@
 
 arrowhead TeXHead;
 TeXHead.size=new real(pen p)
-{
-  static real hcoef=2.1; // 84/40=abs(base-hint)/base_height
-  return hcoef*arrowtexfactor*linewidth(p);
-};
+  {
+   static real hcoef=2.1; // 84/40=abs(base-hint)/base_height
+   return hcoef*arrowtexfactor*linewidth(p);
+  };
 TeXHead.arcsize=TeXHead.size;
 
 TeXHead.head=new path(path g, position position=EndPoint, pen p=currentpen,
                       real size=0, real angle=arrowangle) {
-  static real wcoef=1/84; // 1/abs(base-hint)
-  static path texhead=scale(wcoef)*
-  ((0,20)     .. controls (-75,75)    and (-108,158) ..
-   (-108,166) .. controls (-108,175)  and (-100,178) ..
-   (-93,178)  .. controls (-82,178)   and (-80,173)  ..
-   (-77,168)  .. controls (-62,134)   and (-30,61)   ..
-   (70,14)    .. controls (82,8)      and (84,7)     ..
-   (84,0)     .. controls (84,-7)     and (82,-8)    ..
-   (70,-14)   .. controls (-30,-61)   and (-62,-134) ..
-   (-77,-168) .. controls (-80,-173)  and (-82,-178) ..
-   (-93,-178) .. controls (-100,-178) and (-108,-175)..
-   (-108,-166).. controls (-108,-158) and (-75,-75)  ..
-   (0,-20)--cycle);
-  if(size == 0) size=TeXHead.size(p);
-  path gp=scale(size)*texhead;
-  bool relative=position.relative;
-  real position=position.position.x;
-  if(relative) position=reltime(g,position);
-  path r=subpath(g,position,0);
-  pair y=point(r,arctime(r,size));
-  return shift(y)*rotate(degrees(-dir(r,arctime(r,0.5*size))))*gp;
+                                                           static real wcoef=1/84; // 1/abs(base-hint)
+                                                           static path texhead=scale(wcoef)*
+                                                           ((0,20)     .. controls (-75,75)    and (-108,158) ..
+                                                            (-108,166) .. controls (-108,175)  and (-100,178) ..
+                                                            (-93,178)  .. controls (-82,178)   and (-80,173)  ..
+                                                            (-77,168)  .. controls (-62,134)   and (-30,61)   ..
+                                                            (70,14)    .. controls (82,8)      and (84,7)     ..
+                                                            (84,0)     .. controls (84,-7)     and (82,-8)    ..
+                                                            (70,-14)   .. controls (-30,-61)   and (-62,-134) ..
+                                                            (-77,-168) .. controls (-80,-173)  and (-82,-178) ..
+                                                            (-93,-178) .. controls (-100,-178) and (-108,-175)..
+                                                            (-108,-166).. controls (-108,-158) and (-75,-75)  ..
+                                                            (0,-20)--cycle);
+                                                           if(size == 0) size=TeXHead.size(p);
+                                                           path gp=scale(size)*texhead;
+                                                           bool relative=position.relative;
+                                                           real position=position.position.x;
+                                                           if(relative) position=reltime(g,position);
+                                                           path r=subpath(g,position,0);
+                                                           pair y=point(r,arctime(r,size));
+                                                           return shift(y)*rotate(degrees(-dir(r,arctime(r,0.5*size))))*gp;
 };
 TeXHead.defaultfilltype=new filltype(pen p) {return Fill(p);};
 
@@ -169,7 +169,7 @@
     position *= arclength(g);
     if(center) position += 0.5*size;
     position=arctime(g,position);
-  } else if(center) 
+  } else if(center)
     position=arctime(g,arclength(subpath(g,0,position))+0.5*size);
   return position;
 }
@@ -251,7 +251,7 @@
       drawarrow(f,arrowhead,t*g,p,size,angle,filltype,position,forwards,margin,
                 center);
     });
-  
+
   pic.addPath(g,p);
 
   real position=position(position,size,g,center);
@@ -275,7 +275,7 @@
   pic.add(new void(frame f, transform t) {
       drawarrow2(f,arrowhead,t*g,p,size,angle,filltype,margin);
     });
-  
+
   pic.addPath(g,p);
 
   int L=length(g);
@@ -291,7 +291,7 @@
   Draw(opic,-0.5d--0.5d,p+solid);
   add(pic,opic,a);
 }
-                                                      
+
 picture bar(pair a, pair d, pen p=currentpen)
 {
   picture pic;
@@ -345,7 +345,7 @@
     return false;
   };
 }
-  
+
 arrowbar Arrows(arrowhead arrowhead=DefaultHead,
                 real size=0, real angle=arrowangle,
                 filltype filltype=null)
@@ -383,7 +383,7 @@
                      real size=0, real angle=arcarrowangle,
                      filltype filltype=null,
                      position position=EndPoint)=ArcArrow;
-  
+
 arrowbar MidArcArrow(arrowhead arrowhead=DefaultHead,
                      real size=0, real angle=arcarrowangle,
                      filltype filltype=null)
@@ -395,7 +395,7 @@
     return false;
   };
 }
-  
+
 arrowbar ArcArrows(arrowhead arrowhead=DefaultHead,
                    real size=0, real angle=arcarrowangle,
                    filltype filltype=null)
@@ -406,8 +406,8 @@
     return false;
   };
 }
-  
-arrowbar BeginBar(real size=0) 
+
+arrowbar BeginBar(real size=0)
 {
   return new bool(picture pic, path g, pen p, margin margin) {
     real size=size == 0 ? barsize(p) : size;
@@ -416,7 +416,7 @@
   };
 }
 
-arrowbar Bar(real size=0) 
+arrowbar Bar(real size=0)
 {
   return new bool(picture pic, path g, pen p, margin margin) {
     int L=length(g);
@@ -426,9 +426,9 @@
   };
 }
 
-arrowbar EndBar(real size=0)=Bar; 
+arrowbar EndBar(real size=0)=Bar;
 
-arrowbar Bars(real size=0) 
+arrowbar Bars(real size=0)
 {
   return new bool(picture pic, path g, pen p, margin margin) {
     real size=size == 0 ? barsize(p) : size;
@@ -469,73 +469,73 @@
   // These if statements are ordered in such a way that the most common case
   // (with just a path and a pen) executes the least bytecode.
   if (marker == nomarker)
-  {
-    if (arrow == None && bar == None)
     {
-      if (margin == NoMargin && size(nib(p)) == 0)
-      {
-        pic.addExactAbove(
-            new void(frame f, transform t, transform T, pair, pair) {
-              _draw(f,t*T*g,p);
-            });
-        pic.addPath(g,p);
+      if (arrow == None && bar == None)
+        {
+          if (margin == NoMargin && size(nib(p)) == 0)
+            {
+              pic.addExactAbove(
+                                new void(frame f, transform t, transform T, pair, pair) {
+                                  _draw(f,t*T*g,p);
+                                });
+              pic.addPath(g,p);
 
-        // Jumping over else clauses takes time, so test if we can return
-        // here.
-        if (L == null && legend == null)
-          return;
+              // Jumping over else clauses takes time, so test if we can return
+              // here.
+              if (L == null && legend == null)
+                return;
+            }
+          else // With margin or polygonal pen.
+            {
+              _draw(pic, g, p, margin);
+            }
+        }
+      else /* arrow or bar */
+        {
+          // Note we are using & instead of && as both arrow and bar need to be
+          // called.
+          if (arrow(pic, g, p, margin) & bar(pic, g, p, margin))
+            _draw(pic, g, p, margin);
+        }
+
+      if(L != null && L.s != "") {
+        L=L.copy();
+        L.align(align);
+        L.p(p);
+        L.out(pic,g);
       }
-      else // With margin or polygonal pen.
-      {
-        _draw(pic, g, p, margin);
+
+      if(legend != null && legend.s != "") {
+        legend.p(p);
+        pic.legend.push(Legend(legend.s,legend.p,p,marker.f,marker.above));
       }
     }
-    else /* arrow or bar */
+  else /* marker != nomarker */
     {
+      if(marker != nomarker && !marker.above) marker.mark(pic,g);
+
       // Note we are using & instead of && as both arrow and bar need to be
       // called.
-      if (arrow(pic, g, p, margin) & bar(pic, g, p, margin))
-        _draw(pic, g, p, margin);
-    }
+      if ((arrow == None || arrow(pic, g, p, margin)) &
+          (bar == None || bar(pic, g, p, margin)))
+        {
+          _draw(pic, g, p, margin);
+        }
 
-    if(L != null && L.s != "") {
-      L=L.copy();
-      L.align(align);
-      L.p(p);
-      L.out(pic,g);
-    }
+      if(L != null && L.s != "") {
+        L=L.copy();
+        L.align(align);
+        L.p(p);
+        L.out(pic,g);
+      }
 
-    if(legend != null && legend.s != "") {
-      legend.p(p);
-      pic.legend.push(Legend(legend.s,legend.p,p,marker.f,marker.above));
-    }
-  }
-  else /* marker != nomarker */
-  {
-    if(marker != nomarker && !marker.above) marker.mark(pic,g);
-
-    // Note we are using & instead of && as both arrow and bar need to be
-    // called.
-    if ((arrow == None || arrow(pic, g, p, margin)) &
-        (bar == None || bar(pic, g, p, margin)))
-      {
-        _draw(pic, g, p, margin);
+      if(legend != null && legend.s != "") {
+        legend.p(p);
+        pic.legend.push(Legend(legend.s,legend.p,p,marker.f,marker.above));
       }
 
-    if(L != null && L.s != "") {
-      L=L.copy();
-      L.align(align);
-      L.p(p);
-      L.out(pic,g);
+      if(marker != nomarker && marker.above) marker.mark(pic,g);
     }
-
-    if(legend != null && legend.s != "") {
-      legend.p(p);
-      pic.legend.push(Legend(legend.s,legend.p,p,marker.f,marker.above));
-    }
-
-    if(marker != nomarker && marker.above) marker.mark(pic,g);
-  }
 }
 
 // Draw a fixed-size line about the user-coordinate 'origin'.
@@ -551,12 +551,12 @@
 
 void draw(picture pic=currentpicture, explicit path[] g, pen p=currentpen,
           Label legend=null, marker marker=nomarker)
-{ 
+{
   // This could be optimized to size and draw the entire array as a batch.
-  for(int i=0; i < g.length-1; ++i) 
+  for(int i=0; i < g.length-1; ++i)
     draw(pic,g[i],p,marker);
   if(g.length > 0) draw(pic,g[g.length-1],p,legend,marker);
-} 
+}
 
 void draw(picture pic=currentpicture, guide[] g, pen p=currentpen,
           Label legend=null, marker marker=nomarker)
@@ -621,7 +621,7 @@
 {
   if(pictures.length == 0)
     return new frame[];
- 
+
   picture all;
   size(all,pictures[0]);
   for(picture pic : pictures)

Modified: trunk/Build/source/utils/asymptote/base/plain_bounds.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/plain_bounds.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/plain_bounds.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -4,7 +4,7 @@
 // have been added, this is only an approximation since it takes the bounds of
 // their transformed bounding box.
 private void addTransformedCoords(coords2 dest, transform t,
-                          coords2 point, coords2 min, coords2 max)
+                                  coords2 point, coords2 min, coords2 max)
 {
   dest.push(t, point, point);
 
@@ -47,7 +47,7 @@
   for (coord c : src)
     addIfMaximal(dest, c.user, c.truesize);
 }
-      
+
 // Same as addIfMaximal, but testing for minimal coords.
 private void addIfMinimal(coord[] coords, real user, real truesize) {
   for (coord c : coords)
@@ -130,7 +130,7 @@
     void operator init(coord[] left, coord[] bottom,
                        coord[] right, coord[] top) {
       this.left = left;
-      this.bottom = bottom; 
+      this.bottom = bottom;
       this.right = right;
       this.top = top;
     }
@@ -197,7 +197,7 @@
 
   void addBox(pair userMin, pair userMax, pair trueMin, pair trueMax) {
     assert(!frozen);
-    this.min.push(userMin, trueMin); 
+    this.min.push(userMin, trueMin);
     this.max.push(userMax, trueMax);
   }
 
@@ -334,7 +334,7 @@
 
     addLocalsToExtremes(t, e);
   }
-    
+
   private void addLocalsToExtremes(extremes e) {
     addMinToExtremes(e, point);
     addMaxToExtremes(e, point);
@@ -466,7 +466,7 @@
       acc.pushUserCoords(min, max);
       if (pathBounds.length > 0)
         acc.push(min(pathBounds), max(pathBounds));
-      for (var pp : pathpenBounds) 
+      for (var pp : pathpenBounds)
         if(size(pp.g) > 0)
           acc.push(min(pp.g), max(pp.g));
       for (var link : links)
@@ -623,13 +623,13 @@
 
     // Get the extremal coordinates.
     extremes e = extremes();
-    
+
     real sx;
     if(xunitsize == 0) {
       if(xsize != 0) sx=calculateScaling("x",e.left,e.right,xsize,warn);
     } else sx=xunitsize;
 
-    /* Possible alternative code : 
+    /* Possible alternative code :
        real sx = xunitsize != 0 ? xunitsize :
        xsize != 0     ? calculateScaling("x", Coords.x, xsize, warn) :
        0; */
@@ -697,7 +697,7 @@
     makeMutable();
     base.append(b.base);
   }
-    
+
   void append(transform t, bounds b) {
     // makeMutable will be called by append.
     if (t == identity())
@@ -760,7 +760,7 @@
     makeMutable();
     base.yclip(Min,Max);
   }
-  
+
   void clip(pair Min, pair Max) {
     // TODO: If the user bounds have been manually altered, they may be
     // incorrect after the clip.

Modified: trunk/Build/source/utils/asymptote/base/plain_margins.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/plain_margins.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/plain_margins.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -5,7 +5,7 @@
 
 typedef marginT margin(path, pen);
 
-path trim(path g, real begin, real end) {
+path trim(path g, real begin, real end=begin) {
   real a=arctime(g,begin);
   real b=arctime(g,arclength(g)-end);
   return a <= b ? subpath(g,a,b) : point(g,a);
@@ -36,7 +36,7 @@
   };
 }
                                                       
-margin Margin(real begin, real end)
+margin Margin(real begin, real end=begin)
 { 
   return new marginT(path g, pen p) {
     marginT margin;
@@ -48,7 +48,7 @@
   };
 }
                                                            
-margin PenMargin(real begin, real end)
+margin PenMargin(real begin, real end=begin)
 { 
   return new marginT(path g, pen p) {
     marginT margin;
@@ -60,7 +60,7 @@
   };
 }
                                               
-margin DotMargin(real begin, real end)
+margin DotMargin(real begin, real end=begin)
 { 
   return new marginT(path g, pen p) {
     marginT margin;
@@ -73,7 +73,7 @@
   };
 }
                                                       
-margin TrueMargin(real begin, real end)
+margin TrueMargin(real begin, real end=begin)
 { 
   return new marginT(path g, pen p) {
     marginT margin;

Modified: trunk/Build/source/utils/asymptote/base/plain_picture.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/plain_picture.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/plain_picture.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1355,13 +1355,14 @@
 }
 
 void tensorshade(picture pic=currentpicture, path[] g, bool stroke=false,
-                 pen fillrule=currentpen, pen[][] p, path[] b=g,
+                 pen fillrule=currentpen, pen[][] p, path[] b=new path[],
                  pair[][] z=new pair[][], bool copy=true)
 {
+  bool compact=b.length == 0 || b[0] == nullpath;
   if(copy) {
     g=copy(g);
     p=copy(p);
-    b=copy(b);
+    if(!compact) b=copy(b);
     z=copy(z);
   }
   pic.add(new void(frame f, transform t) {
@@ -1368,7 +1369,11 @@
       pair[][] Z=new pair[z.length][];
       for(int i=0; i < z.length; ++i)
         Z[i]=t*z[i];
-      tensorshade(f,t*g,stroke,fillrule,p,t*b,Z,false);
+      path[] G=t*g;
+      if(compact)
+        tensorshade(f,G,stroke,fillrule,p,Z,false);
+      else
+        tensorshade(f,G,stroke,fillrule,p,t*b,Z,false);
     },true);
   pic.addPath(g);
 }
@@ -1375,32 +1380,20 @@
 
 void tensorshade(frame f, path[] g, bool stroke=false,
                  pen fillrule=currentpen, pen[] p,
-                 path b=g.length > 0 ? g[0] : nullpath)
+                 path b=g.length > 0 ? g[0] : nullpath, pair[] z=new pair[])
 {
-  tensorshade(f,g,stroke,fillrule,new pen[][] {p},b);
+  tensorshade(f,g,stroke,fillrule,new pen[][] {p},b,
+              z.length > 0 ? new pair[][] {z} : new pair[][]);
 }
 
-void tensorshade(frame f, path[] g, bool stroke=false,
-                 pen fillrule=currentpen, pen[] p,
-                 path b=g.length > 0 ? g[0] : nullpath, pair[] z)
-{
-  tensorshade(f,g,stroke,fillrule,new pen[][] {p},b,new pair[][] {z});
-}
-
 void tensorshade(picture pic=currentpicture, path[] g, bool stroke=false,
                  pen fillrule=currentpen, pen[] p,
-                 path b=g.length > 0 ? g[0] : nullpath)
+                 path b=nullpath, pair[] z=new pair[])
 {
-  tensorshade(pic,g,stroke,fillrule,new pen[][] {p},b);
+  tensorshade(pic,g,stroke,fillrule,new pen[][] {p},b,
+              z.length > 0 ? new pair[][] {z} : new pair[][]);
 }
 
-void tensorshade(picture pic=currentpicture, path[] g, bool stroke=false,
-                 pen fillrule=currentpen, pen[] p,
-                 path b=g.length > 0 ? g[0] : nullpath, pair[] z)
-{
-  tensorshade(pic,g,stroke,fillrule,new pen[][] {p},b,new pair[][] {z});
-}
-
 // Smoothly shade the regions between consecutive paths of a sequence using a
 // given array of pens:
 void draw(picture pic=currentpicture, path[] g, pen fillrule=currentpen,

Modified: trunk/Build/source/utils/asymptote/base/plain_shipout.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/plain_shipout.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/plain_shipout.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -86,14 +86,10 @@
     }
   }
 
-  if(outformat(format) == "html") {
-    warning("htmltosvg",
-            "html output requested for 2D picture; generating svg image instead...");
-    format="svg";
-  }
-  
-  if(settings.xasy || (!implicitshipout && prefix == defaultfilename)) {
-    if(prefix == defaultfilename) {
+  bool defaultprefix=prefix==defaultfilename;
+
+  if(settings.xasy || (!implicitshipout && defaultprefix)) {
+    if(defaultprefix) {
       currentpicture.clear();
       add(f,group=false);
     }
@@ -132,8 +128,15 @@
     }
     frame f;
     transform t=pic.calculateTransform();
-    if(currentpicture.fitter == null)
-      f=pic.fit(t);
+    if(currentpicture.fitter == null) {
+      pen background=currentlight.background;
+      if(settings.outformat == "html" && background == nullpen)
+        background=white;
+      if(background != nullpen)
+        f=bbox(pic,nullpen,Fill(background));
+      else
+        f=pic.fit(t);
+    }
     else
       f=pic.fit(prefix,format,view=view,options,script,light,P);
 

Modified: trunk/Build/source/utils/asymptote/base/rationalSimplex.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/rationalSimplex.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/rationalSimplex.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1,8 +1,8 @@
 // Rational simplex solver written by John C. Bowman and Pouria Ramazi, 2018.
 import rational;
 
-void simplexStandard(rational[] c, rational[][] A, int[] s=new int[],
-                     rational[] b) {}
+void simplexInit(rational[] c, rational[][] A, int[] s=new int[],
+                 rational[] b, int count) {}
 void simplexTableau(rational[][] E, int[] Bindices, int I=-1, int J=-1) {}
 void simplexPhase1(rational[] c, rational[][] A, rational[] b,
                    int[] Bindices) {}
@@ -35,7 +35,9 @@
 
   int case;
   rational[] x;
+  rational[] xStandard;
   rational cost;
+  rational[] d;
 
   int m,n;
   int J;
@@ -319,9 +321,8 @@
 
     case=(dual ? iterateDual : iterate)(D,n,Bindices);
     simplexTableau(D,Bindices);
-    if(case != OPTIMAL)
-      return;
 
+    x=new rational[n];
     for(int j=0; j < n; ++j)
       x[j]=0;
 
@@ -328,6 +329,18 @@
     for(int k=0; k < m; ++k)
       x[Bindices[k]-1]=D[k][0];
 
+    if(case == UNBOUNDED) {
+      d=new rational[n];
+      for(int j=0; j < n; ++j)
+        d[j]=0;
+      d[J-1]=1;
+      for(int k=0; k < m; ++k)
+        d[Bindices[k]-1]=-D[k][J];
+    }
+
+    if(case != OPTIMAL)
+      return;
+
     cost=-Dm[0];
   }
 
@@ -391,10 +404,13 @@
     }
 
     rational[] C=concat(c,array(count,rational(0)));
-    if(count > 0) simplexStandard(C,a,b);
+    simplexInit(C,a,b,count);
     operator init(C,a,b,phase1,dual);
 
-    if(case == OPTIMAL && count > 0)
-      x.delete(n,n+count-1);
+    if(case != INFEASIBLE) {
+      xStandard=copy(x);
+      if(count > 0)
+        x.delete(n,n+count-1);
+    }
   }
 }

Modified: trunk/Build/source/utils/asymptote/base/slide.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/slide.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/slide.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -309,7 +309,7 @@
 
 void center(string s, pen p=itempen)
 {
-  remark("\center "+s,p);
+  remark(center=true,"\center "+s,p);
 }
 
 void vbox(string s, pen p=itempen)

Modified: trunk/Build/source/utils/asymptote/base/slopefield.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/slopefield.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/slopefield.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -19,7 +19,6 @@
       draw(pic,(cp.x-mp,cp.y-mp*slope)--(cp.x+mp,cp.y+mp*slope),p,arrow); 
     }
   }
-  clip(pic,box(a,b));
   return pic;
 }
 

Modified: trunk/Build/source/utils/asymptote/base/three.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/three.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/three.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1065,7 +1065,7 @@
 
 triple dir(path3 p, path3 h)
 {
-  return 0.5*(dir(p)+dir(h));
+  return unit(dir(p)+dir(h));
 }
 
 // return the point on path3 p at arclength L
@@ -1880,6 +1880,14 @@
   return c >= 0 ? identity(4) : diagonal(1,-1,-1,1);
 }
 
+// Align Label with normal in direction dir.
+Label align(Label L, triple dir)
+{
+  Label L=L.copy();
+  L.transform3(align(unit(dir)));
+  return L;
+}
+
 // return a rotation that maps X,Y to the projection plane.
 transform3 transform3(projection P=currentprojection)
 {
@@ -2554,25 +2562,6 @@
     Format(t[0][3])+sep+Format(t[1][3])+sep+Format(t[2][3]);
 }
 
-void writeJavaScript(string name, string preamble, string script) 
-{
-  file out=output(name);
-  write(out,preamble);
-  if(script != "") {
-    write(out,endl);
-    file in=input(script);
-    while(true) {
-      string line=in;
-      if(eof(in)) break;
-      write(out,line,endl);
-    }
-  }
-  close(out);
-  if(settings.verbose > 1) write("Wrote "+name);
-  if(!settings.inlinetex)
-    file3.push(name);
-}
-
 pair viewportmargin(pair lambda)
 {
   return maxbound(0.5*(viewportsize-lambda),viewportmargin);
@@ -2678,13 +2667,13 @@
 
     if(!P.absolute) {
       this.P=t*P;
+      if(this.P.autoadjust || this.P.infinity)
+        adjusted=adjusted | this.P.adjust(m,M);
       if(this.P.center && settings.render != 0) {
         triple target=0.5*(m+M);
         this.P.target=target;
         this.P.calculate();
       }
-      if(this.P.autoadjust || this.P.infinity) 
-        adjusted=adjusted | this.P.adjust(m,M);
     }
 
     bool scale=xsize != 0 || ysize != 0;

Modified: trunk/Build/source/utils/asymptote/base/three_light.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/three_light.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/three_light.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -125,7 +125,7 @@
                              rgb(0.5,0.5,0.57)},specularfactor=3,
   new triple[] {(-2,-1.5,-0.5),(2,1.1,-2.5),(-0.5,0,2)});
 
-light Headlamp=light(gray(0.8),specular=gray(0.7),
+light Headlamp=light(white,specular=gray(0.7),
                      specularfactor=3,dir(42,48));
 
 currentlight=Headlamp;

Modified: trunk/Build/source/utils/asymptote/base/three_surface.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/three_surface.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/three_surface.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1374,6 +1374,10 @@
             bool primitive=false)
 {
   bool straight=s.straight && s.planar;
+
+  // Planar Bezier surfaces require extra precision in WebGL
+  int digits=s.planar && !straight ? 12 : settings.digits;
+
   if(s.colors.length > 0) {
     if(prc() && light.on())
         straight=false; // PRC vertex colors (for quads only) ignore lighting
@@ -1383,7 +1387,7 @@
   
   (s.triangular ? drawbeziertriangle : draw)
     (f,s.P,center,straight,m.p,m.opacity,m.shininess,
-     m.metallic,m.fresnel0,s.colors,interaction.type,primitive);
+     m.metallic,m.fresnel0,s.colors,interaction.type,digits,primitive);
 }
 
 void _draw(frame f, path3 g, triple center=O, material m,
@@ -1500,8 +1504,18 @@
     p.push(p[0]);
     s=tensor(s);        
   } else p=s.colors(m,light);
-  tensorshade(f,box(t*s.min(P),t*s.max(P)),m.diffuse(),
-              p,t*project(s.external(),P,1),t*project(s.internal(),P));
+  path g=t*project(s.external(),P,1);
+  pair[] internal=t*project(s.internal(),P);
+  pen fillrule=m.diffuse();
+  if(inside(g,internal[0],fillrule) && inside(g,internal[1],fillrule) &&
+     inside(g,internal[2],fillrule) && inside(g,internal[3],fillrule)) {
+    if(p[0] == p[1] && p[1] == p[2] && p[2] == p[3])
+      fill(f,g,fillrule+p[0]);
+    else
+      tensorshade(f,g,fillrule,p,internal);
+  } else {
+    tensorshade(f,box(t*s.min(P),t*s.max(P)),fillrule,p,g,internal);
+  }
 }
 
 restricted pen[] nullpens={nullpen};

Modified: trunk/Build/source/utils/asymptote/base/three_tube.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/three_tube.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/three_tube.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -159,10 +159,10 @@
     triple c0=postcontrol(g,0);
     triple c1=precontrol(g,1);
     triple z1=point(g,1);
-    real norm=sqrtEpsilon*max(abs(z0),abs(c0),abs(c1),abs(z1));
+    real norm=sqrtEpsilon*max(abs(z0),abs(c0),abs(c1),abs(z1),r);
     surface[] s;
     void Split(triple z0, triple c0, triple c1, triple z1,
-               real depth=mantissaBits) {
+               int depth=mantissaBits) {
       if(depth > 0) {
         pair threshold(triple z0, triple c0, triple c1) {
           triple u=c1-z0;

Modified: trunk/Build/source/utils/asymptote/base/tube.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/tube.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/tube.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -14,10 +14,10 @@
 void render(path3 s, real r, void f(path3, real))
 {
   void Split(triple z0, triple c0, triple c1, triple z1, real t0=0, real t1=1,
-             real depth=mantissaBits) {
+             int depth=mantissaBits) {
     if(depth > 0) {
       real S=straightness(z0,c0,c1,z1);
-      if(S > max(tubegranularity*max(abs(z0),abs(c0),abs(c1),abs(z1)))) {
+      if(S > max(tubegranularity*max(abs(z0),abs(c0),abs(c1),abs(z1),r))) {
         --depth;
         triple m0=0.5*(z0+c0);
         triple m1=0.5*(c0+c1);

Deleted: trunk/Build/source/utils/asymptote/base/unicode.asy
===================================================================
--- trunk/Build/source/utils/asymptote/base/unicode.asy	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/unicode.asy	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1,2 +0,0 @@
-usepackage("ucs");
-usepackage("inputenc","utf8x");

Modified: trunk/Build/source/utils/asymptote/base/webgl/asygl.js
===================================================================
--- trunk/Build/source/utils/asymptote/base/webgl/asygl.js	2021-01-02 00:56:09 UTC (rev 57290)
+++ trunk/Build/source/utils/asymptote/base/webgl/asygl.js	2021-01-02 16:31:31 UTC (rev 57291)
@@ -1,6 +1,6 @@
 /*@license
  AsyGL: Render Bezier patches and triangles via subdivision with WebGL.
-  Copyright 2019: John C. Bowman and Supakorn "Jamie" Rassameemasmuang
+  Copyright 2019-2020: John C. Bowman and Supakorn "Jamie" Rassameemasmuang
   University of Alberta
 
 This program is free software; you can redistribute it and/or modify
@@ -36,4 +36,4 @@
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.*/
-let vertex="\nattribute vec3 position;\n#ifdef WIDTH\nattribute float width;\n#endif\n#ifdef NORMAL\nattribute vec3 normal;\n#endif\nattribute float materialIndex;\n#ifdef COLOR\nattribute vec4 color;\n#endif\n\nuniform mat3 normMat;\nuniform mat4 viewMat;\nuniform mat4 projViewMat;\n\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\nvarying vec3 ViewPosition;\n#endif\nvarying vec3 Normal;\n#endif\nvarying vec4 diffuse;\nvarying vec3 specular;\nvarying float roughness,metallic,fresnel0;\nvarying vec4 emissive;\n\nstruct Material {\n  vec4 diffuse,emissive,specular;\n  vec4 parameters;\n};\n\nuniform Material Materials[Nmaterials];\n\nvoid main(void)\n{\n  vec4 v=vec4(position,1.0);\n  gl_Position=projViewMat*v;\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\n  ViewPosition=(viewMat*v).xyz;\n#endif      \n  Normal=normalize(normal*normMat);\n        \n  Material m;\n#ifdef TRANSPARENT\n  m=Materials[int(abs(materialIndex))-1];\n  emissive=m.emissive;\n  if(materialIndex >= 0.0) {\n    diffuse=m.diffuse;\n  } else {\n    diffuse=color;\n#if nlights == 0\n    emissive += color;\n#endif\n  }\n#else\n  m=Materials[int(materialIndex)];\n  emissive=m.emissive;\n#ifdef COLOR\n  diffuse=color;\n#if nlights == 0\n    emissive += color;\n#endif\n#else\n  diffuse=m.diffuse;\n#endif\n#endif\n  specular=m.specular.rgb;\n  vec4 parameters=m.parameters;\n  roughness=1.0-parameters[0];\n  metallic=parameters[1];\n  fresnel0=parameters[2];\n#else\n  emissive=Materials[int(materialIndex)].emissive;\n#endif\n#ifdef WIDTH\n  gl_PointSize=width;\n#endif\n}\n",fragment="\n#ifdef NORMAL\n#ifndef ORTHOGRAPHIC\nvarying vec3 ViewPosition;\n#endif\nvarying vec3 Normal;\nvarying vec4 diffuse;\nvarying vec3 specular;\nvarying float roughness,metallic,fresnel0;\n\nfloat Roughness2;\nvec3 normal;\n\nstruct Light {\n  vec3 direction;\n  vec3 color;\n};\n\nuniform Light Lights[Nlights];\n\nfloat NDF_TRG(vec3 h)\n{\n  float ndoth=max(dot(normal,h),0.0);\n  float alpha2=Roughness2*Roughness2;\n  float denom=ndoth*ndoth*(alpha2-1.0)+1.0;\n  return denom != 0.0 !
 ? alpha2/(denom*denom) : 0.0;\n}\n    \nfloat GGX_Geom(vec3 v)\n{\n  float ndotv=max(dot(v,normal),0.0);\n  float ap=1.0+Roughness2;\n  float k=0.125*ap*ap;\n  return ndotv/((ndotv*(1.0-k))+k);\n}\n    \nfloat Geom(vec3 v, vec3 l)\n{\n  return GGX_Geom(v)*GGX_Geom(l);\n}\n    \nfloat Fresnel(vec3 h, vec3 v, float fresnel0)\n{\n  float a=1.0-max(dot(h,v),0.0);\n  float b=a*a;\n  return fresnel0+(1.0-fresnel0)*b*b*a;\n}\n    \n// physical based shading using UE4 model.\nvec3 BRDF(vec3 viewDirection, vec3 lightDirection)\n{\n  vec3 lambertian=diffuse.rgb;\n  vec3 h=normalize(lightDirection+viewDirection);\n      \n  float omegain=max(dot(viewDirection,normal),0.0);\n  float omegali=max(dot(lightDirection,normal),0.0);\n      \n  float D=NDF_TRG(h);\n  float G=Geom(viewDirection,lightDirection);\n  float F=Fresnel(h,viewDirection,fresnel0);\n      \n  float denom=4.0*omegain*omegali;\n  float rawReflectance=denom > 0.0 ? (D*G)/denom : 0.0;\n      \n  vec3 dielectric=mix(lambertian,rawReflectance*specular,F);\n  vec3 metal=rawReflectance*diffuse.rgb;\n      \n  return mix(dielectric,metal,metallic);\n}\n#endif\nvarying vec4 emissive;\n    \nvoid main(void)\n{\n#if defined(NORMAL) && nlights > 0\n  normal=normalize(Normal);\n  normal=gl_FrontFacing ? normal : -normal;\n#ifdef ORTHOGRAPHIC\n  vec3 viewDir=vec3(0.0,0.0,1.0);\n#else\n  vec3 viewDir=-normalize(ViewPosition);\n#endif\n  Roughness2=roughness*roughness;\n  vec3 color=emissive.rgb;\n  for(int i=0; i < nlights; ++i) {\n    Light Li=Lights[i];\n    vec3 L=Li.direction;\n    float cosTheta=max(dot(normal,L),0.0);\n    vec3 radiance=cosTheta*Li.color;\n    color += BRDF(viewDir,L)*radiance;\n  }\n  gl_FragColor=vec4(color,diffuse.a);\n#else\n  gl_FragColor=emissive;\n#endif\n}\n";!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i=e();for(var a in i)("object"==typeof exports?exports:t)[a]=i[a]}}("undefined"!=typeof self?self:this,function(){return function(t){!
 var e={};function i(a){if(e[a])return e[a].exports;var r=e[a]={i:a,l:!1,exports:{}};return t[a].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.d=function(t,e,a){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:a})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=1)}([function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.setMatrixArrayType=function(t){e.ARRAY_TYPE=t},e.toRadian=function(t){return t*r},e.equals=function(t,e){return Math.abs(t-e)<=a*Math.max(1,Math.abs(t),Math.abs(e))};var a=e.EPSILON=1e-6;e.ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array,e.RANDOM=Math.random;var r=Math.PI/180},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mat4=e.mat3=void 0;var a=n(i(2)),r=n(i(3));function n(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}e.mat3=a,e.mat4=r},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=function(){var t=new a.ARRAY_TYPE(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromMat4=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t},e.invert=function(t,e){var i=e[0],a=e[1],r=e[2],n=e[3],s=e[4],o=e[5],h=e[6],l=e[7],d=e[8],c=d*s-o*l,m=-d*n+o*h,f=l*n-s*h,u=i*c+a*m+r*f;if(!u)return null;return u=1/u,t[0]=c*u,t[1]=(-d*a+r*l)*u,t[2]=(o*a-r*s)*u,t[3]=m*u,t[4]=(d*i-r*h)*u,t[5]=(-o*i+r*n)*u,t[6]=f*u,t[7]=(-l*i+a*h)*u,t[8]=(s*i-a*n)*u,t};var a=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}(i(0))},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.create=function(){var t=new a.ARRAY_TYPE(16);return t[0]!
 =1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.invert=function(t,e){var i=e[0],a=e[1],r=e[2],n=e[3],s=e[4],o=e[5],h=e[6],l=e[7],d=e[8],c=e[9],m=e[10],f=e[11],u=e[12],p=e[13],v=e[14],g=e[15],w=i*o-a*s,x=i*h-r*s,M=i*l-n*s,b=a*h-r*o,A=a*l-n*o,S=r*l-n*h,P=d*p-c*u,R=d*v-m*u,T=d*g-f*u,y=c*v-m*p,D=c*g-f*p,I=m*g-f*v,z=w*I-x*D+M*y+b*T-A*R+S*P;if(!z)return null;return z=1/z,t[0]=(o*I-h*D+l*y)*z,t[1]=(r*D-a*I-n*y)*z,t[2]=(p*S-v*A+g*b)*z,t[3]=(m*A-c*S-f*b)*z,t[4]=(h*T-s*I-l*R)*z,t[5]=(i*I-r*T+n*R)*z,t[6]=(v*M-u*S-g*x)*z,t[7]=(d*S-m*M+f*x)*z,t[8]=(s*D-o*T+l*P)*z,t[9]=(a*T-i*D-n*P)*z,t[10]=(u*A-p*M+g*w)*z,t[11]=(c*M-d*A-f*w)*z,t[12]=(o*R-s*y-h*P)*z,t[13]=(i*y-a*R+r*P)*z,t[14]=(p*x-u*b-v*w)*z,t[15]=(d*b-c*x+m*w)*z,t},e.multiply=r,e.translate=function(t,e,i){var a=i[0],r=i[1],n=i[2],s=void 0,o=void 0,h=void 0,l=void 0,d=void 0,c=void 0,m=void 0,f=void 0,u=void 0,p=void 0,v=void 0,g=void 0;e===t?(t[12]=e[0]*a+e[4]*r+e[8]*n+e[12],t[13]=e[1]*a+e[5]*r+e[9]*n+e[13],t[14]=e[2]*a+e[6]*r+e[10]*n+e[14],t[15]=e[3]*a+e[7]*r+e[11]*n+e[15]):(s=e[0],o=e[1],h=e[2],l=e[3],d=e[4],c=e[5],m=e[6],f=e[7],u=e[8],p=e[9],v=e[10],g=e[11],t[0]=s,t[1]=o,t[2]=h,t[3]=l,t[4]=d,t[5]=c,t[6]=m,t[7]=f,t[8]=u,t[9]=p,t[10]=v,t[11]=g,t[12]=s*a+d*r+u*n+e[12],t[13]=o*a+c*r+p*n+e[13],t[14]=h*a+m*r+v*n+e[14],t[15]=l*a+f*r+g*n+e[15]);return t},e.rotate=function(t,e,i,r){var n=r[0],s=r[1],o=r[2],h=Math.sqrt(n*n+s*s+o*o),l=void 0,d=void 0,c=void 0,m=void 0,f=void 0,u=void 0,p=void 0,v=void 0,g=void 0,w=void 0,x=void 0,M=void 0,b=void 0,A=void 0,S=void 0,P=void 0,R=void 0,T=void 0,y=void 0,D=void 0,I=void 0,z=void 0,E=void 0,O=void 0;if(Math.abs(h)<a.EPSILON)return null;n*=h=1/h,s*=h,o*=h,l=Math.sin(i),d=Math.cos(i),c=1-d,m=e[0],f=e[1],u=e[2],p=e[3],v=e[4],g=e[5],w=e[6],x=e[7],M=e[8],b=e[9],A=e[10],S=e[11],P=n*n*c+d,R=s*n*c+o*l,T=o*n*c-s*l,y=n*s*c-o*l,D!
 =s*s*c+d,I=o*s*c+n*l,z=n*o*c+s*l,E=s*o*c-n*l,O=o*o*c+d,t[0]=m*P+v*R+M*T,t[1]=f*P+g*R+b*T,t[2]=u*P+w*R+A*T,t[3]=p*P+x*R+S*T,t[4]=m*y+v*D+M*I,t[5]=f*y+g*D+b*I,t[6]=u*y+w*D+A*I,t[7]=p*y+x*D+S*I,t[8]=m*z+v*E+M*O,t[9]=f*z+g*E+b*O,t[10]=u*z+w*E+A*O,t[11]=p*z+x*E+S*O,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]);return t},e.fromTranslation=function(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t},e.fromRotation=function(t,e,i){var r=i[0],n=i[1],s=i[2],o=Math.sqrt(r*r+n*n+s*s),h=void 0,l=void 0,d=void 0;if(Math.abs(o)<a.EPSILON)return null;return r*=o=1/o,n*=o,s*=o,h=Math.sin(e),l=Math.cos(e),d=1-l,t[0]=r*r*d+l,t[1]=n*r*d+s*h,t[2]=s*r*d-n*h,t[3]=0,t[4]=r*n*d-s*h,t[5]=n*n*d+l,t[6]=s*n*d+r*h,t[7]=0,t[8]=r*s*d+n*h,t[9]=n*s*d-r*h,t[10]=s*s*d+l,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.frustum=function(t,e,i,a,r,n,s){var o=1/(i-e),h=1/(r-a),l=1/(n-s);return t[0]=2*n*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*n*h,t[6]=0,t[7]=0,t[8]=(i+e)*o,t[9]=(r+a)*h,t[10]=(s+n)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=s*n*2*l,t[15]=0,t},e.ortho=function(t,e,i,a,r,n,s){var o=1/(e-i),h=1/(a-r),l=1/(n-s);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*h,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+i)*o,t[13]=(r+a)*h,t[14]=(s+n)*l,t[15]=1,t};var a=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}(i(0));function r(t,e,i){var a=e[0],r=e[1],n=e[2],s=e[3],o=e[4],h=e[5],l=e[6],d=e[7],c=e[8],m=e[9],f=e[10],u=e[11],p=e[12],v=e[13],g=e[14],w=e[15],x=i[0],M=i[1],b=i[2],A=i[3];return t[0]=x*a+M*o+b*c+A*p,t[1]=x*r+M*h+b*m+A*v,t[2]=x*n+M*l+b*f+A*g,t[3]=x*s+M*d+b*u+A*w,x=i[4],M=i[5],b=i[6],A=i[7],t[4]=x*a+M*o+b*c+A*p,t[5]=x*r+M*h+b*m+A*v,t[6]=x*n+M*l+b*f+A*g,t[7]=x*s+M*d+b*u+A*w,x=i[8],M=i[9],b=i[10],A=i[11],t[8]=x*a+M*o+b*c+A*p,t[9]=x*r+M*h+b*m+A*v,t[10]=x*n+M*l+b*f+A*g,t[11]=x*s+M*d+b*u+A*w,x=i[12],M=i[13],b=i[14],A=i[15],t[12]=x*a+M*o+b*c+A*p,t[13!
 ]=x*r+M*h+b*m+A*v,t[14]=x*n+M*l+b*f+A*g,t[15]=x*s+M*d+b*u+A*w,t}}])});let canvasWidth,canvasHeight,b,B,angle,Zoom0,viewportmargin,zoomFactor,zoomPinchFactor,zoomPinchCap,zoomStep,shiftHoldDistance,shiftWaitTime,vibrateTime,embedded,canvas,gl,alpha,offscreen,context,maxMaterials,halfCanvasWidth,halfCanvasHeight,Zoom,P=[],Materials=[],Lights=[],Centers=[],Background=[1,1,1,1],absolute=!1,viewportshift=[0,0],nlights=0,Nmaterials=2,materials=[],pixel=.75,FillFactor=.1,maxViewportWidth=window.innerWidth,maxViewportHeight=window.innerHeight;const windowTrim=10;let lastzoom,H,zmin,zmax,size2,ArcballFactor,positionBuffer,materialBuffer,colorBuffer,indexBuffer,resizeStep=1.2,third=1/3,rotMat=mat4.create(),projMat=mat4.create(),viewMat=mat4.create(),projViewMat=mat4.create(),normMat=mat3.create(),viewMat3=mat3.create(),cjMatInv=mat4.create(),T=mat4.create(),center={x:0,y:0,z:0},shift={x:0,y:0},viewParam={xmin:0,xmax:0,ymin:0,ymax:0,zmin:0,zmax:0},remesh=!0,wireframe=0,mouseDownOrTouchActive=!1,lastMouseX=null,lastMouseY=null,touchID=null,Positions=[],Normals=[],Colors=[],Indices=[];class Material{constructor(t,e,i,a,r,n){this.diffuse=t,this.emissive=e,this.specular=i,this.shininess=a,this.metallic=r,this.fresnel0=n}setUniform(t,e){let i=i=>gl.getUniformLocation(t,"Materials["+e+"]."+i);gl.uniform4fv(i("diffuse"),new Float32Array(this.diffuse)),gl.uniform4fv(i("emissive"),new Float32Array(this.emissive)),gl.uniform4fv(i("specular"),new Float32Array(this.specular)),gl.uniform4f(i("parameters"),this.shininess,this.metallic,this.fresnel0,0)}}let indexExt,TRIANGLES,material0Data,material1Data,materialData,colorData,transparentData,triangleData,materialIndex,enumPointLight=1,enumDirectionalLight=2;class Light{constructor(t,e){this.direction=t,this.color=e}setUniform(t,e){let i=i=>gl.getUniformLocation(t,"Lights["+e+"]."+i);gl.uniform3fv(i("direction"),new Float32Array(this.direction)),gl.uniform3fv(i("color"),new Float32Array(this.color))}}function initShaders(){let t=gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);maxMaterials=!
 Math.floor((t-14)/4),Nmaterials=Math.min(Math.max(Nmaterials,Materials.length),maxMaterials),pixelShader=initShader(["WIDTH"]),materialShader=initShader(["NORMAL"]),colorShader=initShader(["NORMAL","COLOR"]),transparentShader=initShader(["NORMAL","COLOR","TRANSPARENT"])}function deleteShaders(){gl.deleteProgram(transparentShader),gl.deleteProgram(colorShader),gl.deleteProgram(materialShader),gl.deleteProgram(pixelShader)}function setBuffers(){positionBuffer=gl.createBuffer(),materialBuffer=gl.createBuffer(),colorBuffer=gl.createBuffer(),indexBuffer=gl.createBuffer()}function noGL(){gl||alert("Could not initialize WebGL")}function saveAttributes(){let t=window.top.document.asygl[alpha];t.gl=gl,t.nlights=Lights.length,t.Nmaterials=Nmaterials,t.maxMaterials=maxMaterials,t.pixelShader=pixelShader,t.materialShader=materialShader,t.colorShader=colorShader,t.transparentShader=transparentShader}function restoreAttributes(){let t=window.top.document.asygl[alpha];gl=t.gl,nlights=t.nlights,Nmaterials=t.Nmaterials,maxMaterials=t.maxMaterials,pixelShader=t.pixelShader,materialShader=t.materialShader,colorShader=t.colorShader,transparentShader=t.transparentShader}function initGL(){if(alpha=Background[3]<1,embedded){let t=window.top.document;null==t.asygl&&(t.asygl=Array(2)),context=canvas.getContext("2d"),(offscreen=t.offscreen)||(offscreen=t.createElement("canvas"),t.offscreen=offscreen),t.asygl[alpha]&&t.asygl[alpha].gl?(restoreAttributes(),(Lights.length!=nlights||Math.min(Materials.length,maxMaterials)>Nmaterials)&&(initShaders(),saveAttributes())):((gl=offscreen.getContext("webgl",{alpha:alpha}))||noGL(),initShaders(),t.asygl[alpha]={},saveAttributes())}else(gl=canvas.getContext("webgl",{alpha:alpha}))||noGL(),initShaders();setBuffers(),indexExt=gl.getExtension("OES_element_index_uint"),TRIANGLES=gl.TRIANGLES,material0Data=new vertexBuffer(gl.POINTS),material1Data=new vertexBuffer(gl.LINES),materialData=new vertexBuffer,colorData=new vertexBuffer,transparentData=new vertexBuffer,triangleData=new vertexBuffer}function get!
 Shader(t,e,i,a=[]){let r=`#version 100\n#ifdef GL_FRAGMENT_PRECISION_HIGH\n  precision highp float;\n#else\n  precision mediump float;\n#endif\n  #define nlights ${0==wireframe?Lights.length:0}\n\n  const int Nlights=${Math.max(Lights.length,1)};\n\n  #define Nmaterials ${Nmaterials}\n`;orthographic&&(r+="#define ORTHOGRAPHIC\n"),a.forEach(t=>r+="#define "+t+"\n");let n=t.createShader(i);return t.shaderSource(n,r+e),t.compileShader(n),t.getShaderParameter(n,t.COMPILE_STATUS)?n:(alert(t.getShaderInfoLog(n)),null)}function drawBuffer(t,e,i=t.indices){if(0==t.indices.length)return;let a=e!=pixelShader;setUniforms(t,e),gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer),gl.bufferData(gl.ARRAY_BUFFER,new Float32Array(t.vertices),gl.STATIC_DRAW),gl.vertexAttribPointer(positionAttribute,3,gl.FLOAT,!1,a?24:16,0),a&&Lights.length>0?gl.vertexAttribPointer(normalAttribute,3,gl.FLOAT,!1,24,12):pixel&&gl.vertexAttribPointer(widthAttribute,1,gl.FLOAT,!1,16,12),gl.bindBuffer(gl.ARRAY_BUFFER,materialBuffer),gl.bufferData(gl.ARRAY_BUFFER,new Int16Array(t.materialIndices),gl.STATIC_DRAW),gl.vertexAttribPointer(materialAttribute,1,gl.SHORT,!1,2,0),e!=colorShader&&e!=transparentShader||(gl.bindBuffer(gl.ARRAY_BUFFER,colorBuffer),gl.bufferData(gl.ARRAY_BUFFER,new Uint8Array(t.colors),gl.STATIC_DRAW),gl.vertexAttribPointer(colorAttribute,4,gl.UNSIGNED_BYTE,!0,0,0)),gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,indexBuffer),gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,indexExt?new Uint32Array(i):new Uint16Array(i),gl.STATIC_DRAW),gl.drawElements(a?wireframe?gl.LINES:t.type:gl.POINTS,i.length,indexExt?gl.UNSIGNED_INT:gl.UNSIGNED_SHORT,0)}class vertexBuffer{constructor(t){this.type=t||TRIANGLES,this.clear()}clear(){this.vertices=[],this.materialIndices=[],this.colors=[],this.indices=[],this.nvertices=0,this.materials=[],this.materialTable=[]}vertex(t,e){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e[0]),this.vertices.push(e[1]),this.vertices.push(e[2]),this.materialIndices.push(materialIndex),this.nver!
 tices++}Vertex(t,e,i=[0,0,0,0]){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e[0]),this.vertices.push(e[1]),this.vertices.push(e[2]),this.materialIndices.push(materialIndex),this.colors.push(i[0]),this.colors.push(i[1]),this.colors.push(i[2]),this.colors.push(i[3]),this.nvertices++}vertex0(t,e){return this.vertices.push(t[0]),this.vertices.push(t[1]),this.vertices.push(t[2]),this.vertices.push(e),this.materialIndices.push(materialIndex),this.nvertices++}iVertex(t,e,i,a=[0,0,0,0]){let r=6*t;this.vertices[r]=e[0],this.vertices[r+1]=e[1],this.vertices[r+2]=e[2],this.vertices[r+3]=i[0],this.vertices[r+4]=i[1],this.vertices[r+5]=i[2],this.materialIndices[t]=materialIndex;let n=4*t;this.colors[n]=a[0],this.colors[n+1]=a[1],this.colors[n+2]=a[2],this.colors[n+3]=a[3],this.indices.push(t)}append(t){append(this.vertices,t.vertices),append(this.materialIndices,t.materialIndices),append(this.colors,t.colors),appendOffset(this.indices,t.indices,this.nvertices),this.nvertices+=t.nvertices}}function append(t,e){let i=t.length,a=e.length;t.length+=a;for(let r=0;r<a;++r)t[i+r]=e[r]}function appendOffset(t,e,i){let a=t.length,r=e.length;t.length+=e.length;for(let n=0;n<r;++n)t[a+n]=e[n]+i}class Geometry{constructor(){this.data=new vertexBuffer,this.Onscreen=!1,this.m=[]}offscreen(t){let e=projViewMat,i=t[0],a=i[0],r=i[1],n=i[2],s=1/(e[3]*a+e[7]*r+e[11]*n+e[15]);this.x=this.X=(e[0]*a+e[4]*r+e[8]*n+e[12])*s,this.y=this.Y=(e[1]*a+e[5]*r+e[9]*n+e[13])*s;for(let i=1,a=t.length;i<a;++i){let a=t[i],r=a[0],n=a[1],s=a[2],o=1/(e[3]*r+e[7]*n+e[11]*s+e[15]),h=(e[0]*r+e[4]*n+e[8]*s+e[12])*o,l=(e[1]*r+e[5]*n+e[9]*s+e[13])*o;h<this.x?this.x=h:h>this.X&&(this.X=h),l<this.y?this.y=l:l>this.Y&&(this.Y=l)}return(this.X<-1.01||this.x>1.01||this.Y<-1.01||this.y>1.01)&&(this.Onscreen=!1,!0)}T(t){let e=this.c[0],i=this.c[1],a=this.c[2],r=t[0]-e,n=t[1]-i,s=t[2]-a;return[r*normMat[0]+n*normMat[3]+s*normMat[6]+e,r*normMat[1]+n*normMat[4]+s*normMat[7]+i,r*normMat[2]+n*normMat[5]+s*normMat[8]+a]}Tcorn!
 ers(t,e){return[this.T(t),this.T([t[0],t[1],e[2]]),this.T([t[0],e[1],t[2]]),this.T([t[0],e[1],e[2]]),this.T([e[0],t[1],t[2]]),this.T([e[0],t[1],e[2]]),this.T([e[0],e[1],t[2]]),this.T(e)]}setMaterial(t,e){null==t.materialTable[this.MaterialIndex]&&(t.materials.length>=Nmaterials&&e(),t.materialTable[this.MaterialIndex]=t.materials.length,t.materials.push(Materials[this.MaterialIndex])),materialIndex=t.materialTable[this.MaterialIndex]}render(){let t;if(this.setMaterialIndex(),0==this.CenterIndex?t=corners(this.Min,this.Max):(this.c=Centers[this.CenterIndex-1],t=this.Tcorners(this.Min,this.Max)),this.offscreen(t))return void this.data.clear();let e,i=this.controlpoints;if(0==this.CenterIndex){if(!remesh&&this.Onscreen)return void this.append();e=i}else{let t=i.length;e=Array(t);for(let a=0;a<t;++a)e[a]=this.T(i[a])}let a=orthographic?1:this.Min[2]/B[2],r=pixel*Math.hypot(a*(viewParam.xmax-viewParam.xmin),a*(viewParam.ymax-viewParam.ymin))/size2;this.res2=r*r,this.Epsilon=FillFactor*r,this.data.clear(),this.Onscreen=!0,this.process(e)}}class BezierPatch extends Geometry{constructor(t,e,i,a,r,n){super(),this.controlpoints=t,this.Min=a,this.Max=r,this.color=n,this.CenterIndex=e;let s=t.length;if(n){let t=n[0][3]+n[1][3]+n[2][3];this.transparent=16==s||4==s?t+n[3][3]<1020:t<765}else this.transparent=Materials[i].diffuse[3]<1;this.MaterialIndex=i,this.vertex=this.transparent?this.data.Vertex.bind(this.data):this.data.vertex.bind(this.data),this.L2norm(this.controlpoints)}setMaterialIndex(){this.transparent?this.setMaterial(transparentData,drawTransparent):this.color?this.setMaterial(colorData,drawColor):this.setMaterial(materialData,drawMaterial)}L2norm(t){let e=t[0];this.epsilon=0;let i=t.length;for(let a=1;a<i;++a)this.epsilon=Math.max(this.epsilon,abs2([t[a][0]-e[0],t[a][1]-e[1],t[a][2]-e[2]]));this.epsilon*=Number.EPSILON}processTriangle(t){let e=t[0],i=t[1],a=t[2],r=unit(cross([i[0]-e[0],i[1]-e[1],i[2]-e[2]],[a[0]-e[0],a[1]-e[1],a[2]-e[2]]));if(!this.offscreen([e,i,a])){let t,n,s;this.color?(t=this.data.Vertex(e,r!
 ,this.color[0]),n=this.data.Vertex(i,r,this.color[1]),s=this.data.Vertex(a,r,this.color[2])):(t=this.vertex(e,r),n=this.vertex(i,r),s=this.vertex(a,r)),0==wireframe?(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(s)):(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(n),this.data.indices.push(s),this.data.indices.push(s),this.data.indices.push(t)),this.append()}}processQuad(t){let e=t[0],i=t[1],a=t[2],r=t[3],n=cross([i[0]-e[0],i[1]-e[1],i[2]-e[2]],[a[0]-i[0],a[1]-i[1],a[2]-i[2]]),s=cross([a[0]-r[0],a[1]-r[1],a[2]-r[2]],[r[0]-e[0],r[1]-e[1],r[2]-e[2]]),o=unit([n[0]+s[0],n[1]+s[1],n[2]+s[2]]);if(!this.offscreen([e,i,a,r])){let t,n,s,h;this.color?(t=this.data.Vertex(e,o,this.color[0]),n=this.data.Vertex(i,o,this.color[1]),s=this.data.Vertex(a,o,this.color[2]),h=this.data.Vertex(r,o,this.color[3])):(t=this.vertex(e,o),n=this.vertex(i,o),s=this.vertex(a,o),h=this.vertex(r,o)),0==wireframe?(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(s),this.data.indices.push(t),this.data.indices.push(s),this.data.indices.push(h)):(this.data.indices.push(t),this.data.indices.push(n),this.data.indices.push(n),this.data.indices.push(s),this.data.indices.push(s),this.data.indices.push(h),this.data.indices.push(h),this.data.indices.push(t)),this.append()}}curve(t,e,i,a,r){new BezierCurve([t[e],t[i],t[a],t[r]],0,materialIndex,this.Min,this.Max).render()}process(t){if(this.transparent&&1!=wireframe&&(materialIndex=this.color?-1-materialIndex:1+materialIndex),10==t.length)return this.process3(t);if(3==t.length)return this.processTriangle(t);if(4==t.length)return this.processQuad(t);if(1==wireframe)return this.curve(t,0,4,8,12),this.curve(t,12,13,14,15),this.curve(t,15,11,7,3),void this.curve(t,3,2,1,0);let e=t[0],i=t[3],a=t[12],r=t[15],n=this.normal(i,t[2],t[1],e,t[4],t[8],a);abs2(n)<this.epsilon&&abs2(n=this.normal(i,t[2],t[1],e,t[13],t[14],r))<this.epsilon&&(n=this.normal(r,t[11],t[7],i,t[4],t[8],a));let s=this.normal(e,t[4],t[8],a,t[13],t[14],r);abs2(s)<th!
 is.epsilon&&abs2(s=this.normal(e,t[4],t[8],a,t[11],t[7],i))<this.epsilon&&(s=this.normal(i,t[2],t[1],e,t[13],t[14],r));let o=this.normal(a,t[13],t[14],r,t[11],t[7],i);abs2(o)<this.epsilon&&abs2(o=this.normal(a,t[13],t[14],r,t[2],t[1],e))<this.epsilon&&(o=this.normal(e,t[4],t[8],a,t[11],t[7],i));let h=this.normal(r,t[11],t[7],i,t[2],t[1],e);if(abs2(h)<this.epsilon&&abs2(h=this.normal(r,t[11],t[7],i,t[4],t[8],a))<this.epsilon&&(h=this.normal(a,t[13],t[14],r,t[2],t[1],e)),this.color){let l=this.color[0],d=this.color[1],c=this.color[2],m=this.color[3],f=this.data.Vertex(e,n,l),u=this.data.Vertex(a,s,d),p=this.data.Vertex(r,o,c),v=this.data.Vertex(i,h,m);this.Render(t,f,u,p,v,e,a,r,i,!1,!1,!1,!1,l,d,c,m)}else{let l=this.vertex(e,n),d=this.vertex(a,s),c=this.vertex(r,o),m=this.vertex(i,h);this.Render(t,l,d,c,m,e,a,r,i,!1,!1,!1,!1)}this.data.indices.length>0&&this.append()}append(){this.transparent?transparentData.append(this.data):this.color?colorData.append(this.data):materialData.append(this.data)}Render(t,e,i,a,r,n,s,o,h,l,d,c,m,f,u,p,v){let g=this.Distance(t);if(g[0]<this.res2&&g[1]<this.res2)this.offscreen([n,s,o])||(0==wireframe?(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(a)):(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(i),this.data.indices.push(a))),this.offscreen([n,o,h])||(0==wireframe?(this.data.indices.push(e),this.data.indices.push(a),this.data.indices.push(r)):(this.data.indices.push(a),this.data.indices.push(r),this.data.indices.push(r),this.data.indices.push(e)));else{if(this.offscreen(t))return;let w=t[0],x=t[3],M=t[12],b=t[15];if(g[0]<this.res2){let g=new Split3(w,t[1],t[2],x),A=new Split3(t[4],t[5],t[6],t[7]),S=new Split3(t[8],t[9],t[10],t[11]),P=new Split3(M,t[13],t[14],b),R=[w,g.m0,g.m3,g.m5,t[4],A.m0,A.m3,A.m5,t[8],S.m0,S.m3,S.m5,M,P.m0,P.m3,P.m5],T=[g.m5,g.m4,g.m2,x,A.m5,A.m4,A.m2,t[7],S.m5,S.m4,S.m2,t[11],P.m5,P.m4,P.m2,b],y=this.normal(R[12],R[13],R[14],R[15],R[11],R[7],R[3]);abs2(y)<=this.epsilon&&abs2(y=this.normal(R[12],R[13],R[1!
 4],R[15],R[2],R[1],R[0]))<=this.epsilon&&(y=this.normal(R[0],R[4],R[8],R[12],R[11],R[7],R[3]));let D=this.normal(T[3],T[2],T[1],T[0],T[4],T[8],T[12]);abs2(D)<=this.epsilon&&abs2(D=this.normal(T[3],T[2],T[1],T[0],T[13],T[14],T[15]))<=this.epsilon&&(D=this.normal(T[15],T[11],T[7],T[3],T[4],T[8],T[12]));let I=this.Epsilon,z=[.5*(s[0]+o[0]),.5*(s[1]+o[1]),.5*(s[2]+o[2])];if(!d)if(d=Straightness(M,t[13],t[14],b)<this.res2){let t=unit(this.differential(T[12],T[8],T[4],T[0]));z=[z[0]-I*t[0],z[1]-I*t[1],z[2]-I*t[2]]}else z=R[15];let E=[.5*(h[0]+n[0]),.5*(h[1]+n[1]),.5*(h[2]+n[2])];if(!m)if(m=Straightness(w,t[1],t[2],x)<this.res2){let t=unit(this.differential(R[3],R[7],R[11],R[15]));E=[E[0]-I*t[0],E[1]-I*t[1],E[2]-I*t[2]]}else E=T[0];if(f){let t=Array(4),g=Array(4);for(let e=0;e<4;++e)t[e]=.5*(u[e]+p[e]),g[e]=.5*(v[e]+f[e]);let w=this.data.Vertex(z,y,t),x=this.data.Vertex(E,D,g);this.Render(R,e,i,w,x,n,s,z,E,l,d,!1,m,f,u,t,g),this.Render(T,x,w,a,r,E,z,o,h,!1,d,c,m,g,t,p,v)}else{let t=this.vertex(z,y),f=this.vertex(E,D);this.Render(R,e,i,t,f,n,s,z,E,l,d,!1,m),this.Render(T,f,t,a,r,E,z,o,h,!1,d,c,m)}return}if(g[1]<this.res2){let g=new Split3(w,t[4],t[8],M),A=new Split3(t[1],t[5],t[9],t[13]),S=new Split3(t[2],t[6],t[10],t[14]),P=new Split3(x,t[7],t[11],b),R=[w,t[1],t[2],x,g.m0,A.m0,S.m0,P.m0,g.m3,A.m3,S.m3,P.m3,g.m5,A.m5,S.m5,P.m5],T=[g.m5,A.m5,S.m5,P.m5,g.m4,A.m4,S.m4,P.m4,g.m2,A.m2,S.m2,P.m2,M,t[13],t[14],b],y=this.normal(R[0],R[4],R[8],R[12],R[13],R[14],R[15]);abs2(y)<=this.epsilon&&abs2(y=this.normal(R[0],R[4],R[8],R[12],R[11],R[7],R[3]))<=this.epsilon&&(y=this.normal(R[3],R[2],R[1],R[0],R[13],R[14],R[15]));let D=this.normal(T[15],T[11],T[7],T[3],T[2],T[1],T[0]);abs2(D)<=this.epsilon&&abs2(D=this.normal(T[15],T[11],T[7],T[3],T[4],T[8],T[12]))<=this.epsilon&&(D=this.normal(T[12],T[13],T[14],T[15],T[2],T[1],T[0]));let I=this.Epsilon,z=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])];if(!l)if(l=Straightness(w,t[4],t[8],M)<this.res2){let t=unit(this.differential(T[0],T[1],T[2],T[3]));z=[z[0]-I*t[0],z[1]-I*t[1],z[2]-I*t[2]]}el!
 se z=R[12];let E=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])];if(!c)if(c=Straightness(b,t[11],t[7],x)<this.res2){let t=unit(this.differential(R[15],R[14],R[13],R[12]));E=[E[0]-I*t[0],E[1]-I*t[1],E[2]-I*t[2]]}else E=T[3];if(f){let t=Array(4),g=Array(4);for(let e=0;e<4;++e)t[e]=.5*(f[e]+u[e]),g[e]=.5*(p[e]+v[e]);let w=this.data.Vertex(z,y,t),x=this.data.Vertex(E,D,g);this.Render(R,e,w,x,r,n,z,E,h,l,!1,c,m,f,t,g,v),this.Render(T,w,i,a,x,z,s,o,E,l,d,c,!1,t,u,p,g)}else{let t=this.vertex(z,y),f=this.vertex(E,D);this.Render(R,e,t,f,r,n,z,E,h,l,!1,c,m),this.Render(T,t,i,a,f,z,s,o,E,l,d,c,!1)}return}let A=new Split3(w,t[1],t[2],x),S=new Split3(t[4],t[5],t[6],t[7]),P=new Split3(t[8],t[9],t[10],t[11]),R=new Split3(M,t[13],t[14],b),T=new Split3(w,t[4],t[8],M),y=new Split3(A.m0,S.m0,P.m0,R.m0),D=new Split3(A.m3,S.m3,P.m3,R.m3),I=new Split3(A.m5,S.m5,P.m5,R.m5),z=new Split3(A.m4,S.m4,P.m4,R.m4),E=new Split3(A.m2,S.m2,P.m2,R.m2),O=new Split3(x,t[7],t[11],b),L=[w,A.m0,A.m3,A.m5,T.m0,y.m0,D.m0,I.m0,T.m3,y.m3,D.m3,I.m3,T.m5,y.m5,D.m5,I.m5],N=[T.m5,y.m5,D.m5,I.m5,T.m4,y.m4,D.m4,I.m4,T.m2,y.m2,D.m2,I.m2,M,R.m0,R.m3,R.m5],_=[I.m5,z.m5,E.m5,O.m5,I.m4,z.m4,E.m4,O.m4,I.m2,z.m2,E.m2,O.m2,R.m5,R.m4,R.m2,b],B=[A.m5,A.m4,A.m2,x,I.m0,z.m0,E.m0,O.m0,I.m3,z.m3,E.m3,O.m3,I.m5,z.m5,E.m5,O.m5],V=L[15],C=this.normal(L[0],L[4],L[8],L[12],L[13],L[14],L[15]);abs2(C)<this.epsilon&&abs2(C=this.normal(L[0],L[4],L[8],L[12],L[11],L[7],L[3]))<this.epsilon&&(C=this.normal(L[3],L[2],L[1],L[0],L[13],L[14],L[15]));let F=this.normal(N[12],N[13],N[14],N[15],N[11],N[7],N[3]);abs2(F)<this.epsilon&&abs2(F=this.normal(N[12],N[13],N[14],N[15],N[2],N[1],N[0]))<this.epsilon&&(F=this.normal(N[0],N[4],N[8],N[12],N[11],N[7],N[3]));let H=this.normal(_[15],_[11],_[7],_[3],_[2],_[1],_[0]);abs2(H)<this.epsilon&&abs2(H=this.normal(_[15],_[11],_[7],_[3],_[4],_[8],_[12]))<this.epsilon&&(H=this.normal(_[12],_[13],_[14],_[15],_[2],_[1],_[0]));let G=this.normal(B[3],B[2],B[1],B[0],B[4],B[8],B[12]);abs2(G)<this.epsilon&&abs2(G=this.normal(B[3],B[2],B[1],B[0],B[13],B[14],B[15]))<t!
 his.epsilon&&(G=this.normal(B[15],B[11],B[7],B[3],B[4],B[8],B[12]));let U=this.normal(_[3],_[2],_[1],V,_[4],_[8],_[12]),W=this.Epsilon,Y=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])];if(!l)if(l=Straightness(w,t[4],t[8],M)<this.res2){let t=unit(this.differential(N[0],N[1],N[2],N[3]));Y=[Y[0]-W*t[0],Y[1]-W*t[1],Y[2]-W*t[2]]}else Y=L[12];let j=[.5*(s[0]+o[0]),.5*(s[1]+o[1]),.5*(s[2]+o[2])];if(!d)if(d=Straightness(M,t[13],t[14],b)<this.res2){let t=unit(this.differential(_[12],_[8],_[4],_[0]));j=[j[0]-W*t[0],j[1]-W*t[1],j[2]-W*t[2]]}else j=N[15];let k=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])];if(!c)if(c=Straightness(b,t[11],t[7],x)<this.res2){let t=unit(this.differential(B[15],B[14],B[13],B[12]));k=[k[0]-W*t[0],k[1]-W*t[1],k[2]-W*t[2]]}else k=_[3];let Z=[.5*(h[0]+n[0]),.5*(h[1]+n[1]),.5*(h[2]+n[2])];if(!m)if(m=Straightness(w,t[1],t[2],x)<this.res2){let t=unit(this.differential(L[3],L[7],L[11],L[15]));Z=[Z[0]-W*t[0],Z[1]-W*t[1],Z[2]-W*t[2]]}else Z=B[0];if(f){let t=Array(4),g=Array(4),w=Array(4),x=Array(4),M=Array(4);for(let e=0;e<4;++e)t[e]=.5*(f[e]+u[e]),g[e]=.5*(u[e]+p[e]),w[e]=.5*(p[e]+v[e]),x[e]=.5*(v[e]+f[e]),M[e]=.5*(t[e]+w[e]);let b=this.data.Vertex(Y,C,t),A=this.data.Vertex(j,F,g),S=this.data.Vertex(k,H,w),P=this.data.Vertex(Z,G,x),R=this.data.Vertex(V,U,M);this.Render(L,e,b,R,P,n,Y,V,Z,l,!1,!1,m,f,t,M,x),this.Render(N,b,i,A,R,Y,s,j,V,l,d,!1,!1,t,u,g,M),this.Render(_,R,A,a,S,V,j,o,k,!1,d,c,!1,M,g,p,w),this.Render(B,P,R,S,r,Z,V,k,h,!1,!1,c,m,x,M,w,v)}else{let t=this.vertex(Y,C),f=this.vertex(j,F),u=this.vertex(k,H),p=this.vertex(Z,G),v=this.vertex(V,U);this.Render(L,e,t,v,p,n,Y,V,Z,l,!1,!1,m),this.Render(N,t,i,f,v,Y,s,j,V,l,d,!1,!1),this.Render(_,v,f,a,u,V,j,o,k,!1,d,c,!1),this.Render(B,p,v,u,r,Z,V,k,h,!1,!1,c,m)}}}process3(t){if(1==wireframe)return this.curve(t,0,1,3,6),this.curve(t,6,7,8,9),void this.curve(t,9,5,2,0);let e=t[0],i=t[6],a=t[9],r=this.normal(a,t[5],t[2],e,t[1],t[3],i),n=this.normal(e,t[1],t[3],i,t[7],t[8],a),s=this.normal(i,t[7],t[8],a,t[5],t[2],e);if(this.color){let o=this.color[0],h=this!
 .color[1],l=this.color[2],d=this.data.Vertex(e,r,o),c=this.data.Vertex(i,n,h),m=this.data.Vertex(a,s,l);this.Render3(t,d,c,m,e,i,a,!1,!1,!1,o,h,l)}else{let o=this.vertex(e,r),h=this.vertex(i,n),l=this.vertex(a,s);this.Render3(t,o,h,l,e,i,a,!1,!1,!1)}this.data.indices.length>0&&this.append()}Render3(t,e,i,a,r,n,s,o,h,l,d,c,m){if(this.Distance3(t)<this.res2)this.offscreen([r,n,s])||(0==wireframe?(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(a)):(this.data.indices.push(e),this.data.indices.push(i),this.data.indices.push(i),this.data.indices.push(a),this.data.indices.push(a),this.data.indices.push(e)));else{if(this.offscreen(t))return;let f=t[0],u=t[1],p=t[2],v=t[3],g=t[4],w=t[5],x=t[6],M=t[7],b=t[8],A=t[9],S=[.5*(A[0]+w[0]),.5*(A[1]+w[1]),.5*(A[2]+w[2])],P=[.5*(A[0]+b[0]),.5*(A[1]+b[1]),.5*(A[2]+b[2])],R=[.5*(w[0]+p[0]),.5*(w[1]+p[1]),.5*(w[2]+p[2])],T=[.5*(b[0]+g[0]),.5*(b[1]+g[1]),.5*(b[2]+g[2])],y=[.5*(b[0]+M[0]),.5*(b[1]+M[1]),.5*(b[2]+M[2])],D=[.5*(p[0]+g[0]),.5*(p[1]+g[1]),.5*(p[2]+g[2])],I=[.5*(p[0]+f[0]),.5*(p[1]+f[1]),.5*(p[2]+f[2])],z=[.5*(g[0]+v[0]),.5*(g[1]+v[1]),.5*(g[2]+v[2])],E=[.5*(M[0]+x[0]),.5*(M[1]+x[1]),.5*(M[2]+x[2])],O=[.5*(f[0]+u[0]),.5*(f[1]+u[1]),.5*(f[2]+u[2])],L=[.5*(u[0]+v[0]),.5*(u[1]+v[1]),.5*(u[2]+v[2])],N=[.5*(v[0]+x[0]),.5*(v[1]+x[1]),.5*(v[2]+x[2])],_=[.5*(S[0]+R[0]),.5*(S[1]+R[1]),.5*(S[2]+R[2])],B=[.5*(P[0]+y[0]),.5*(P[1]+y[1]),.5*(P[2]+y[2])],V=[.5*(R[0]+I[0]),.5*(R[1]+I[1]),.5*(R[2]+I[2])],C=[.5*T[0]+.25*(g[0]+u[0]),.5*T[1]+.25*(g[1]+u[1]),.5*T[2]+.25*(g[2]+u[2])],F=[.5*(y[0]+E[0]),.5*(y[1]+E[1]),.5*(y[2]+E[2])],H=[.5*D[0]+.25*(g[0]+M[0]),.5*D[1]+.25*(g[1]+M[1]),.5*D[2]+.25*(g[2]+M[2])],G=[.25*(w[0]+g[0])+.5*z[0],.25*(w[1]+g[1])+.5*z[1],.25*(w[2]+g[2])+.5*z[2]],U=[.5*(O[0]+L[0]),.5*(O[1]+L[1]),.5*(O[2]+L[2])],W=[.5*(L[0]+N[0]),.5*(L[1]+N[1]),.5*(L[2]+N[2])],Y=[.5*(H[0]+U[0]),.5*(H[1]+U[1]),.5*(H[2]+U[2])],j=[.5*(H[0]+W[0]),.5*(H[1]+W[1]),.5*(H[2]+W[2])],k=[.5*(U[0]+W[0]),.5*(U[1]+W[1]),.5*(U[2]+W[2])],Z=[.5*(G[0]+F[0]),.5*(G[1]+F[1]),.5*(G[2]+F[2])!
 ],X=[.5*(B[0]+G[0]),.5*(B[1]+G[1]),.5*(B[2]+G[2])],q=[.5*(B[0]+F[0]),.5*(B[1]+F[1]),.5*(B[2]+F[2])],K=[.5*(_[0]+C[0]),.5*(_[1]+C[1]),.5*(_[2]+C[2])],$=[.5*(V[0]+C[0]),.5*(V[1]+C[1]),.5*(V[2]+C[2])],Q=[.5*(_[0]+V[0]),.5*(_[1]+V[1]),.5*(_[2]+V[2])],J=[f,O,I,U,[.5*(D[0]+O[0]),.5*(D[1]+O[1]),.5*(D[2]+O[2])],V,k,Y,$,Q],tt=[k,W,j,N,[.5*(z[0]+E[0]),.5*(z[1]+E[1]),.5*(z[2]+E[2])],Z,x,E,F,q],et=[Q,K,_,X,[.5*(S[0]+T[0]),.5*(S[1]+T[1]),.5*(S[2]+T[2])],S,q,B,P,A],it=[q,X,Z,K,[.25*(R[0]+y[0]+L[0]+g[0]),.25*(R[1]+y[1]+L[1]+g[1]),.25*(R[2]+y[2]+L[2]+g[2])],j,Q,$,Y,k],at=this.normal(k,j,Z,q,X,K,Q),rt=this.normal(q,X,K,Q,$,Y,k),nt=this.normal(Q,$,Y,k,j,Z,q),st=this.Epsilon,ot=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])];if(!o)if(o=Straightness(x,M,b,A)<this.res2){let t=unit(this.sumdifferential(it[0],it[2],it[5],it[9],it[1],it[3],it[6]));ot=[ot[0]-st*t[0],ot[1]-st*t[1],ot[2]-st*t[2]]}else ot=q;let ht=[.5*(s[0]+r[0]),.5*(s[1]+r[1]),.5*(s[2]+r[2])];if(!h)if(h=Straightness(f,p,w,A)<this.res2){let t=unit(this.sumdifferential(it[6],it[3],it[1],it[0],it[7],it[8],it[9]));ht=[ht[0]-st*t[0],ht[1]-st*t[1],ht[2]-st*t[2]]}else ht=Q;let lt=[.5*(r[0]+n[0]),.5*(r[1]+n[1]),.5*(r[2]+n[2])];if(!l)if(l=Straightness(f,u,v,x)<this.res2){let t=unit(this.sumdifferential(it[9],it[8],it[7],it[6],it[5],it[2],it[0]));lt=[lt[0]-st*t[0],lt[1]-st*t[1],lt[2]-st*t[2]]}else lt=k;if(d){let t=Array(4),f=Array(4),u=Array(4);for(let e=0;e<4;++e)t[e]=.5*(c[e]+m[e]),f[e]=.5*(m[e]+d[e]),u[e]=.5*(d[e]+c[e]);let p=this.data.Vertex(ot,at,t),v=this.data.Vertex(ht,rt,f),g=this.data.Vertex(lt,nt,u);this.Render3(J,e,g,v,r,lt,ht,!1,h,l,d,u,f),this.Render3(tt,g,i,p,lt,n,ot,o,!1,l,u,c,t),this.Render3(et,v,p,a,ht,ot,s,o,h,!1,f,t,m),this.Render3(it,p,v,g,ot,ht,lt,!1,!1,!1,t,f,u)}else{let t=this.vertex(ot,at),d=this.vertex(ht,rt),c=this.vertex(lt,nt);this.Render3(J,e,c,d,r,lt,ht,!1,h,l),this.Render3(tt,c,i,t,lt,n,ot,o,!1,l),this.Render3(et,d,t,a,ht,ot,s,o,h,!1),this.Render3(it,t,d,c,ot,ht,lt,!1,!1,!1)}}}Distance(t){let e=t[0],i=t[3],a=t[12],r=t[15],n=Flatness(e,a,i,r);n=Math.max!
 (Straightness(e,t[4],t[8],a)),n=Math.max(n,Straightness(t[1],t[5],t[9],t[13])),n=Math.max(n,Straightness(i,t[7],t[11],r)),n=Math.max(n,Straightness(t[2],t[6],t[10],t[14]));let s=Flatness(e,i,a,r);return s=Math.max(s,Straightness(e,t[1],t[2],i)),s=Math.max(s,Straightness(t[4],t[5],t[6],t[7])),s=Math.max(s,Straightness(t[8],t[9],t[10],t[11])),[n,s=Math.max(s,Straightness(a,t[13],t[14],r))]}Distance3(t){let e=t[0],i=t[4],a=t[6],r=t[9],n=abs2([(e[0]+a[0]+r[0])*third-i[0],(e[1]+a[1]+r[1])*third-i[1],(e[2]+a[2]+r[2])*third-i[2]]);return n=Math.max(n,Straightness(e,t[1],t[3],a)),n=Math.max(n,Straightness(e,t[2],t[5],r)),Math.max(n,Straightness(a,t[7],t[8],r))}differential(t,e,i,a){let r=[3*(e[0]-t[0]),3*(e[1]-t[1]),3*(e[2]-t[2])];return abs2(r)>this.epsilon?r:abs2(r=bezierPP(t,e,i))>this.epsilon?r:bezierPPP(t,e,i,a)}sumdifferential(t,e,i,a,r,n,s){let o=this.differential(t,e,i,a),h=this.differential(t,r,n,s);return[o[0]+h[0],o[1]+h[1],o[2]+h[2]]}normal(t,e,i,a,r,n,s){let o=3*(r[0]-a[0]),h=3*(r[1]-a[1]),l=3*(r[2]-a[2]),d=3*(i[0]-a[0]),c=3*(i[1]-a[1]),m=3*(i[2]-a[2]),f=[h*m-l*c,l*d-o*m,o*c-h*d];if(abs2(f)>this.epsilon)return f;let u=[d,c,m],p=[o,h,l],v=bezierPP(a,i,e),g=bezierPP(a,r,n),w=cross(g,u),x=cross(p,v);if(abs2(f=[w[0]+x[0],w[1]+x[1],w[2]+x[2]])>this.epsilon)return f;let M=bezierPPP(a,i,e,t),b=bezierPPP(a,r,n,s);w=cross(p,M),x=cross(b,u);let A=cross(g,v);return abs2(f=[w[0]+x[0]+A[0],w[1]+x[1]+A[1],w[2]+x[2]+A[2]])>this.epsilon?f:(w=cross(b,v),x=cross(g,M),abs2(f=[w[0]+x[0],w[1]+x[1],w[2]+x[2]])>this.epsilon?f:cross(b,M))}}class BezierCurve extends Geometry{constructor(t,e,i,a,r){super(),this.controlpoints=t,this.Min=a,this.Max=r,this.CenterIndex=e,this.MaterialIndex=i}setMaterialIndex(){this.setMaterial(material1Data,drawMaterial1)}processLine(t){let e=t[0],i=t[1];if(!this.offscreen([e,i])){let t=[0,0,1];this.data.indices.push(this.data.vertex(e,t)),this.data.indices.push(this.data.vertex(i,t)),this.append()}}process(t){if(2==t.length)return this.processLine(t);let e=t[0],i=t[1],a=t[2],r=t[3],n=this.normal(bezier!
 P(e,i),bezierPP(e,i,a)),s=this.normal(bezierP(a,r),bezierPP(r,a,i)),o=this.data.vertex(e,n),h=this.data.vertex(r,s);this.Render(t,o,h),this.data.indices.length>0&&this.append()}append(){material1Data.append(this.data)}Render(t,e,i){let a=t[0],r=t[1],n=t[2],s=t[3];if(Straightness(a,r,n,s)<this.res2)this.offscreen([a,s])||(this.data.indices.push(e),this.data.indices.push(i));else{if(this.offscreen(t))return;let o=[.5*(a[0]+r[0]),.5*(a[1]+r[1]),.5*(a[2]+r[2])],h=[.5*(r[0]+n[0]),.5*(r[1]+n[1]),.5*(r[2]+n[2])],l=[.5*(n[0]+s[0]),.5*(n[1]+s[1]),.5*(n[2]+s[2])],d=[.5*(o[0]+h[0]),.5*(o[1]+h[1]),.5*(o[2]+h[2])],c=[.5*(h[0]+l[0]),.5*(h[1]+l[1]),.5*(h[2]+l[2])],m=[.5*(d[0]+c[0]),.5*(d[1]+c[1]),.5*(d[2]+c[2])],f=[a,o,d,m],u=[m,c,l,s],p=this.normal(bezierPh(a,r,n,s),bezierPPh(a,r,n,s)),v=this.data.vertex(m,p);this.Render(f,e,v),this.Render(u,v,i)}}normal(t,e){let i=dot(t,t),a=dot(t,e);return[i*e[0]-a*t[0],i*e[1]-a*t[1],i*e[2]-a*t[2]]}}class Pixel extends Geometry{constructor(t,e,i,a,r){super(),this.controlpoint=t,this.width=e,this.CenterIndex=0,this.MaterialIndex=i,this.Min=a,this.Max=r}setMaterialIndex(){this.setMaterial(material0Data,drawMaterial0)}process(t){this.data.indices.push(this.data.vertex0(this.controlpoint,this.width)),this.append()}append(){material0Data.append(this.data)}}class Triangles extends Geometry{constructor(t,e,i){super(),this.CenterIndex=0,this.MaterialIndex=t,this.Min=e,this.Max=i,this.Positions=Positions,this.Normals=Normals,this.Colors=Colors,this.Indices=Indices,Positions=[],Normals=[],Colors=[],Indices=[],this.transparent=Materials[t].diffuse[3]<1}setMaterialIndex(){this.transparent?this.setMaterial(transparentData,drawTransparent):this.setMaterial(triangleData,drawTriangle)}process(t){materialIndex=this.Colors.length>0?-1-materialIndex:1+materialIndex;for(let t=0,e=this.Indices.length;t<e;++t){let e=this.Indices[t],i=e[0],a=this.Positions[i[0]],r=this.Positions[i[1]],n=this.Positions[i[2]];if(!this.offscreen([a,r,n])){let t=e.length>1?e[1]:i;if(t&&0!=t.length||(t=i),this.Colors.length>0){let s=e!
 .length>2?e[2]:i;s&&0!=s.length||(s=i);let o=this.Colors[s[0]],h=this.Colors[s[1]],l=this.Colors[s[2]];this.transparent|=o[3]+h[3]+l[3]<765,0==wireframe?(this.data.iVertex(i[0],a,this.Normals[t[0]],o),this.data.iVertex(i[1],r,this.Normals[t[1]],h),this.data.iVertex(i[2],n,this.Normals[t[2]],l)):(this.data.iVertex(i[0],a,this.Normals[t[0]],o),this.data.iVertex(i[1],r,this.Normals[t[1]],h),this.data.iVertex(i[1],r,this.Normals[t[1]],h),this.data.iVertex(i[2],n,this.Normals[t[2]],l),this.data.iVertex(i[2],n,this.Normals[t[2]],l),this.data.iVertex(i[0],a,this.Normals[t[0]],o))}else 0==wireframe?(this.data.iVertex(i[0],a,this.Normals[t[0]]),this.data.iVertex(i[1],r,this.Normals[t[1]]),this.data.iVertex(i[2],n,this.Normals[t[2]])):(this.data.iVertex(i[0],a,this.Normals[t[0]]),this.data.iVertex(i[1],r,this.Normals[t[1]]),this.data.iVertex(i[1],r,this.Normals[t[1]]),this.data.iVertex(i[2],n,this.Normals[t[2]]),this.data.iVertex(i[2],n,this.Normals[t[2]]),this.data.iVertex(i[0],a,this.Normals[t[0]]))}}this.data.nvertices=this.Positions.length,this.data.indices.length>0&&this.append()}append(){this.transparent?transparentData.append(this.data):triangleData.append(this.data)}}function home(){mat4.identity(rotMat),initProjection(),setProjection(),remesh=!0,draw()}let positionAttribute=0,normalAttribute=1,materialAttribute=2,colorAttribute=3,widthAttribute=4;function initShader(t=[]){let e=getShader(gl,vertex,gl.VERTEX_SHADER,t),i=getShader(gl,fragment,gl.FRAGMENT_SHADER,t),a=gl.createProgram();return gl.attachShader(a,e),gl.attachShader(a,i),gl.bindAttribLocation(a,positionAttribute,"position"),gl.bindAttribLocation(a,normalAttribute,"normal"),gl.bindAttribLocation(a,materialAttribute,"materialIndex"),gl.bindAttribLocation(a,colorAttribute,"color"),gl.bindAttribLocation(a,widthAttribute,"width"),gl.linkProgram(a),gl.getProgramParameter(a,gl.LINK_STATUS)||alert("Could not initialize shaders"),a}class Split3{constructor(t,e,i,a){this.m0=[.5*(t[0]+e[0]),.5*(t[1]+e[1]),.5*(t[2]+e[2])];let r=.5*(e[0]+i[0]),n=.5*(e[1]+i[1]),s=.5*!
 (e[2]+i[2]);this.m2=[.5*(i[0]+a[0]),.5*(i[1]+a[1]),.5*(i[2]+a[2])],this.m3=[.5*(this.m0[0]+r),.5*(this.m0[1]+n),.5*(this.m0[2]+s)],this.m4=[.5*(r+this.m2[0]),.5*(n+this.m2[1]),.5*(s+this.m2[2])],this.m5=[.5*(this.m3[0]+this.m4[0]),.5*(this.m3[1]+this.m4[1]),.5*(this.m3[2]+this.m4[2])]}}function unit(t){let e=1/(Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2])||1);return[t[0]*e,t[1]*e,t[2]*e]}function abs2(t){return t[0]*t[0]+t[1]*t[1]+t[2]*t[2]}function dot(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function cross(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function bezierP(t,e){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function bezierPP(t,e,i){return[3*(t[0]+i[0])-6*e[0],3*(t[1]+i[1])-6*e[1],3*(t[2]+i[2])-6*e[2]]}function bezierPPP(t,e,i,a){return[a[0]-t[0]+3*(e[0]-i[0]),a[1]-t[1]+3*(e[1]-i[1]),a[2]-t[2]+3*(e[2]-i[2])]}function bezierPh(t,e,i,a){return[i[0]+a[0]-t[0]-e[0],i[1]+a[1]-t[1]-e[1],i[2]+a[2]-t[2]-e[2]]}function bezierPPh(t,e,i,a){return[3*t[0]-5*e[0]+i[0]+a[0],3*t[1]-5*e[1]+i[1]+a[1],3*t[2]-5*e[2]+i[2]+a[2]]}function Straightness(t,e,i,a){let r=[third*(a[0]-t[0]),third*(a[1]-t[1]),third*(a[2]-t[2])];return Math.max(abs2([e[0]-r[0]-t[0],e[1]-r